This is needed for encoders which store a final sample count or checksum in 
extradata

alternatively every encoder as well as muxer can implement 
AV_PKT_DATA_NEW_EXTRADATA support
to update the extradata at the end.

Signed-off-by: Michael Niedermayer <mich...@niedermayer.cc>
---
 ffmpeg.c | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/ffmpeg.c b/ffmpeg.c
index bae515d..9d972d0 100644
--- a/ffmpeg.c
+++ b/ffmpeg.c
@@ -1772,6 +1772,23 @@ static void flush_encoders(void)
             if (stop_encoding)
                 break;
         }
+        if (ost->enc_ctx->extradata_size) {
+            void *ptr  = av_mallocz(ost->enc_ctx->extradata_size + 
AV_INPUT_BUFFER_PADDING_SIZE);
+            void *ptr2 = av_mallocz(ost->enc_ctx->extradata_size + 
AV_INPUT_BUFFER_PADDING_SIZE);
+            if (ptr && ptr2) {
+                av_free(ost->st->codec->extradata);
+                av_free(ost->st->codecpar->extradata);
+                ost->st->codec->extradata    = ptr;
+                ost->st->codecpar->extradata = ptr2;
+                memcpy(ost->st->codec->extradata   , ost->enc_ctx->extradata, 
ost->enc_ctx->extradata_size);
+                memcpy(ost->st->codecpar->extradata, ost->enc_ctx->extradata, 
ost->enc_ctx->extradata_size);
+                ost->st->codec   ->extradata_size = 
ost->enc_ctx->extradata_size;
+                ost->st->codecpar->extradata_size = 
ost->enc_ctx->extradata_size;
+            } else {
+                av_free(ptr);
+                av_free(ptr2);
+            }
+        }
     }
 }
 
-- 
2.9.3

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel

Reply via email to