From ec9d2b42c40684555af44ddece1c8934acf5fcd7 Mon Sep 17 00:00:00 2001 From: "Brian S. Stephan" Date: Tue, 15 Sep 2015 22:48:00 -0500 Subject: [PATCH] decklink: detect BMDPixelFormat in instance constructor cleaning up my previous commit a bit. we can just keep the appropriate BMDPixelFormat as a data member and keep StartCapture() a bit clearer. this might also be helpful if (when?) the detection code needs to be more robust or configurable --- plugins/decklink/decklink-device-instance.cpp | 10 ++-------- plugins/decklink/decklink-device-instance.hpp | 2 +- 2 files changed, 3 insertions(+), 9 deletions(-) diff --git a/plugins/decklink/decklink-device-instance.cpp b/plugins/decklink/decklink-device-instance.cpp index 981074872..2555d367a 100644 --- a/plugins/decklink/decklink-device-instance.cpp +++ b/plugins/decklink/decklink-device-instance.cpp @@ -17,10 +17,10 @@ DeckLinkDeviceInstance::DeckLinkDeviceInstance(DeckLink *decklink_, // implement BMDDeckLinkPersistentID if (std::string("Intensity Pro 4K").compare(device_->GetName()) == 0) { currentFrame.format = VIDEO_FORMAT_BGRX; - doRgb = true; + pixelFormat = bmdFormat8BitBGRA; } else { currentFrame.format = VIDEO_FORMAT_UYVY; - doRgb = false; + pixelFormat = bmdFormat8BitYUV; } currentPacket.samples_per_sec = 48000; @@ -91,14 +91,8 @@ bool DeckLinkDeviceInstance::StartCapture(DeckLinkDeviceMode *mode_) input->SetCallback(this); - BMDPixelFormat pixelFormat; const BMDDisplayMode displayMode = mode_->GetDisplayMode(); - if (doRgb) - pixelFormat = bmdFormat8BitBGRA; - else - pixelFormat = bmdFormat8BitYUV; - const HRESULT videoResult = input->EnableVideoInput(displayMode, pixelFormat, bmdVideoInputFlagDefault); diff --git a/plugins/decklink/decklink-device-instance.hpp b/plugins/decklink/decklink-device-instance.hpp index 8e0d39007..8ceae8c0e 100644 --- a/plugins/decklink/decklink-device-instance.hpp +++ b/plugins/decklink/decklink-device-instance.hpp @@ -8,8 +8,8 @@ protected: struct obs_source_audio currentPacket; DeckLink *decklink = nullptr; DeckLinkDevice *device = nullptr; - bool doRgb = false; DeckLinkDeviceMode *mode = nullptr; + BMDPixelFormat pixelFormat = bmdFormat8BitYUV; ComPtr input; volatile long refCount = 1;