mirror of
https://github.com/moonlight-stream/moonlight-qt.git
synced 2026-08-07 17:36:32 +00:00
Explicitly request limited range for renderers that require it
This commit is contained in:
@@ -784,6 +784,14 @@ int DXVA2Renderer::getDecoderColorspace()
|
||||
}
|
||||
}
|
||||
|
||||
int DXVA2Renderer::getDecoderColorRange()
|
||||
{
|
||||
// StretchRect() assumes limited range on Intel and Qualcomm GPUs.
|
||||
// VideoProcessBlt() should handle either fine, but let's not take
|
||||
// chances on potentially broken DXVA2 GPU drivers for little gain.
|
||||
return COLOR_RANGE_LIMITED;
|
||||
}
|
||||
|
||||
int DXVA2Renderer::getDecoderCapabilities()
|
||||
{
|
||||
return CAPABILITY_REFERENCE_FRAME_INVALIDATION_HEVC |
|
||||
|
||||
@@ -18,6 +18,7 @@ public:
|
||||
virtual void renderFrame(AVFrame* frame) override;
|
||||
virtual void notifyOverlayUpdated(Overlay::OverlayType type) override;
|
||||
virtual int getDecoderColorspace() override;
|
||||
virtual int getDecoderColorRange() override;
|
||||
virtual int getDecoderCapabilities() override;
|
||||
|
||||
private:
|
||||
|
||||
@@ -242,6 +242,12 @@ int MmalRenderer::getDecoderColorspace()
|
||||
return COLORSPACE_REC_709;
|
||||
}
|
||||
|
||||
int MmalRenderer::getDecoderColorRange()
|
||||
{
|
||||
// MMAL_COLOR_SPACE_ITUR_BT709 assumes limited range content
|
||||
return COLOR_RANGE_LIMITED;
|
||||
}
|
||||
|
||||
void MmalRenderer::InputPortCallback(MMAL_PORT_T*, MMAL_BUFFER_HEADER_T* buffer)
|
||||
{
|
||||
mmal_buffer_header_release(buffer);
|
||||
|
||||
@@ -18,6 +18,7 @@ public:
|
||||
virtual enum AVPixelFormat getPreferredPixelFormat(int videoFormat) override;
|
||||
virtual int getRendererAttributes() override;
|
||||
virtual int getDecoderColorspace() override;
|
||||
virtual int getDecoderColorRange() override;
|
||||
|
||||
private:
|
||||
static void InputPortCallback(MMAL_PORT_T* port, MMAL_BUFFER_HEADER_T* buffer);
|
||||
|
||||
@@ -648,6 +648,12 @@ int VAAPIRenderer::getDecoderColorspace()
|
||||
return COLORSPACE_REC_601;
|
||||
}
|
||||
|
||||
int VAAPIRenderer::getDecoderColorRange()
|
||||
{
|
||||
// vaPutSurface() assumes limited range
|
||||
return COLOR_RANGE_LIMITED;
|
||||
}
|
||||
|
||||
int VAAPIRenderer::getDecoderCapabilities()
|
||||
{
|
||||
int caps = 0;
|
||||
|
||||
@@ -64,6 +64,7 @@ public:
|
||||
virtual void renderFrame(AVFrame* frame) override;
|
||||
virtual bool isDirectRenderingSupported() override;
|
||||
virtual int getDecoderColorspace() override;
|
||||
virtual int getDecoderColorRange() override;
|
||||
virtual int getDecoderCapabilities() override;
|
||||
virtual void notifyOverlayUpdated(Overlay::OverlayType) override;
|
||||
virtual bool notifyWindowChanged(PWINDOW_STATE_CHANGE_INFO) override;
|
||||
|
||||
@@ -470,6 +470,12 @@ int VDPAURenderer::getDecoderColorspace()
|
||||
return COLORSPACE_REC_601;
|
||||
}
|
||||
|
||||
int VDPAURenderer::getDecoderColorRange()
|
||||
{
|
||||
// The default VdpVideoMixer CSC matrix assumes limited range
|
||||
return COLOR_RANGE_LIMITED;
|
||||
}
|
||||
|
||||
int VDPAURenderer::getDecoderCapabilities()
|
||||
{
|
||||
return CAPABILITY_REFERENCE_FRAME_INVALIDATION_HEVC |
|
||||
|
||||
@@ -19,6 +19,7 @@ public:
|
||||
virtual void waitToRender() override;
|
||||
virtual void renderFrame(AVFrame* frame) override;
|
||||
virtual int getDecoderColorspace() override;
|
||||
virtual int getDecoderColorRange() override;
|
||||
virtual int getDecoderCapabilities() override;
|
||||
|
||||
private:
|
||||
|
||||
@@ -457,6 +457,11 @@ public:
|
||||
return COLORSPACE_REC_601;
|
||||
}
|
||||
|
||||
int getDecoderColorRange() override
|
||||
{
|
||||
return COLOR_RANGE_LIMITED;
|
||||
}
|
||||
|
||||
int getDecoderCapabilities() override
|
||||
{
|
||||
return CAPABILITY_REFERENCE_FRAME_INVALIDATION_HEVC |
|
||||
|
||||
Reference in New Issue
Block a user