mbox series

[FFmpeg-devel,v1,00/12] encoder AVCodecContext configuration side data

Message ID 20230331162205.428735-1-jeebjp@gmail.com
Headers show
Series encoder AVCodecContext configuration side data | expand

Message

Jan Ekström March 31, 2023, 4:21 p.m. UTC
Differences to v0:
1. side data set structure moved to public AVCodecContext itself
2. set extension helper renamed to av_extend_side_data_set
3. avutil/frame.c cleanup patch removed as it was applied to master

This patch set I've now been working for a while since I felt like it was weird
we couldn't pass through information such as static HDR metadata to encoders
from decoded input. This initial version adds the necessary framework, as well
as adds static HDR metadata support for libsvtav1, libx264 as well as libx265
wrappers.

An alternative to this would be to make encoders only properly initialize when
they receive the first AVFrame, but that seems to be a bigger, nastier change
than introducing an AVFrameSideDataSet in avctx as everything seems to
presume that extradata etc are available after opening the encoder.

Jan

Jan Ekström (12):
  avutil/frame: add AVFrameSideDataSet for passing sets of side data
  avutil/frame: split side data list wiping out to non-AVFrame function
  avutil/frame: add helper for clearing out side data sets
  avutil/frame: split side_data_from_buf to base and AVFrame func
  avutil/frame: add helper for adding side data to set
  avutil/frame: add helper for getting side data from set
  avutil/frame: add helper for extending a set of side data
  avcodec: add private side data set to AVCodecContext
  ffmpeg: pass first video AVFrame's side data to encoder
  avcodec/libsvtav1: add support for writing out CLL and MDCV
  avcodec/libx264: add support for writing out CLL and MDCV
  avcodec/libx265: add support for writing out CLL and MDCV

 fftools/ffmpeg.c       |  12 +++++
 libavcodec/avcodec.h   |   7 +++
 libavcodec/libsvtav1.c |  70 ++++++++++++++++++++++++++
 libavcodec/libx264.c   |  79 +++++++++++++++++++++++++++++
 libavcodec/libx265.c   |  82 ++++++++++++++++++++++++++++++
 libavcodec/options.c   |   1 +
 libavutil/frame.c      | 112 +++++++++++++++++++++++++++++++++--------
 libavutil/frame.h      |  49 ++++++++++++++++++
 8 files changed, 391 insertions(+), 21 deletions(-)