]> git.sesse.net Git - nageru/blobdiff - nageru/decklink_util.cpp
Skip DeckLink cards marked as inactive.
[nageru] / nageru / decklink_util.cpp
index 33a7933a033e26c08d91d59e1f4919a0717d55b6..c2ebd575b073cb1743d6a2cc3c1ea418c415d126 100644 (file)
@@ -90,3 +90,22 @@ BMDVideoConnection pick_default_video_connection(IDeckLink *card, BMDDeckLinkAtt
                return connection_mask & (-connection_mask);
        }
 }
+
+bool decklink_card_is_active(IDeckLink *card, unsigned card_index)
+{
+       IDeckLinkStatus *status;
+       if (card->QueryInterface(IID_IDeckLinkStatus, (void**)&status) != S_OK) {
+               fprintf(stderr, "Card %u has no status interface\n", card_index);
+               abort();
+       }
+
+       int64_t duplex_mode;
+       if (status->GetInt(bmdDeckLinkStatusDuplexMode, &duplex_mode) != S_OK) {
+               fprintf(stderr, "Could not query duplex mode for card %u\n", card_index);
+               abort();
+       }
+
+       status->Release();
+
+       return (duplex_mode != bmdDuplexStatusInactive);
+}