decklink: Fix format detection loop
Ignore color space change in format detection to fix endless loop. Fix #3511 Fix #3277
This commit is contained in:
parent
923f06bfa6
commit
65daf2c86d
@ -618,13 +618,6 @@ HRESULT STDMETHODCALLTYPE DeckLinkDeviceInstance::VideoInputFormatChanged(
|
||||
BMDVideoInputFormatChangedEvents events, IDeckLinkDisplayMode *newMode,
|
||||
BMDDetectedVideoInputFormatFlags detectedSignalFlags)
|
||||
{
|
||||
input->PauseStreams();
|
||||
|
||||
mode->SetMode(newMode);
|
||||
|
||||
if (events & bmdVideoInputDisplayModeChanged) {
|
||||
displayMode = mode->GetDisplayMode();
|
||||
}
|
||||
|
||||
if (events & bmdVideoInputColorspaceChanged) {
|
||||
switch (detectedSignalFlags) {
|
||||
@ -639,21 +632,26 @@ HRESULT STDMETHODCALLTYPE DeckLinkDeviceInstance::VideoInputFormatChanged(
|
||||
}
|
||||
}
|
||||
|
||||
const HRESULT videoResult = input->EnableVideoInput(
|
||||
displayMode, pixelFormat, bmdVideoInputEnableFormatDetection);
|
||||
if (videoResult != S_OK) {
|
||||
LOG(LOG_ERROR, "Failed to enable video input");
|
||||
input->StopStreams();
|
||||
FinalizeStream();
|
||||
if (events & bmdVideoInputDisplayModeChanged) {
|
||||
input->PauseStreams();
|
||||
mode->SetMode(newMode);
|
||||
displayMode = mode->GetDisplayMode();
|
||||
|
||||
return E_FAIL;
|
||||
const HRESULT videoResult = input->EnableVideoInput(
|
||||
displayMode, pixelFormat,
|
||||
bmdVideoInputEnableFormatDetection);
|
||||
if (videoResult != S_OK) {
|
||||
LOG(LOG_ERROR, "Failed to enable video input");
|
||||
input->StopStreams();
|
||||
FinalizeStream();
|
||||
|
||||
return E_FAIL;
|
||||
}
|
||||
SetupVideoFormat(mode);
|
||||
input->FlushStreams();
|
||||
input->StartStreams();
|
||||
}
|
||||
|
||||
SetupVideoFormat(mode);
|
||||
|
||||
input->FlushStreams();
|
||||
input->StartStreams();
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user