Merge pull request #475 from bssteph/master

Capture BMI Intensity Pro 4K video
master
Jim 2015-09-15 00:28:55 -07:00
commit 1effaca226
2 changed files with 19 additions and 2 deletions

View File

@ -12,7 +12,16 @@ DeckLinkDeviceInstance::DeckLinkDeviceInstance(DeckLink *decklink_,
DeckLinkDevice *device_) :
currentFrame(), currentPacket(), decklink(decklink_), device(device_)
{
currentFrame.format = VIDEO_FORMAT_UYVY;
// use BGRA mode if the device is a BMI intensity pro 4K... wish there
// was a better way to check the device model, but older cards don't
// implement BMDDeckLinkPersistentID
if (std::string("Intensity Pro 4K").compare(device_->GetName()) == 0) {
currentFrame.format = VIDEO_FORMAT_BGRX;
doRgb = true;
} else {
currentFrame.format = VIDEO_FORMAT_UYVY;
doRgb = false;
}
currentPacket.samples_per_sec = 48000;
currentPacket.speakers = SPEAKERS_STEREO;
@ -82,9 +91,16 @@ 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,
bmdFormat8BitYUV, bmdVideoInputFlagDefault);
pixelFormat, bmdVideoInputFlagDefault);
if (videoResult != S_OK) {
LOG(LOG_ERROR, "Failed to enable video input");

View File

@ -8,6 +8,7 @@ protected:
struct obs_source_audio currentPacket;
DeckLink *decklink = nullptr;
DeckLinkDevice *device = nullptr;
bool doRgb = false;
DeckLinkDeviceMode *mode = nullptr;
ComPtr<IDeckLinkInput> input;
volatile long refCount = 1;