aja: Filter 6G/12G SDI Transport depending device/plugin type

This commit is contained in:
Paul Hindt
2022-01-27 01:06:50 -08:00
committed by Colin Edwards
parent d2515170e1
commit a4c0996d59
4 changed files with 34 additions and 5 deletions
+14 -1
View File
@@ -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));
+3 -1
View File
@@ -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,
+16 -2
View File
@@ -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));
+1 -1
View File
@@ -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);