[FFmpeg-devel] [PATCH] ffmpeg: pass the correct AVCodecContext to av_parser_change()

James Almer jamrial at gmail.com
Fri Feb 23 02:28:23 EET 2018


On 2/22/2018 8:52 PM, Hendrik Leppkes wrote:
> On Fri, Feb 23, 2018 at 12:37 AM, James Almer <jamrial at gmail.com> wrote:
>> On 2/22/2018 8:34 PM, Hendrik Leppkes wrote:
>>> On Fri, Feb 23, 2018 at 12:20 AM, James Almer <jamrial at gmail.com> wrote:
>>>> av_parser_change() is effectively a noop if the avctx passed it to
>>>> doesn't have the global header or local header flags set, and
>>>> initializing a custom AVCodecContext as a copy of an
>>>> AVCodecParameters results in the flags and flags2 fields being zero.
>>>> Use instead the existing custom AVCodecContext with the required
>>>> flags set in ffmpeg_opt.c new_output_stream() among other places.
>>>>
>>>> The fate test change is the result of the hevc sps/pps/vps being
>>>> removed from frames when copying into a format that explicitly
>>>> states it uses global header.
>>>>
>>>
>>> Deleting inband headers is not necessarily a good idea, and likely
>>> also why its being skipped for h264.
>>
>> Well, I'd argue it is when the user and/or the output format request it.
>>
> 
> Unless there is an explicit option to request that, thats not exactly the case.
> 
> - Hendrik

The AVCodecContext global_header flag, which is what av_parser_change()
looks at. It's either set with an AVOption (With the CLI that's using
-flags +global_header) when encoding, or force enabled in

https://git.videolan.org/?p=ffmpeg.git;a=blob;f=fftools/ffmpeg_opt.c;h=997d53838108c2c3deb7fa3d3f395712738dad86;hb=HEAD#l1495

as mentioned in the commit message, depending on the constant
flag/capability set by the muxer.


More information about the ffmpeg-devel mailing list