Я пытаюсь начать работать с Balckagic SDK. и я попытался получить кадр устройства «DeckLink SDI»
void get_video(IDeckLink* decklink){
HRESULT result;
IDeckLinkInput* decklinkinput = NULL;
BSTR name = NULL;
IDeckLinkDisplayModeIterator* displayModeIterator = NULL;
IDeckLinkInputCallback* theCallback = NULL;
IDeckLinkVideoInputFrame* decklinkInputVideoframe =NULL;
IDeckLinkDisplayMode* displayMode = NULL;
IDeckLinkVideoInputFrame* inputVideoFrame;
IDeckLinkAudioInputPacket* inputAudioPacket;
IBMDStreamingDeviceInput* capture;
IDeckLinkVideoFrame* deckLinkVideoFrame = NULL;
unsigned long avaibleFrames = NULL;result = decklink->QueryInterface(IID_IDeckLinkInput,(void**) &decklinkinput);result = decklinkinput->GetDisplayModeIterator(&displayModeIterator);
result = decklinkinput->SetCallback(theCallback);
result = decklinkinput->EnableVideoInput(BMDDisplayMode::bmdModeHD1080i50,BMDPixelFormat::bmdFormat8BitYUV,bmdVideoInputEnableFormatDetection);
result = decklinkinput->DisableAudioInput();
result = decklinkinput->StartStreams();
decklinkinput->GetAvailableVideoFrameCount(&avaibleFrames);cout<<"Number of avaible frames " << avaibleFrames<<endl;
result = decklinkinput->SetCallback(theCallback);
theCallback->VideoInputFrameArrived(inputVideoFrame, inputAudioPacket);
result = decklinkinput->StopStreams();}
и у меня нет синтаксической ошибки, все, что я получаю, это число fram равно 0. и я не знаю, как сохранить кадр. Я благодарен за любую помощь.
Посмотрите на примеры кода. Процесс:
Теперь каждый раз, когда доступен кадр, Decklink SDK будет вызывать зарегистрированную функцию обратного вызова с только что обработанным кадром. Из поста выше я чувствую, что вы не понимаете концепцию обратного вызова.
Других решений пока нет …