mirror of
https://github.com/moonlight-stream/moonlight-qt
synced 2024-12-17 14:43:09 +00:00
Use Rec 2020 colorspace for WCG support even if HDR is off on the host
This commit is contained in:
parent
c55af7fff3
commit
472e8ee92e
15 changed files with 21 additions and 17 deletions
|
@ -415,8 +415,12 @@ bool Session::populateDecoderProperties(SDL_Window* window)
|
|||
"Using colorspace override: %d",
|
||||
m_StreamConfig.colorSpace);
|
||||
}
|
||||
else if (!m_StreamConfig.enableHdr) {
|
||||
m_StreamConfig.colorSpace = decoder->getDecoderSdrColorspace();
|
||||
}
|
||||
else {
|
||||
m_StreamConfig.colorSpace = decoder->getDecoderColorspace();
|
||||
// In HDR mode, we opt for Rec 2020 for WCG displays
|
||||
m_StreamConfig.colorSpace = COLORSPACE_REC_2020;
|
||||
}
|
||||
|
||||
m_StreamConfig.colorRange = qEnvironmentVariableIntValue("COLOR_RANGE_OVERRIDE", &ok);
|
||||
|
|
|
@ -67,7 +67,7 @@ public:
|
|||
virtual bool isAlwaysFullScreen() = 0;
|
||||
virtual bool isHdrSupported() = 0;
|
||||
virtual int getDecoderCapabilities() = 0;
|
||||
virtual int getDecoderColorspace() = 0;
|
||||
virtual int getDecoderSdrColorspace() = 0;
|
||||
virtual int getDecoderColorRange() = 0;
|
||||
virtual QSize getDecoderMaxResolution() = 0;
|
||||
virtual int submitDecodeUnit(PDECODE_UNIT du) = 0;
|
||||
|
|
|
@ -989,7 +989,7 @@ Exit:
|
|||
overlayVertexBuffer->Release();
|
||||
}
|
||||
|
||||
int DXVA2Renderer::getDecoderColorspace()
|
||||
int DXVA2Renderer::getDecoderSdrColorspace()
|
||||
{
|
||||
if (m_DeviceQuirks & DXVA2_QUIRK_NO_VP) {
|
||||
// StretchRect() assumes Rec 601 on Intel and Qualcomm GPUs.
|
||||
|
|
|
@ -19,7 +19,7 @@ public:
|
|||
virtual bool prepareDecoderContext(AVCodecContext* context, AVDictionary** options) override;
|
||||
virtual void renderFrame(AVFrame* frame) override;
|
||||
virtual void notifyOverlayUpdated(Overlay::OverlayType type) override;
|
||||
virtual int getDecoderColorspace() override;
|
||||
virtual int getDecoderSdrColorspace() override;
|
||||
virtual int getDecoderCapabilities() override;
|
||||
|
||||
private:
|
||||
|
|
|
@ -210,7 +210,7 @@ bool MmalRenderer::initialize(PDECODER_PARAMETERS params)
|
|||
return true;
|
||||
}
|
||||
|
||||
int MmalRenderer::getDecoderColorspace()
|
||||
int MmalRenderer::getDecoderSdrColorspace()
|
||||
{
|
||||
// MMAL seems to always use Rec. 709 colorspace for rendering
|
||||
// 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 bool needsTestFrame() override;
|
||||
virtual int getRendererAttributes() override;
|
||||
virtual int getDecoderColorspace() override;
|
||||
virtual int getDecoderSdrColorspace() override;
|
||||
|
||||
private:
|
||||
static void InputPortCallback(MMAL_PORT_T* port, MMAL_BUFFER_HEADER_T* buffer);
|
||||
|
|
|
@ -153,7 +153,7 @@ public:
|
|||
return 0;
|
||||
}
|
||||
|
||||
virtual int getDecoderColorspace() {
|
||||
virtual int getDecoderSdrColorspace() {
|
||||
// Rec 601 is default
|
||||
return COLORSPACE_REC_601;
|
||||
}
|
||||
|
@ -177,7 +177,7 @@ public:
|
|||
default:
|
||||
// If the colorspace is not populated, assume the encoder
|
||||
// is sending the colorspace that we requested.
|
||||
return getDecoderColorspace();
|
||||
return getDecoderSdrColorspace();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -470,7 +470,7 @@ VAAPIRenderer::isDirectRenderingSupported()
|
|||
return false;
|
||||
}
|
||||
|
||||
int VAAPIRenderer::getDecoderColorspace()
|
||||
int VAAPIRenderer::getDecoderSdrColorspace()
|
||||
{
|
||||
// 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
|
||||
|
|
|
@ -41,7 +41,7 @@ public:
|
|||
virtual void renderFrame(AVFrame* frame) override;
|
||||
virtual bool needsTestFrame() override;
|
||||
virtual bool isDirectRenderingSupported() override;
|
||||
virtual int getDecoderColorspace() override;
|
||||
virtual int getDecoderSdrColorspace() override;
|
||||
virtual int getDecoderCapabilities() override;
|
||||
virtual void notifyOverlayUpdated(Overlay::OverlayType) override;
|
||||
|
||||
|
|
|
@ -428,7 +428,7 @@ bool VDPAURenderer::needsTestFrame()
|
|||
return true;
|
||||
}
|
||||
|
||||
int VDPAURenderer::getDecoderColorspace()
|
||||
int VDPAURenderer::getDecoderSdrColorspace()
|
||||
{
|
||||
// VDPAU defaults to Rec 601.
|
||||
// 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 renderFrame(AVFrame* frame) override;
|
||||
virtual bool needsTestFrame() override;
|
||||
virtual int getDecoderColorspace() override;
|
||||
virtual int getDecoderSdrColorspace() override;
|
||||
virtual int getDecoderCapabilities() override;
|
||||
|
||||
private:
|
||||
|
|
|
@ -87,9 +87,9 @@ int FFmpegVideoDecoder::getDecoderCapabilities()
|
|||
return capabilities;
|
||||
}
|
||||
|
||||
int FFmpegVideoDecoder::getDecoderColorspace()
|
||||
int FFmpegVideoDecoder::getDecoderSdrColorspace()
|
||||
{
|
||||
return m_FrontendRenderer->getDecoderColorspace();
|
||||
return m_FrontendRenderer->getDecoderSdrColorspace();
|
||||
}
|
||||
|
||||
int FFmpegVideoDecoder::getDecoderColorRange()
|
||||
|
|
|
@ -20,7 +20,7 @@ public:
|
|||
virtual bool isAlwaysFullScreen() override;
|
||||
virtual bool isHdrSupported() override;
|
||||
virtual int getDecoderCapabilities() override;
|
||||
virtual int getDecoderColorspace() override;
|
||||
virtual int getDecoderSdrColorspace() override;
|
||||
virtual int getDecoderColorRange() override;
|
||||
virtual QSize getDecoderMaxResolution() override;
|
||||
virtual int submitDecodeUnit(PDECODE_UNIT du) override;
|
||||
|
|
|
@ -63,7 +63,7 @@ SLVideoDecoder::getDecoderCapabilities()
|
|||
}
|
||||
|
||||
int
|
||||
SLVideoDecoder::getDecoderColorspace()
|
||||
SLVideoDecoder::getDecoderSdrColorspace()
|
||||
{
|
||||
return COLORSPACE_REC_709;
|
||||
}
|
||||
|
|
|
@ -14,7 +14,7 @@ public:
|
|||
virtual bool isHardwareAccelerated() override;
|
||||
virtual bool isAlwaysFullScreen() override;
|
||||
virtual int getDecoderCapabilities() override;
|
||||
virtual int getDecoderColorspace() override;
|
||||
virtual int getDecoderSdrColorspace() override;
|
||||
virtual int getDecoderColorRange() override;
|
||||
virtual QSize getDecoderMaxResolution() override;
|
||||
virtual int submitDecodeUnit(PDECODE_UNIT du) override;
|
||||
|
|
Loading…
Reference in a new issue