Cameron Nichols wrote:Hi Peng,
Dual-link 3D internal keying is not a supported feature.
You can however configure the DeckLink 8K Pro with 2 sub-devices full-duplex profile and treat each channel separately - SDI 1 In - SDI 2 Out (left-eye) and SDI 3 In - SDI 4 Out (right-eye). You then schedule left and right key frames for each sub-device as you would for a single device.
You should also look at implementing with the Synchronized Playback feature (refer to 2.4.13.2 in the SDK Manual and also SynchronizedPlayback example) to ensure that the scheduled stream times for left and right channels are frame aligned.
Regards
Cameron
Hi Cameron,
thank you! I have successfully added left and right key frames respectively using the 2 sub-devices as you recommended.
However, a new problem occurs. As you know, we are trying to implement an AR application by adding left and right overlays onto the video frames, which are captured from a 3D camera and automatically looped through onto the 3D screen. We also need to forward these captured video frames to other applications, so that a callback function: VideoInputFrameArrived is required. However, after we switch to this new configuration with 2 sub-devices without changing the pixel format and display mode, we always receive the error of "no input signal" when we check the bmdFrameHasNoInputSource flag for incoming video frames.
We also tried the Capture sample in the SDK package and enumerated all possible display modes and pixel formats, but still even received the "no input signal" error.
I am not sure if this is the problem with the timestamp of frames. Because the section Synchronized Playback of SDK manual mentioned it is not necessary for DeckLink 8K Pro to set a common reference.
Thank you again!
Here are some main code snippets we are currently using:
- Code: Select all
// setup
this->m_DeckLinkInput[i]->DoesSupportVideoMode(
bmdVideoConnectionUnspecified,
this->m_Mode, // bmdModeHD1080p50
this->m_PixelFormat, // bmdFormat8BitYUV
bmdNoVideoInputConversion,
bmdSupportedVideoModeDefault,
//bmdSupportedVideoModeDualStream3D,
NULL,
&result);
thi->m_DeckLinkOutput[i]->DoesSupportVideoMode(
bmdVideoConnectionUnspecified,
this->m_Mode, //bmdModeHD1080p50
this->m_PixelFormat,// bmdFormat8BitYUV
bmdNoVideoOutputConversion,
bmdSupportedVideoModeDefault,
NULL,
&displayModeSupported);
...
// callback function:
HRESULT DeckLinkInputCallback::VideoInputFrameArrived(IDeckLinkVideoInputFrame* videoFrame, IDeckLinkAudioInputPacket* audioFrame)
{
void* frameBytes;
if (videoFrame)
{
if (videoFrame->GetFlags() & bmdFrameHasNoInputSource)
{
fprintf(stderr, "No input signal detected\n");
}
else
{
...
}
}
}