This article outlines the way we want to deal with format-specific metadata in Libav.
This vague term means additional side information that is important for interpreting the data correctly. Such metadata is supposed to be parsed at some point, and thus can be expected to have a fixed structure. Examples are e.g. the video rotation stored in mov, or replaygain information stored in various audio formats.
This is distinct from semantic metadata (what our current Metadata API is meant to be used for), which should describe the content in human-parsable terms (e.g. the author, title, etc.).
The questions to be resolved for dealing with such "metadata" in Libav are as follows.
The code, that actually makes use of this "metadata" to transform the data in some way, will typically live in lavfi.
- How should the "metadata" reach the appropriate filter?
- It is also reasonable to expect that some filters will want to generate such "metadata"? Another question then is how to transfer it from the filter to the caller.
It is conceivable that this "metadata" might be stored at the codec level.
- In what form should the decoders (or the parsers?) export it.?
In most cases the "metadata" is stored at the container level.
- How should the demuxers export it?
- How should the callers pass it to muxers?