This copies the behavior of avcodec_parameters_from_context().

Signed-off-by: James Almer <jamr...@gmail.com>
---
 libavcodec/codec_par.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/libavcodec/codec_par.c b/libavcodec/codec_par.c
index 790ea01d10..d178b02ff1 100644
--- a/libavcodec/codec_par.c
+++ b/libavcodec/codec_par.c
@@ -205,6 +205,11 @@ int avcodec_parameters_to_context(AVCodecContext *codec,
 {
     int ret;
 
+    av_channel_layout_uninit(&codec->ch_layout);
+    av_packet_side_data_free(&codec->coded_side_data, 
&codec->nb_coded_side_data);
+    av_freep(&codec->extradata);
+    codec->extradata_size = 0;
+
     codec->codec_type = par->codec_type;
     codec->codec_id   = par->codec_id;
     codec->codec_tag  = par->codec_tag;
@@ -249,8 +254,6 @@ int avcodec_parameters_to_context(AVCodecContext *codec,
         break;
     }
 
-    av_freep(&codec->extradata);
-    codec->extradata_size = 0;
     if (par->extradata) {
         codec->extradata = av_mallocz(par->extradata_size + 
AV_INPUT_BUFFER_PADDING_SIZE);
         if (!codec->extradata)
@@ -259,7 +262,6 @@ int avcodec_parameters_to_context(AVCodecContext *codec,
         codec->extradata_size = par->extradata_size;
     }
 
-    av_packet_side_data_free(&codec->coded_side_data, 
&codec->nb_coded_side_data);
     ret = codec_parameters_copy_side_data(&codec->coded_side_data, 
&codec->nb_coded_side_data,
                                           par->coded_side_data, 
par->nb_coded_side_data);
     if (ret < 0)
-- 
2.46.2

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

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to