[FFmpeg-devel] [PATCH 2/2] ffmpeg: stop using AVStream.codec on stream copy

James Almer jamrial at gmail.com
Tue Sep 27 01:17:20 EEST 2016

On 9/26/2016 6:38 PM, Michael Niedermayer wrote:
> On Mon, Sep 26, 2016 at 02:39:13PM -0300, James Almer wrote:
>> This commit is based on commit 35c8580 from Anton Khirnov <anton at khirnov.net>
>> which was skipped in b8945c4.
>> The avcodec_copy_context() call in the encode path is left in place for now
>> as AVStream.codec is apparently still required even after porting ffmpeg to
>> the new bsf API.
>> Signed-off-by: James Almer <jamrial at gmail.com>
>> ---
>>  ffmpeg.c     | 25 ++++++++++++-------------
>>  ffmpeg.h     |  1 +
>>  ffmpeg_opt.c | 12 +-----------
>>  3 files changed, 14 insertions(+), 24 deletions(-)
> This breaks
> ./ffmpeg -i matrixbench_mpeg2.mpg -flags +bitexact -t 1 -codec copy -f framecrc -
> compared to the case before the patch and without codec copy
> "#software: Lavf57.50.100"
> is output

AVCodecContext flag bitexact is (for now) converted into AVFormatContext flag
bitexact, and by removing the chunk in ffmpeg_opt.c that sets the former in
st->codec, this doesn't happen anymore.

This is from init_muxer() libavformat/mux.c, and it's scheduled for removal
with FF_API_LAVF_BITEXACT and ultimately with FF_API_LAVF_AVCTX, so i guess
i'll leave the chunk in question in place and just wrap it up with a check
for the latter define. Is that ok?

More information about the ffmpeg-devel mailing list