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.
master
jpark37 2022-07-31 19:53:05 -07:00 committed by Jim
parent ff88e0b8ac
commit a34439aecc
2 changed files with 16 additions and 4 deletions

View File

@ -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,

View File

@ -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,