---
 libavformat/avformat.h |    5 ++++-
 libavformat/utils.c    |   10 +++++++++-
 libavformat/version.h  |    2 +-
 3 files changed, 14 insertions(+), 3 deletions(-)

diff --git a/libavformat/avformat.h b/libavformat/avformat.h
index 71aed80..e65cb41 100644
--- a/libavformat/avformat.h
+++ b/libavformat/avformat.h
@@ -380,6 +380,7 @@ typedef struct AVFormatParameters {
 #define AVFMT_NOBINSEARCH   0x2000 /**< Format does not allow to fallback to 
binary search via read_timestamp */
 #define AVFMT_NOGENSEARCH   0x4000 /**< Format does not allow to fallback to 
generic search */
 #define AVFMT_NO_BYTE_SEEK  0x8000 /**< Format does not allow seeking by bytes 
*/
+#define AVFMT_ALLOW_FLUSH  0x10000 /**< Format allows flushing. If not set, 
the muxer will not receive a NULL packet in the write_packet function. */
 
 /**
  * @addtogroup lavf_encoding
@@ -1685,7 +1686,9 @@ attribute_deprecated int av_write_header(AVFormatContext 
*s);
  *
  * @param s media file handle
  * @param pkt The packet, which contains the stream_index, buf/buf_size,
-              dts/pts, ...
+ *            dts/pts, ...
+ *            This can be NULL, in order to flush data buffered within the
+ *            muxer.
  * @return < 0 on error, = 0 if OK, 1 if end of stream wanted
  */
 int av_write_frame(AVFormatContext *s, AVPacket *pkt);
diff --git a/libavformat/utils.c b/libavformat/utils.c
index 22ee13b..ffe82b1 100644
--- a/libavformat/utils.c
+++ b/libavformat/utils.c
@@ -3135,7 +3135,15 @@ static int compute_pkt_fields2(AVFormatContext *s, 
AVStream *st, AVPacket *pkt){
 
 int av_write_frame(AVFormatContext *s, AVPacket *pkt)
 {
-    int ret = compute_pkt_fields2(s, s->streams[pkt->stream_index], pkt);
+    int ret;
+
+    if (!pkt) {
+        if (s->oformat->flags & AVFMT_ALLOW_FLUSH)
+            return s->oformat->write_packet(s, pkt);
+        return 0;
+    }
+
+    ret = compute_pkt_fields2(s, s->streams[pkt->stream_index], pkt);
 
     if(ret<0 && !(s->oformat->flags & AVFMT_NOTIMESTAMPS))
         return ret;
diff --git a/libavformat/version.h b/libavformat/version.h
index 009a60b..898f4b1 100644
--- a/libavformat/version.h
+++ b/libavformat/version.h
@@ -30,7 +30,7 @@
 #include "libavutil/avutil.h"
 
 #define LIBAVFORMAT_VERSION_MAJOR 53
-#define LIBAVFORMAT_VERSION_MINOR 21
+#define LIBAVFORMAT_VERSION_MINOR 22
 #define LIBAVFORMAT_VERSION_MICRO  0
 
 #define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \
-- 
1.7.3.1

_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to