plugins: Apply multitrack dynamic bitrate flag

Enable the `OBS_ENCODER_CAP_MULTITRACK_DYN_BITRATE` capability on
the encoders that support it.
This commit is contained in:
Alex Luccisano
2025-11-03 10:54:05 -05:00
committed by Ryan Foster
parent edbe74b2b5
commit 0943ea2cf6
4 changed files with 37 additions and 22 deletions
+1 -1
View File
@@ -1447,7 +1447,7 @@ void obs_module_post_load(void)
.get_defaults2 = vt_defaults,
.get_extra_data = vt_extra_data,
.free_type_data = vt_free_type_data,
.caps = OBS_ENCODER_CAP_DYN_BITRATE,
.caps = OBS_ENCODER_CAP_DYN_BITRATE | OBS_ENCODER_CAP_MULTITRACK_DYN_BITRATE,
};
da_init(vt_prores_hardware_encoder_list);
+12 -6
View File
@@ -1758,12 +1758,14 @@ static void register_avc()
amf_encoder_info.get_defaults = amf_avc_defaults;
amf_encoder_info.get_properties = amf_avc_properties;
amf_encoder_info.get_extra_data = amf_extra_data;
amf_encoder_info.caps = OBS_ENCODER_CAP_PASS_TEXTURE | OBS_ENCODER_CAP_DYN_BITRATE | OBS_ENCODER_CAP_ROI;
amf_encoder_info.caps = OBS_ENCODER_CAP_PASS_TEXTURE | OBS_ENCODER_CAP_DYN_BITRATE |
OBS_ENCODER_CAP_MULTITRACK_DYN_BITRATE | OBS_ENCODER_CAP_ROI;
obs_register_encoder(&amf_encoder_info);
amf_encoder_info.id = "h264_fallback_amf";
amf_encoder_info.caps = OBS_ENCODER_CAP_INTERNAL | OBS_ENCODER_CAP_DYN_BITRATE | OBS_ENCODER_CAP_ROI;
amf_encoder_info.caps = OBS_ENCODER_CAP_INTERNAL | OBS_ENCODER_CAP_DYN_BITRATE |
OBS_ENCODER_CAP_MULTITRACK_DYN_BITRATE | OBS_ENCODER_CAP_ROI;
amf_encoder_info.encode_texture = nullptr;
amf_encoder_info.create = amf_avc_create_fallback;
amf_encoder_info.encode = amf_encode_fallback;
@@ -2160,12 +2162,14 @@ static void register_hevc()
amf_encoder_info.get_defaults = amf_hevc_defaults;
amf_encoder_info.get_properties = amf_hevc_properties;
amf_encoder_info.get_extra_data = amf_extra_data;
amf_encoder_info.caps = OBS_ENCODER_CAP_PASS_TEXTURE | OBS_ENCODER_CAP_DYN_BITRATE | OBS_ENCODER_CAP_ROI;
amf_encoder_info.caps = OBS_ENCODER_CAP_PASS_TEXTURE | OBS_ENCODER_CAP_DYN_BITRATE |
OBS_ENCODER_CAP_MULTITRACK_DYN_BITRATE | OBS_ENCODER_CAP_ROI;
obs_register_encoder(&amf_encoder_info);
amf_encoder_info.id = "h265_fallback_amf";
amf_encoder_info.caps = OBS_ENCODER_CAP_INTERNAL | OBS_ENCODER_CAP_DYN_BITRATE | OBS_ENCODER_CAP_ROI;
amf_encoder_info.caps = OBS_ENCODER_CAP_INTERNAL | OBS_ENCODER_CAP_DYN_BITRATE |
OBS_ENCODER_CAP_MULTITRACK_DYN_BITRATE | OBS_ENCODER_CAP_ROI;
amf_encoder_info.encode_texture = nullptr;
amf_encoder_info.create = amf_hevc_create_fallback;
amf_encoder_info.encode = amf_encode_fallback;
@@ -2576,12 +2580,14 @@ static void register_av1()
amf_encoder_info.get_defaults = amf_av1_defaults;
amf_encoder_info.get_properties = amf_av1_properties;
amf_encoder_info.get_extra_data = amf_extra_data;
amf_encoder_info.caps = OBS_ENCODER_CAP_PASS_TEXTURE | OBS_ENCODER_CAP_DYN_BITRATE | OBS_ENCODER_CAP_ROI;
amf_encoder_info.caps = OBS_ENCODER_CAP_PASS_TEXTURE | OBS_ENCODER_CAP_DYN_BITRATE |
OBS_ENCODER_CAP_MULTITRACK_DYN_BITRATE | OBS_ENCODER_CAP_ROI;
obs_register_encoder(&amf_encoder_info);
amf_encoder_info.id = "av1_fallback_amf";
amf_encoder_info.caps = OBS_ENCODER_CAP_INTERNAL | OBS_ENCODER_CAP_DYN_BITRATE | OBS_ENCODER_CAP_ROI;
amf_encoder_info.caps = OBS_ENCODER_CAP_INTERNAL | OBS_ENCODER_CAP_DYN_BITRATE |
OBS_ENCODER_CAP_MULTITRACK_DYN_BITRATE | OBS_ENCODER_CAP_ROI;
amf_encoder_info.encode_texture = nullptr;
amf_encoder_info.create = amf_av1_create_fallback;
amf_encoder_info.encode = amf_encode_fallback;
+12 -9
View File
@@ -299,8 +299,8 @@ struct obs_encoder_info compat_h264_nvenc_info = {
.id = "jim_nvenc",
.codec = "h264",
.type = OBS_ENCODER_VIDEO,
.caps = OBS_ENCODER_CAP_PASS_TEXTURE | OBS_ENCODER_CAP_DYN_BITRATE | OBS_ENCODER_CAP_ROI |
OBS_ENCODER_CAP_DEPRECATED,
.caps = OBS_ENCODER_CAP_PASS_TEXTURE | OBS_ENCODER_CAP_DYN_BITRATE | OBS_ENCODER_CAP_MULTITRACK_DYN_BITRATE |
OBS_ENCODER_CAP_ROI | OBS_ENCODER_CAP_DEPRECATED,
.get_name = h264_nvenc_get_name,
.create = h264_nvenc_create,
.destroy = fake_nvenc_destroy,
@@ -314,8 +314,8 @@ struct obs_encoder_info compat_hevc_nvenc_info = {
.id = "jim_hevc_nvenc",
.codec = "hevc",
.type = OBS_ENCODER_VIDEO,
.caps = OBS_ENCODER_CAP_PASS_TEXTURE | OBS_ENCODER_CAP_DYN_BITRATE | OBS_ENCODER_CAP_ROI |
OBS_ENCODER_CAP_DEPRECATED,
.caps = OBS_ENCODER_CAP_PASS_TEXTURE | OBS_ENCODER_CAP_DYN_BITRATE | OBS_ENCODER_CAP_MULTITRACK_DYN_BITRATE |
OBS_ENCODER_CAP_ROI | OBS_ENCODER_CAP_DEPRECATED,
.get_name = hevc_nvenc_get_name,
.create = hevc_nvenc_create,
.destroy = fake_nvenc_destroy,
@@ -329,8 +329,8 @@ struct obs_encoder_info compat_av1_nvenc_info = {
.id = "jim_av1_nvenc",
.codec = "av1",
.type = OBS_ENCODER_VIDEO,
.caps = OBS_ENCODER_CAP_PASS_TEXTURE | OBS_ENCODER_CAP_DYN_BITRATE | OBS_ENCODER_CAP_ROI |
OBS_ENCODER_CAP_DEPRECATED,
.caps = OBS_ENCODER_CAP_PASS_TEXTURE | OBS_ENCODER_CAP_DYN_BITRATE | OBS_ENCODER_CAP_MULTITRACK_DYN_BITRATE |
OBS_ENCODER_CAP_ROI | OBS_ENCODER_CAP_DEPRECATED,
.get_name = av1_nvenc_get_name,
.create = av1_nvenc_create,
.destroy = fake_nvenc_destroy,
@@ -343,7 +343,8 @@ struct obs_encoder_info compat_h264_nvenc_soft_info = {
.id = "obs_nvenc_h264_cuda",
.codec = "h264",
.type = OBS_ENCODER_VIDEO,
.caps = OBS_ENCODER_CAP_DYN_BITRATE | OBS_ENCODER_CAP_ROI | OBS_ENCODER_CAP_DEPRECATED,
.caps = OBS_ENCODER_CAP_DYN_BITRATE | OBS_ENCODER_CAP_MULTITRACK_DYN_BITRATE | OBS_ENCODER_CAP_ROI |
OBS_ENCODER_CAP_DEPRECATED,
.get_name = h264_nvenc_get_name,
.create = h264_nvenc_soft_create,
.destroy = fake_nvenc_destroy,
@@ -357,7 +358,8 @@ struct obs_encoder_info compat_hevc_nvenc_soft_info = {
.id = "obs_nvenc_hevc_cuda",
.codec = "hevc",
.type = OBS_ENCODER_VIDEO,
.caps = OBS_ENCODER_CAP_DYN_BITRATE | OBS_ENCODER_CAP_ROI | OBS_ENCODER_CAP_DEPRECATED,
.caps = OBS_ENCODER_CAP_DYN_BITRATE | OBS_ENCODER_CAP_MULTITRACK_DYN_BITRATE | OBS_ENCODER_CAP_ROI |
OBS_ENCODER_CAP_DEPRECATED,
.get_name = hevc_nvenc_get_name,
.create = hevc_nvenc_soft_create,
.destroy = fake_nvenc_destroy,
@@ -371,7 +373,8 @@ struct obs_encoder_info compat_av1_nvenc_soft_info = {
.id = "obs_nvenc_av1_cuda",
.codec = "av1",
.type = OBS_ENCODER_VIDEO,
.caps = OBS_ENCODER_CAP_DYN_BITRATE | OBS_ENCODER_CAP_ROI | OBS_ENCODER_CAP_DEPRECATED,
.caps = OBS_ENCODER_CAP_DYN_BITRATE | OBS_ENCODER_CAP_MULTITRACK_DYN_BITRATE | OBS_ENCODER_CAP_ROI |
OBS_ENCODER_CAP_DEPRECATED,
.get_name = av1_nvenc_get_name,
.create = av1_nvenc_soft_create,
.destroy = fake_nvenc_destroy,
+12 -6
View File
@@ -1395,7 +1395,8 @@ struct obs_encoder_info h264_nvenc_info = {
.id = "obs_nvenc_h264_tex",
.codec = "h264",
.type = OBS_ENCODER_VIDEO,
.caps = OBS_ENCODER_CAP_PASS_TEXTURE | OBS_ENCODER_CAP_DYN_BITRATE | OBS_ENCODER_CAP_ROI,
.caps = OBS_ENCODER_CAP_PASS_TEXTURE | OBS_ENCODER_CAP_DYN_BITRATE | OBS_ENCODER_CAP_MULTITRACK_DYN_BITRATE |
OBS_ENCODER_CAP_ROI,
.get_name = h264_nvenc_get_name,
.create = h264_nvenc_create,
.destroy = nvenc_destroy,
@@ -1416,7 +1417,8 @@ struct obs_encoder_info hevc_nvenc_info = {
.id = "obs_nvenc_hevc_tex",
.codec = "hevc",
.type = OBS_ENCODER_VIDEO,
.caps = OBS_ENCODER_CAP_PASS_TEXTURE | OBS_ENCODER_CAP_DYN_BITRATE | OBS_ENCODER_CAP_ROI,
.caps = OBS_ENCODER_CAP_PASS_TEXTURE | OBS_ENCODER_CAP_DYN_BITRATE | OBS_ENCODER_CAP_MULTITRACK_DYN_BITRATE |
OBS_ENCODER_CAP_ROI,
.get_name = hevc_nvenc_get_name,
.create = hevc_nvenc_create,
.destroy = nvenc_destroy,
@@ -1437,7 +1439,8 @@ struct obs_encoder_info av1_nvenc_info = {
.id = "obs_nvenc_av1_tex",
.codec = "av1",
.type = OBS_ENCODER_VIDEO,
.caps = OBS_ENCODER_CAP_PASS_TEXTURE | OBS_ENCODER_CAP_DYN_BITRATE | OBS_ENCODER_CAP_ROI,
.caps = OBS_ENCODER_CAP_PASS_TEXTURE | OBS_ENCODER_CAP_DYN_BITRATE | OBS_ENCODER_CAP_MULTITRACK_DYN_BITRATE |
OBS_ENCODER_CAP_ROI,
.get_name = av1_nvenc_get_name,
.create = av1_nvenc_create,
.destroy = nvenc_destroy,
@@ -1456,7 +1459,8 @@ struct obs_encoder_info h264_nvenc_soft_info = {
.id = "obs_nvenc_h264_soft",
.codec = "h264",
.type = OBS_ENCODER_VIDEO,
.caps = OBS_ENCODER_CAP_DYN_BITRATE | OBS_ENCODER_CAP_ROI | OBS_ENCODER_CAP_INTERNAL,
.caps = OBS_ENCODER_CAP_DYN_BITRATE | OBS_ENCODER_CAP_MULTITRACK_DYN_BITRATE | OBS_ENCODER_CAP_ROI |
OBS_ENCODER_CAP_INTERNAL,
.get_name = h264_nvenc_soft_get_name,
.create = h264_nvenc_soft_create,
.destroy = nvenc_destroy,
@@ -1474,7 +1478,8 @@ struct obs_encoder_info hevc_nvenc_soft_info = {
.id = "obs_nvenc_hevc_soft",
.codec = "hevc",
.type = OBS_ENCODER_VIDEO,
.caps = OBS_ENCODER_CAP_DYN_BITRATE | OBS_ENCODER_CAP_ROI | OBS_ENCODER_CAP_INTERNAL,
.caps = OBS_ENCODER_CAP_DYN_BITRATE | OBS_ENCODER_CAP_MULTITRACK_DYN_BITRATE | OBS_ENCODER_CAP_ROI |
OBS_ENCODER_CAP_INTERNAL,
.get_name = hevc_nvenc_soft_get_name,
.create = hevc_nvenc_soft_create,
.destroy = nvenc_destroy,
@@ -1492,7 +1497,8 @@ struct obs_encoder_info av1_nvenc_soft_info = {
.id = "obs_nvenc_av1_soft",
.codec = "av1",
.type = OBS_ENCODER_VIDEO,
.caps = OBS_ENCODER_CAP_DYN_BITRATE | OBS_ENCODER_CAP_ROI | OBS_ENCODER_CAP_INTERNAL,
.caps = OBS_ENCODER_CAP_DYN_BITRATE | OBS_ENCODER_CAP_MULTITRACK_DYN_BITRATE | OBS_ENCODER_CAP_ROI |
OBS_ENCODER_CAP_INTERNAL,
.get_name = av1_nvenc_soft_get_name,
.create = av1_nvenc_soft_create,
.destroy = nvenc_destroy,