mirror of
https://github.com/obsproject/obs-studio.git
synced 2026-04-03 22:31:56 -04:00
decklink: Reset video capture on format change
Fixes black screen when toggling between 4K SDR and HDR on PS5.
This commit is contained in:
@@ -794,25 +794,32 @@ HRESULT STDMETHODCALLTYPE DeckLinkDeviceInstance::VideoInputFormatChanged(
|
||||
BMDVideoInputFormatChangedEvents events, IDeckLinkDisplayMode *newMode,
|
||||
BMDDetectedVideoInputFormatFlags detectedSignalFlags)
|
||||
{
|
||||
bool formatChanged = false;
|
||||
if (events & bmdVideoInputColorspaceChanged) {
|
||||
constexpr BMDDetectedVideoInputFormatFlags highBitFlags =
|
||||
(bmdDetectedVideoInput12BitDepth |
|
||||
bmdDetectedVideoInput10BitDepth);
|
||||
if (detectedSignalFlags & bmdDetectedVideoInputRGB444) {
|
||||
pixelFormat = ((detectedSignalFlags & highBitFlags) &&
|
||||
allow10Bit)
|
||||
? bmdFormat10BitRGBXLE
|
||||
: bmdFormat8BitBGRA;
|
||||
const BMDPixelFormat nextFormat =
|
||||
((detectedSignalFlags & highBitFlags) &&
|
||||
allow10Bit)
|
||||
? bmdFormat10BitRGBXLE
|
||||
: bmdFormat8BitBGRA;
|
||||
formatChanged = pixelFormat != nextFormat;
|
||||
pixelFormat = nextFormat;
|
||||
}
|
||||
if (detectedSignalFlags & bmdDetectedVideoInputYCbCr422) {
|
||||
pixelFormat = ((detectedSignalFlags & highBitFlags) &&
|
||||
allow10Bit)
|
||||
? bmdFormat10BitYUV
|
||||
: bmdFormat8BitYUV;
|
||||
const BMDPixelFormat nextFormat =
|
||||
((detectedSignalFlags & highBitFlags) &&
|
||||
allow10Bit)
|
||||
? bmdFormat10BitYUV
|
||||
: bmdFormat8BitYUV;
|
||||
formatChanged = pixelFormat != nextFormat;
|
||||
pixelFormat = nextFormat;
|
||||
}
|
||||
}
|
||||
|
||||
if (events & bmdVideoInputDisplayModeChanged) {
|
||||
if (formatChanged || (events & bmdVideoInputDisplayModeChanged)) {
|
||||
input->PauseStreams();
|
||||
mode->SetMode(newMode);
|
||||
displayMode = mode->GetDisplayMode();
|
||||
|
||||
Reference in New Issue
Block a user