From 7ce8cf8477c75325ca1ff83f98182221de89aec7 Mon Sep 17 00:00:00 2001 From: jpark37 Date: Thu, 28 Apr 2022 21:31:05 -0700 Subject: [PATCH] libobs/media-io: Preserve video side data on remux --- libobs/media-io/media-remux.c | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/libobs/media-io/media-remux.c b/libobs/media-io/media-remux.c index 673aff3d4..2b39a74e2 100644 --- a/libobs/media-io/media-remux.c +++ b/libobs/media-io/media-remux.c @@ -96,6 +96,41 @@ static inline bool init_output(media_remux_job_t job, const char *out_filename) return false; } +#if FF_API_BUFFER_SIZE_T + int content_size; +#else + size_t content_size; +#endif + const uint8_t *const content_src = av_stream_get_side_data( + in_stream, AV_PKT_DATA_CONTENT_LIGHT_LEVEL, + &content_size); + if (content_src) { + uint8_t *const content_dst = av_stream_new_side_data( + out_stream, AV_PKT_DATA_CONTENT_LIGHT_LEVEL, + content_size); + if (content_dst) + memcpy(content_dst, content_src, content_size); + } + +#if FF_API_BUFFER_SIZE_T + int mastering_size; +#else + size_t mastering_size; +#endif + const uint8_t *const mastering_src = av_stream_get_side_data( + in_stream, AV_PKT_DATA_MASTERING_DISPLAY_METADATA, + &mastering_size); + if (mastering_src) { + uint8_t *const mastering_dst = av_stream_new_side_data( + out_stream, + AV_PKT_DATA_MASTERING_DISPLAY_METADATA, + mastering_size); + if (mastering_dst) { + memcpy(mastering_dst, mastering_src, + mastering_size); + } + } + #if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(57, 48, 101) ret = avcodec_parameters_copy(out_stream->codecpar, in_stream->codecpar);