|
@@ -225,6 +225,18 @@ static bool create_video_stream(struct ffmpeg_data *data)
|
|
|
|
|
|
if ((data->config.color_trc == AVCOL_TRC_SMPTE2084) ||
|
|
|
(data->config.color_trc == AVCOL_TRC_ARIB_STD_B67)) {
|
|
|
+ const int hdr_nominal_peak_level =
|
|
|
+ (int)obs_get_video_hdr_nominal_peak_level();
|
|
|
+
|
|
|
+ size_t content_size;
|
|
|
+ AVContentLightMetadata *const content =
|
|
|
+ av_content_light_metadata_alloc(&content_size);
|
|
|
+ content->MaxCLL = hdr_nominal_peak_level;
|
|
|
+ content->MaxFALL = hdr_nominal_peak_level;
|
|
|
+ av_stream_add_side_data(data->video,
|
|
|
+ AV_PKT_DATA_CONTENT_LIGHT_LEVEL,
|
|
|
+ (uint8_t *)content, content_size);
|
|
|
+
|
|
|
AVMasteringDisplayMetadata *const mastering =
|
|
|
av_mastering_display_metadata_alloc();
|
|
|
mastering->display_primaries[0][0] = av_make_q(17, 25);
|
|
@@ -236,8 +248,7 @@ static bool create_video_stream(struct ffmpeg_data *data)
|
|
|
mastering->white_point[0] = av_make_q(3127, 10000);
|
|
|
mastering->white_point[1] = av_make_q(329, 1000);
|
|
|
mastering->min_luminance = av_make_q(0, 1);
|
|
|
- mastering->max_luminance = av_make_q(
|
|
|
- (int)obs_get_video_hdr_nominal_peak_level(), 1);
|
|
|
+ mastering->max_luminance = av_make_q(hdr_nominal_peak_level, 1);
|
|
|
mastering->has_primaries = 1;
|
|
|
mastering->has_luminance = 1;
|
|
|
av_stream_add_side_data(data->video,
|