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
This commit is contained in:
Brian S. Stephan 2015-09-15 22:48:00 -05:00
parent 1effaca226
commit ec9d2b42c4
2 changed files with 3 additions and 9 deletions

View File

@ -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);

View File

@ -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<IDeckLinkInput> input;
volatile long refCount = 1;