diff mbox

[FFmpeg-devel,1/4] ffmpeg: re-copy codec contexts after encoding

Message ID 1475087343-29745-2-git-send-email-jtoohill@google.com
State Withdrawn
Headers show

Commit Message

Jon Toohill Sept. 28, 2016, 6:28 p.m. UTC
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(+)

Comments

Jon Toohill Sept. 28, 2016, 6:49 p.m. UTC | #1
This was sent in error, please disregard.


Jon Toohill |  Google Play Music |  jtoohill@google.com |  (650) 215-0770

On Wed, Sep 28, 2016 at 11:28 AM, Jon Toohill <jtoohill@google.com> wrote:

> 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
>
>
diff mbox

Patch

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;