[FFmpeg-devel] [libav-devel] ff_thread_get_format and metadata

Hendrik Leppkes h.leppkes at gmail.com
Thu Apr 6 14:08:18 EEST 2017


On Thu, Apr 6, 2017 at 11:35 AM, Steve Lhomme <robux4 at gmail.com> wrote:
> On Thu, Apr 6, 2017 at 11:08 AM, Hendrik Leppkes <h.leppkes at gmail.com> wrote:
>> On Thu, Apr 6, 2017 at 11:01 AM, Steve Lhomme <robux4 at gmail.com> wrote:
>>> Hi,
>>>
>>> As I am progressing in proper HDR10 support in VLC, I am facing an
>>> issue. The mastering (and lighting pending patch) metadata are set on
>>> the AVFrame but not available to the ff_get_format() receiver.
>>>
>>> That means when we configure our vout and decoder we don't know if
>>> it's going to have HDR metadata or not.
>>>
>>> Could we move the mastering (and lighting) metadata on the
>>> AVCodecContext ? Or provide the metadata on the ff_get_format() call ?
>>>
>>> I CC'ed libav as they have opinions on possible API changes, even
>>> though there is no mastering metadata support in there yet.
>>
>>
>> I'm against polluting AVCodecContext with more random fields, and
>> get_format is fixed API/ABI, we can't change that very easily.
>
> I understand, that's why I prefer asking before trying things out.
>
>> In general, this is per-frame metadata, which can appear or change
>> with any given frame, without get_format being invoked again. You
>> should probably just be able to have your output react to that once it
>> receives it.
>
> This is already the case. I copy the relevant metadata of the AVFrame
> in the picture we are going to display. But the underlying stream
> format has no idea that it has HDR metadata. We can't tell the user
> what kind of metadata the stream has (think of ffprobe-like info).
>

So you just want this for probing, not even for actual playback?
The users will get over it then, I'm sure. Otherwise you could just
decode one frame and retrieve the metadata - thats the best way to
retrieve full accurate information anyway.

- Hendrik


More information about the ffmpeg-devel mailing list