mirror of
https://github.com/moonlight-stream/moonlight-qt.git
synced 2026-08-27 04:37:41 +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()
|
int DXVA2Renderer::getDecoderCapabilities()
|
||||||
{
|
{
|
||||||
return CAPABILITY_REFERENCE_FRAME_INVALIDATION_HEVC |
|
return CAPABILITY_REFERENCE_FRAME_INVALIDATION_HEVC |
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ public:
|
|||||||
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 getDecoderColorspace() override;
|
virtual int getDecoderColorspace() override;
|
||||||
|
virtual int getDecoderColorRange() override;
|
||||||
virtual int getDecoderCapabilities() override;
|
virtual int getDecoderCapabilities() override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|||||||
@@ -242,6 +242,12 @@ int MmalRenderer::getDecoderColorspace()
|
|||||||
return COLORSPACE_REC_709;
|
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)
|
void MmalRenderer::InputPortCallback(MMAL_PORT_T*, MMAL_BUFFER_HEADER_T* buffer)
|
||||||
{
|
{
|
||||||
mmal_buffer_header_release(buffer);
|
mmal_buffer_header_release(buffer);
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ public:
|
|||||||
virtual enum AVPixelFormat getPreferredPixelFormat(int videoFormat) override;
|
virtual enum AVPixelFormat getPreferredPixelFormat(int videoFormat) override;
|
||||||
virtual int getRendererAttributes() override;
|
virtual int getRendererAttributes() override;
|
||||||
virtual int getDecoderColorspace() override;
|
virtual int getDecoderColorspace() override;
|
||||||
|
virtual int getDecoderColorRange() 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);
|
||||||
|
|||||||
@@ -648,6 +648,12 @@ int VAAPIRenderer::getDecoderColorspace()
|
|||||||
return COLORSPACE_REC_601;
|
return COLORSPACE_REC_601;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int VAAPIRenderer::getDecoderColorRange()
|
||||||
|
{
|
||||||
|
// vaPutSurface() assumes limited range
|
||||||
|
return COLOR_RANGE_LIMITED;
|
||||||
|
}
|
||||||
|
|
||||||
int VAAPIRenderer::getDecoderCapabilities()
|
int VAAPIRenderer::getDecoderCapabilities()
|
||||||
{
|
{
|
||||||
int caps = 0;
|
int caps = 0;
|
||||||
|
|||||||
@@ -64,6 +64,7 @@ public:
|
|||||||
virtual void renderFrame(AVFrame* frame) override;
|
virtual void renderFrame(AVFrame* frame) override;
|
||||||
virtual bool isDirectRenderingSupported() override;
|
virtual bool isDirectRenderingSupported() override;
|
||||||
virtual int getDecoderColorspace() override;
|
virtual int getDecoderColorspace() override;
|
||||||
|
virtual int getDecoderColorRange() override;
|
||||||
virtual int getDecoderCapabilities() override;
|
virtual int getDecoderCapabilities() override;
|
||||||
virtual void notifyOverlayUpdated(Overlay::OverlayType) override;
|
virtual void notifyOverlayUpdated(Overlay::OverlayType) override;
|
||||||
virtual bool notifyWindowChanged(PWINDOW_STATE_CHANGE_INFO) override;
|
virtual bool notifyWindowChanged(PWINDOW_STATE_CHANGE_INFO) override;
|
||||||
|
|||||||
@@ -470,6 +470,12 @@ int VDPAURenderer::getDecoderColorspace()
|
|||||||
return COLORSPACE_REC_601;
|
return COLORSPACE_REC_601;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int VDPAURenderer::getDecoderColorRange()
|
||||||
|
{
|
||||||
|
// The default VdpVideoMixer CSC matrix assumes limited range
|
||||||
|
return COLOR_RANGE_LIMITED;
|
||||||
|
}
|
||||||
|
|
||||||
int VDPAURenderer::getDecoderCapabilities()
|
int VDPAURenderer::getDecoderCapabilities()
|
||||||
{
|
{
|
||||||
return CAPABILITY_REFERENCE_FRAME_INVALIDATION_HEVC |
|
return CAPABILITY_REFERENCE_FRAME_INVALIDATION_HEVC |
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ public:
|
|||||||
virtual void waitToRender() override;
|
virtual void waitToRender() override;
|
||||||
virtual void renderFrame(AVFrame* frame) override;
|
virtual void renderFrame(AVFrame* frame) override;
|
||||||
virtual int getDecoderColorspace() override;
|
virtual int getDecoderColorspace() override;
|
||||||
|
virtual int getDecoderColorRange() override;
|
||||||
virtual int getDecoderCapabilities() override;
|
virtual int getDecoderCapabilities() override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|||||||
@@ -457,6 +457,11 @@ public:
|
|||||||
return COLORSPACE_REC_601;
|
return COLORSPACE_REC_601;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int getDecoderColorRange() override
|
||||||
|
{
|
||||||
|
return COLOR_RANGE_LIMITED;
|
||||||
|
}
|
||||||
|
|
||||||
int getDecoderCapabilities() override
|
int getDecoderCapabilities() override
|
||||||
{
|
{
|
||||||
return CAPABILITY_REFERENCE_FRAME_INVALIDATION_HEVC |
|
return CAPABILITY_REFERENCE_FRAME_INVALIDATION_HEVC |
|
||||||
|
|||||||
Reference in New Issue
Block a user