From a34439aeccfe36232cea28ab71983f4c74548122 Mon Sep 17 00:00:00 2001 From: jpark37 Date: Sun, 31 Jul 2022 19:53:05 -0700 Subject: [PATCH] obs-ffmpeg: Make muxers respect ENABLE_HEVC The encoded_video_codecs field doesn't seem to be used though. Also update HDR luminance to match pattern. --- plugins/obs-ffmpeg/obs-ffmpeg-hls-mux.c | 4 ++++ plugins/obs-ffmpeg/obs-ffmpeg-mpegts.c | 16 ++++++++++++---- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/plugins/obs-ffmpeg/obs-ffmpeg-hls-mux.c b/plugins/obs-ffmpeg/obs-ffmpeg-hls-mux.c index c3dc98e50..61085c105 100644 --- a/plugins/obs-ffmpeg/obs-ffmpeg-hls-mux.c +++ b/plugins/obs-ffmpeg/obs-ffmpeg-hls-mux.c @@ -334,7 +334,11 @@ struct obs_output_info ffmpeg_hls_muxer = { .id = "ffmpeg_hls_muxer", .flags = OBS_OUTPUT_AV | OBS_OUTPUT_ENCODED | OBS_OUTPUT_MULTI_TRACK | OBS_OUTPUT_SERVICE, +#ifdef ENABLE_HEVC .encoded_video_codecs = "h264;hevc", +#else + .encoded_video_codecs = "h264", +#endif .encoded_audio_codecs = "aac", .get_name = ffmpeg_hls_mux_getname, .create = ffmpeg_hls_mux_create, diff --git a/plugins/obs-ffmpeg/obs-ffmpeg-mpegts.c b/plugins/obs-ffmpeg/obs-ffmpeg-mpegts.c index ad8f32b82..e23c68b8b 100644 --- a/plugins/obs-ffmpeg/obs-ffmpeg-mpegts.c +++ b/plugins/obs-ffmpeg/obs-ffmpeg-mpegts.c @@ -156,8 +156,13 @@ static bool create_video_stream(struct ffmpeg_output *stream, } if (!new_stream(data, &data->video, name)) return false; - if ((data->config.color_trc == AVCOL_TRC_SMPTE2084) || - (data->config.color_trc == AVCOL_TRC_ARIB_STD_B67)) { + const bool pq = data->config.color_trc == AVCOL_TRC_SMPTE2084; + const bool hlg = data->config.color_trc == AVCOL_TRC_ARIB_STD_B67; + if (pq || hlg) { + const int hdr_nominal_peak_level = + pq ? (int)obs_get_video_hdr_nominal_peak_level() + : (hlg ? 1000 : 0); + AVMasteringDisplayMetadata *const mastering = av_mastering_display_metadata_alloc(); mastering->display_primaries[0][0] = av_make_q(17, 25); @@ -169,8 +174,7 @@ static bool create_video_stream(struct ffmpeg_output *stream, 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, @@ -1226,7 +1230,11 @@ struct obs_output_info ffmpeg_mpegts_muxer = { .id = "ffmpeg_mpegts_muxer", .flags = OBS_OUTPUT_AV | OBS_OUTPUT_ENCODED | OBS_OUTPUT_MULTI_TRACK | OBS_OUTPUT_SERVICE, +#ifdef ENABLE_HEVC .encoded_video_codecs = "h264;hevc;av1", +#else + .encoded_video_codecs = "h264;av1", +#endif .encoded_audio_codecs = "aac", .get_name = ffmpeg_mpegts_getname, .create = ffmpeg_mpegts_create,