Fix handling of HDR colorspace transitions in VT renderer
This commit is contained in:
parent
0a301dd2f9
commit
d0df4fa3a0
1 changed files with 13 additions and 0 deletions
|
|
@ -38,6 +38,7 @@ public:
|
|||
m_FormatDesc(nullptr),
|
||||
m_StreamView(nullptr),
|
||||
m_DisplayLink(nullptr),
|
||||
m_LastAvColorSpace(AVCOL_SPC_UNSPECIFIED),
|
||||
m_ColorSpace(nullptr),
|
||||
m_VsyncMutex(nullptr),
|
||||
m_VsyncPassed(nullptr)
|
||||
|
|
@ -232,6 +233,17 @@ public:
|
|||
break;
|
||||
}
|
||||
|
||||
// Reset m_ColorSpace if the colorspace changes. This can happen when
|
||||
// a game enters HDR mode (Rec 601 -> Rec 2020).
|
||||
if (frame->colorspace != m_LastAvColorSpace) {
|
||||
if (m_ColorSpace != nullptr) {
|
||||
CGColorSpaceRelease(m_ColorSpace);
|
||||
m_ColorSpace = nullptr;
|
||||
}
|
||||
|
||||
m_LastAvColorSpace = frame->colorspace;
|
||||
}
|
||||
|
||||
switch (frame->colorspace) {
|
||||
case AVCOL_SPC_BT709:
|
||||
if (m_ColorSpace == nullptr) {
|
||||
|
|
@ -560,6 +572,7 @@ private:
|
|||
NSView* m_StreamView;
|
||||
NSTextField* m_OverlayTextFields[Overlay::OverlayMax];
|
||||
CVDisplayLinkRef m_DisplayLink;
|
||||
AVColorSpace m_LastAvColorSpace;
|
||||
CGColorSpaceRef m_ColorSpace;
|
||||
SDL_mutex* m_VsyncMutex;
|
||||
SDL_cond* m_VsyncPassed;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue