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

Steve Lhomme robux4 at gmail.com
Thu Apr 6 12:35:50 EEST 2017

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).

Also as a more general case there can even be an issue with
selecting/configuring the display when ff_get_format() is called. For
example you don't know the frame packing format (3D, side by side,
etc). It's available in SEI_TYPE_FRAME_PACKING for H264 and HEVC.

Couldn't there be a way to query AVCodecContext for certain metadata ?
In the case of HEVC/H264 it would look in the calling associated
HEVCContext/H264Context. Which is the (upper) context that is calling
the ff_get_format().

> - Hendrik
> _______________________________________________
> libav-devel mailing list
> libav-devel at libav.org
> https://lists.libav.org/mailman/listinfo/libav-devel

More information about the ffmpeg-devel mailing list