[FFmpeg-devel] [PATCH] ffmpeg: pass the correct AVCodecContext to av_parser_change()
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
as mentioned in the commit message, depending on the constant
flag/capability set by the muxer.
More information about the ffmpeg-devel