mirror of
https://github.com/obsproject/obs-studio.git
synced 2026-08-30 17:58:37 +08:00
aja: Filter 6G/12G SDI Transport depending device/plugin type
This commit is contained in:
committed by
Colin Edwards
parent
d2515170e1
commit
a4c0996d59
@@ -203,10 +203,23 @@ void populate_pixel_format_list(NTV2DeviceID deviceID, obs_property_t *list)
|
||||
}
|
||||
}
|
||||
|
||||
void populate_sdi_transport_list(obs_property_t *list, IOSelection io)
|
||||
void populate_sdi_transport_list(obs_property_t *list, IOSelection io,
|
||||
NTV2DeviceID deviceID, bool capture)
|
||||
{
|
||||
if (capture) {
|
||||
obs_property_list_add_int(list, obs_module_text("Auto"),
|
||||
kAutoDetect);
|
||||
}
|
||||
for (int i = 0; i < (int)SDITransport::Unknown; i++) {
|
||||
SDITransport sdi_trx = static_cast<SDITransport>(i);
|
||||
if (sdi_trx == SDITransport::SDI6G ||
|
||||
sdi_trx == SDITransport::SDI12G) {
|
||||
if (!NTV2DeviceCanDo12GSDI(deviceID))
|
||||
continue;
|
||||
}
|
||||
// Disabling 12G in Output plugin until AJA 4K HFR bug is fixed
|
||||
if (!capture && sdi_trx == SDITransport::SDI12G)
|
||||
continue;
|
||||
obs_property_list_add_int(
|
||||
list, aja::SDITransportToString(sdi_trx).c_str(),
|
||||
static_cast<long long>(sdi_trx));
|
||||
|
||||
@@ -45,7 +45,9 @@ populate_video_format_list(NTV2DeviceID deviceID, obs_property_t *list,
|
||||
bool want4KHFR = false);
|
||||
extern void populate_pixel_format_list(NTV2DeviceID deviceID,
|
||||
obs_property_t *list);
|
||||
extern void populate_sdi_transport_list(obs_property_t *list, IOSelection io);
|
||||
extern void populate_sdi_transport_list(obs_property_t *list, IOSelection io,
|
||||
NTV2DeviceID deviceID,
|
||||
bool capture = false);
|
||||
extern void populate_sdi_4k_transport_list(obs_property_t *list);
|
||||
extern bool aja_video_format_changed(obs_properties_t *props,
|
||||
obs_property_t *list,
|
||||
|
||||
@@ -836,7 +836,7 @@ bool aja_output_device_changed(void *data, obs_properties_t *props,
|
||||
IOSelection io_select = static_cast<IOSelection>(
|
||||
obs_data_get_int(settings, kUIPropOutput.id));
|
||||
obs_property_list_clear(sdi_trx_list);
|
||||
populate_sdi_transport_list(sdi_trx_list, io_select);
|
||||
populate_sdi_transport_list(sdi_trx_list, io_select, deviceID);
|
||||
|
||||
obs_property_list_clear(sdi_4k_list);
|
||||
populate_sdi_4k_transport_list(sdi_4k_list);
|
||||
@@ -851,6 +851,19 @@ bool aja_output_dest_changed(obs_properties_t *props, obs_property_t *list,
|
||||
|
||||
blog(LOG_DEBUG, "AJA Output Dest Changed");
|
||||
|
||||
const char *cardID = obs_data_get_string(settings, kUIPropDevice.id);
|
||||
if (!cardID || !cardID[0])
|
||||
return false;
|
||||
|
||||
auto &cardManager = aja::CardManager::Instance();
|
||||
auto cardEntry = cardManager.GetCardEntry(cardID);
|
||||
if (!cardEntry) {
|
||||
blog(LOG_DEBUG,
|
||||
"aja_output_dest_changed: Card Entry not found for %s",
|
||||
cardID);
|
||||
return false;
|
||||
}
|
||||
|
||||
bool itemFound = false;
|
||||
int dest = obs_data_get_int(settings, kUIPropOutput.id);
|
||||
size_t itemCount = obs_property_list_item_count(list);
|
||||
@@ -888,7 +901,8 @@ bool aja_output_dest_changed(obs_properties_t *props, obs_property_t *list,
|
||||
obs_property_t *sdi_trx_list =
|
||||
obs_properties_get(props, kUIPropSDITransport.id);
|
||||
obs_property_list_clear(sdi_trx_list);
|
||||
populate_sdi_transport_list(sdi_trx_list, io_select);
|
||||
populate_sdi_transport_list(sdi_trx_list, io_select,
|
||||
cardEntry->GetDeviceID());
|
||||
obs_property_set_visible(sdi_trx_list,
|
||||
aja::IsIOSelectionSDI(io_select));
|
||||
|
||||
|
||||
@@ -678,7 +678,7 @@ bool aja_source_device_changed(void *data, obs_properties_t *props,
|
||||
obs_property_list_clear(sdi_trx_list);
|
||||
obs_property_list_add_int(sdi_trx_list, obs_module_text("Auto"),
|
||||
kAutoDetect);
|
||||
populate_sdi_transport_list(sdi_trx_list, io_select);
|
||||
populate_sdi_transport_list(sdi_trx_list, io_select, deviceID, true);
|
||||
|
||||
obs_property_list_clear(sdi_4k_list);
|
||||
populate_sdi_4k_transport_list(sdi_4k_list);
|
||||
|
||||
Reference in New Issue
Block a user