Differences to v2: 1. rebased on top of current master 2. addition of external encoder tests as the attached side data can now be parsed from all formats after the movement of side data from being HEVC specific to the common h2645 SEI parsing. 3. Various miscellaneous fixups/updates.
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. Note: Any opinions on whether FFCodec or AVCodec should have handled_side_data list, so that if format specific generic logic is added, it could be checked whether the codec itself handles this side data? This could also be utilized to list handled side data from f.ex. `ffmpeg -h encoder=libsvtav1`. 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 uninitializing 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 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_enc.c | 11 +++ libavcodec/avcodec.h | 7 ++ libavcodec/libsvtav1.c | 70 ++++++++++++++++ libavcodec/libx264.c | 79 ++++++++++++++++++ libavcodec/libx265.c | 82 +++++++++++++++++++ libavcodec/options.c | 1 + libavutil/Makefile | 1 + libavutil/frame.c | 138 +++++++++++++++++++++++++++----- libavutil/frame.h | 62 ++++++++++++++ libavutil/tests/side_data_set.c | 71 ++++++++++++++++ tests/fate/enc_external.mak | 15 ++++ tests/fate/libavutil.mak | 4 + tests/ref/fate/libsvtav1-hdr10 | 14 ++++ tests/ref/fate/libx264-hdr10 | 15 ++++ tests/ref/fate/libx265-hdr10 | 16 ++++ tests/ref/fate/side_data_set | 7 ++ 16 files changed, 571 insertions(+), 22 deletions(-) create mode 100644 libavutil/tests/side_data_set.c create mode 100644 tests/ref/fate/libsvtav1-hdr10 create mode 100644 tests/ref/fate/libx264-hdr10 create mode 100644 tests/ref/fate/libx265-hdr10 create mode 100644 tests/ref/fate/side_data_set -- 2.41.0 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".