mirror of
https://github.com/moonlight-stream/moonlight-qt
synced 2024-12-17 14:43:09 +00:00
Revert "Use Rec 2020 colorspace for WCG support even if HDR is off on the host"
Rec 2020 conversion causes colors to be blown out in SDR
This reverts commit 472e8ee92e
.
This commit is contained in:
parent
0928d1fab2
commit
e6c4332445
15 changed files with 17 additions and 21 deletions
|
@ -415,12 +415,8 @@ bool Session::populateDecoderProperties(SDL_Window* window)
|
||||||
"Using colorspace override: %d",
|
"Using colorspace override: %d",
|
||||||
m_StreamConfig.colorSpace);
|
m_StreamConfig.colorSpace);
|
||||||
}
|
}
|
||||||
else if (!m_StreamConfig.enableHdr) {
|
|
||||||
m_StreamConfig.colorSpace = decoder->getDecoderSdrColorspace();
|
|
||||||
}
|
|
||||||
else {
|
else {
|
||||||
// In HDR mode, we opt for Rec 2020 for WCG displays
|
m_StreamConfig.colorSpace = decoder->getDecoderColorspace();
|
||||||
m_StreamConfig.colorSpace = COLORSPACE_REC_2020;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
m_StreamConfig.colorRange = qEnvironmentVariableIntValue("COLOR_RANGE_OVERRIDE", &ok);
|
m_StreamConfig.colorRange = qEnvironmentVariableIntValue("COLOR_RANGE_OVERRIDE", &ok);
|
||||||
|
|
|
@ -67,7 +67,7 @@ public:
|
||||||
virtual bool isAlwaysFullScreen() = 0;
|
virtual bool isAlwaysFullScreen() = 0;
|
||||||
virtual bool isHdrSupported() = 0;
|
virtual bool isHdrSupported() = 0;
|
||||||
virtual int getDecoderCapabilities() = 0;
|
virtual int getDecoderCapabilities() = 0;
|
||||||
virtual int getDecoderSdrColorspace() = 0;
|
virtual int getDecoderColorspace() = 0;
|
||||||
virtual int getDecoderColorRange() = 0;
|
virtual int getDecoderColorRange() = 0;
|
||||||
virtual QSize getDecoderMaxResolution() = 0;
|
virtual QSize getDecoderMaxResolution() = 0;
|
||||||
virtual int submitDecodeUnit(PDECODE_UNIT du) = 0;
|
virtual int submitDecodeUnit(PDECODE_UNIT du) = 0;
|
||||||
|
|
|
@ -989,7 +989,7 @@ Exit:
|
||||||
overlayVertexBuffer->Release();
|
overlayVertexBuffer->Release();
|
||||||
}
|
}
|
||||||
|
|
||||||
int DXVA2Renderer::getDecoderSdrColorspace()
|
int DXVA2Renderer::getDecoderColorspace()
|
||||||
{
|
{
|
||||||
if (m_DeviceQuirks & DXVA2_QUIRK_NO_VP) {
|
if (m_DeviceQuirks & DXVA2_QUIRK_NO_VP) {
|
||||||
// StretchRect() assumes Rec 601 on Intel and Qualcomm GPUs.
|
// StretchRect() assumes Rec 601 on Intel and Qualcomm GPUs.
|
||||||
|
|
|
@ -19,7 +19,7 @@ public:
|
||||||
virtual bool prepareDecoderContext(AVCodecContext* context, AVDictionary** options) override;
|
virtual bool prepareDecoderContext(AVCodecContext* context, AVDictionary** options) override;
|
||||||
virtual void renderFrame(AVFrame* frame) override;
|
virtual void renderFrame(AVFrame* frame) override;
|
||||||
virtual void notifyOverlayUpdated(Overlay::OverlayType type) override;
|
virtual void notifyOverlayUpdated(Overlay::OverlayType type) override;
|
||||||
virtual int getDecoderSdrColorspace() override;
|
virtual int getDecoderColorspace() override;
|
||||||
virtual int getDecoderCapabilities() override;
|
virtual int getDecoderCapabilities() override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
|
@ -210,7 +210,7 @@ bool MmalRenderer::initialize(PDECODER_PARAMETERS params)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
int MmalRenderer::getDecoderSdrColorspace()
|
int MmalRenderer::getDecoderColorspace()
|
||||||
{
|
{
|
||||||
// MMAL seems to always use Rec. 709 colorspace for rendering
|
// MMAL seems to always use Rec. 709 colorspace for rendering
|
||||||
// even when we try to set something else in the input format.
|
// even when we try to set something else in the input format.
|
||||||
|
|
|
@ -17,7 +17,7 @@ public:
|
||||||
virtual enum AVPixelFormat getPreferredPixelFormat(int videoFormat) override;
|
virtual enum AVPixelFormat getPreferredPixelFormat(int videoFormat) override;
|
||||||
virtual bool needsTestFrame() override;
|
virtual bool needsTestFrame() override;
|
||||||
virtual int getRendererAttributes() override;
|
virtual int getRendererAttributes() override;
|
||||||
virtual int getDecoderSdrColorspace() override;
|
virtual int getDecoderColorspace() override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
static void InputPortCallback(MMAL_PORT_T* port, MMAL_BUFFER_HEADER_T* buffer);
|
static void InputPortCallback(MMAL_PORT_T* port, MMAL_BUFFER_HEADER_T* buffer);
|
||||||
|
|
|
@ -153,7 +153,7 @@ public:
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual int getDecoderSdrColorspace() {
|
virtual int getDecoderColorspace() {
|
||||||
// Rec 601 is default
|
// Rec 601 is default
|
||||||
return COLORSPACE_REC_601;
|
return COLORSPACE_REC_601;
|
||||||
}
|
}
|
||||||
|
@ -177,7 +177,7 @@ public:
|
||||||
default:
|
default:
|
||||||
// If the colorspace is not populated, assume the encoder
|
// If the colorspace is not populated, assume the encoder
|
||||||
// is sending the colorspace that we requested.
|
// is sending the colorspace that we requested.
|
||||||
return getDecoderSdrColorspace();
|
return getDecoderColorspace();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -470,7 +470,7 @@ VAAPIRenderer::isDirectRenderingSupported()
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
int VAAPIRenderer::getDecoderSdrColorspace()
|
int VAAPIRenderer::getDecoderColorspace()
|
||||||
{
|
{
|
||||||
// Gallium drivers don't support Rec 709 yet - https://gitlab.freedesktop.org/mesa/mesa/issues/1915
|
// Gallium drivers don't support Rec 709 yet - https://gitlab.freedesktop.org/mesa/mesa/issues/1915
|
||||||
// Intel-vaapi-driver defaults to Rec 601 - https://github.com/intel/intel-vaapi-driver/blob/021bcb79d1bd873bbd9fbca55f40320344bab866/src/i965_output_dri.c#L186
|
// Intel-vaapi-driver defaults to Rec 601 - https://github.com/intel/intel-vaapi-driver/blob/021bcb79d1bd873bbd9fbca55f40320344bab866/src/i965_output_dri.c#L186
|
||||||
|
|
|
@ -41,7 +41,7 @@ public:
|
||||||
virtual void renderFrame(AVFrame* frame) override;
|
virtual void renderFrame(AVFrame* frame) override;
|
||||||
virtual bool needsTestFrame() override;
|
virtual bool needsTestFrame() override;
|
||||||
virtual bool isDirectRenderingSupported() override;
|
virtual bool isDirectRenderingSupported() override;
|
||||||
virtual int getDecoderSdrColorspace() override;
|
virtual int getDecoderColorspace() override;
|
||||||
virtual int getDecoderCapabilities() override;
|
virtual int getDecoderCapabilities() override;
|
||||||
virtual void notifyOverlayUpdated(Overlay::OverlayType) override;
|
virtual void notifyOverlayUpdated(Overlay::OverlayType) override;
|
||||||
|
|
||||||
|
|
|
@ -428,7 +428,7 @@ bool VDPAURenderer::needsTestFrame()
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
int VDPAURenderer::getDecoderSdrColorspace()
|
int VDPAURenderer::getDecoderColorspace()
|
||||||
{
|
{
|
||||||
// VDPAU defaults to Rec 601.
|
// VDPAU defaults to Rec 601.
|
||||||
// https://http.download.nvidia.com/XFree86/vdpau/doxygen/html/group___vdp_video_mixer.html#ga65580813e9045d94b739ed2bb8b62b46
|
// https://http.download.nvidia.com/XFree86/vdpau/doxygen/html/group___vdp_video_mixer.html#ga65580813e9045d94b739ed2bb8b62b46
|
||||||
|
|
|
@ -19,7 +19,7 @@ public:
|
||||||
virtual void waitToRender() override;
|
virtual void waitToRender() override;
|
||||||
virtual void renderFrame(AVFrame* frame) override;
|
virtual void renderFrame(AVFrame* frame) override;
|
||||||
virtual bool needsTestFrame() override;
|
virtual bool needsTestFrame() override;
|
||||||
virtual int getDecoderSdrColorspace() override;
|
virtual int getDecoderColorspace() override;
|
||||||
virtual int getDecoderCapabilities() override;
|
virtual int getDecoderCapabilities() override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
|
@ -87,9 +87,9 @@ int FFmpegVideoDecoder::getDecoderCapabilities()
|
||||||
return capabilities;
|
return capabilities;
|
||||||
}
|
}
|
||||||
|
|
||||||
int FFmpegVideoDecoder::getDecoderSdrColorspace()
|
int FFmpegVideoDecoder::getDecoderColorspace()
|
||||||
{
|
{
|
||||||
return m_FrontendRenderer->getDecoderSdrColorspace();
|
return m_FrontendRenderer->getDecoderColorspace();
|
||||||
}
|
}
|
||||||
|
|
||||||
int FFmpegVideoDecoder::getDecoderColorRange()
|
int FFmpegVideoDecoder::getDecoderColorRange()
|
||||||
|
|
|
@ -20,7 +20,7 @@ public:
|
||||||
virtual bool isAlwaysFullScreen() override;
|
virtual bool isAlwaysFullScreen() override;
|
||||||
virtual bool isHdrSupported() override;
|
virtual bool isHdrSupported() override;
|
||||||
virtual int getDecoderCapabilities() override;
|
virtual int getDecoderCapabilities() override;
|
||||||
virtual int getDecoderSdrColorspace() override;
|
virtual int getDecoderColorspace() override;
|
||||||
virtual int getDecoderColorRange() override;
|
virtual int getDecoderColorRange() override;
|
||||||
virtual QSize getDecoderMaxResolution() override;
|
virtual QSize getDecoderMaxResolution() override;
|
||||||
virtual int submitDecodeUnit(PDECODE_UNIT du) override;
|
virtual int submitDecodeUnit(PDECODE_UNIT du) override;
|
||||||
|
|
|
@ -63,7 +63,7 @@ SLVideoDecoder::getDecoderCapabilities()
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
SLVideoDecoder::getDecoderSdrColorspace()
|
SLVideoDecoder::getDecoderColorspace()
|
||||||
{
|
{
|
||||||
return COLORSPACE_REC_709;
|
return COLORSPACE_REC_709;
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,7 +14,7 @@ public:
|
||||||
virtual bool isHardwareAccelerated() override;
|
virtual bool isHardwareAccelerated() override;
|
||||||
virtual bool isAlwaysFullScreen() override;
|
virtual bool isAlwaysFullScreen() override;
|
||||||
virtual int getDecoderCapabilities() override;
|
virtual int getDecoderCapabilities() override;
|
||||||
virtual int getDecoderSdrColorspace() override;
|
virtual int getDecoderColorspace() override;
|
||||||
virtual int getDecoderColorRange() override;
|
virtual int getDecoderColorRange() override;
|
||||||
virtual QSize getDecoderMaxResolution() override;
|
virtual QSize getDecoderMaxResolution() override;
|
||||||
virtual int submitDecodeUnit(PDECODE_UNIT du) override;
|
virtual int submitDecodeUnit(PDECODE_UNIT du) override;
|
||||||
|
|
Loading…
Reference in a new issue