[FFmpeg-devel] [PATCH] ffmpeg: pass the correct AVCodecContext to av_parser_change()
h.leppkes at gmail.com
Fri Feb 23 09:35:13 EET 2018
On Fri, Feb 23, 2018 at 1:28 AM, James Almer <jamrial at gmail.com> wrote:
> 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
> as mentioned in the commit message, depending on the constant
> flag/capability set by the muxer.
Thats not what I mean, I know about that flag - and it controls AnnexB
vs MP4, but it does not explicitly say "remove inband headers as
If anything I think HEVC should follow the H264 example for consistency.
There are plenty cases where removing the in-band headers results in problems.
More information about the ffmpeg-devel