[FFmpeg-devel] [PATCH 1/4] ffmpeg: re-copy codec contexts after encoding
Jon Toohill
jtoohill at google.com
Wed Sep 28 21:28:59 EEST 2016
This preserves changes to fields of AVCodecContext that get
updated during encoding, such as trailing_padding (which
may not be known until encoding is complete).
---
ffmpeg.c | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/ffmpeg.c b/ffmpeg.c
index df55a49..1e973f5 100644
--- a/ffmpeg.c
+++ b/ffmpeg.c
@@ -4243,6 +4243,21 @@ static int transcode(void)
term_exit();
+ /* update output codec contexts after encoding */
+ for (i = 0; i < nb_output_streams; i++) {
+ ost = output_streams[i];
+ if (ost->encoding_needed) {
+ ret = avcodec_copy_context(
+ output_files[ost->file_index]->ctx->streams[ost->index]->codec,
+ ost->enc_ctx);
+ if (ret < 0) {
+ av_log(ost, AV_LOG_ERROR, "Error copying final codec context: %s\n", av_err2str(ret));
+ if (exit_on_error)
+ exit_program(1);
+ }
+ }
+ }
+
/* write the trailer if needed and close file */
for (i = 0; i < nb_output_files; i++) {
os = output_files[i]->ctx;
--
2.8.0.rc3.226.g39d4020
More information about the ffmpeg-devel
mailing list