From e1603f08083ae3cf8d515b68ca49b4e2a51971a2 Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Mon, 16 Dec 2019 18:02:11 -0800 Subject: [PATCH] Explicitly use Rec 601 for VDPAU --- app/streaming/video/ffmpeg-renderers/vdpau.cpp | 9 +++++++++ app/streaming/video/ffmpeg-renderers/vdpau.h | 1 + 2 files changed, 10 insertions(+) diff --git a/app/streaming/video/ffmpeg-renderers/vdpau.cpp b/app/streaming/video/ffmpeg-renderers/vdpau.cpp index b77dbee0..66871286 100644 --- a/app/streaming/video/ffmpeg-renderers/vdpau.cpp +++ b/app/streaming/video/ffmpeg-renderers/vdpau.cpp @@ -250,6 +250,15 @@ bool VDPAURenderer::needsTestFrame() return true; } +int VDPAURenderer::getDecoderColorspace() +{ + // VDPAU defaults to Rec 601. + // https://http.download.nvidia.com/XFree86/vdpau/doxygen/html/group___vdp_video_mixer.html#ga65580813e9045d94b739ed2bb8b62b46 + // + // AMD and Nvidia GPUs both correctly process Rec 601, so let's not try our luck using a non-default colorspace. + return COLORSPACE_REC_601; +} + void VDPAURenderer::renderFrame(AVFrame* frame) { VdpStatus status; diff --git a/app/streaming/video/ffmpeg-renderers/vdpau.h b/app/streaming/video/ffmpeg-renderers/vdpau.h index 9913143c..c12bc6af 100644 --- a/app/streaming/video/ffmpeg-renderers/vdpau.h +++ b/app/streaming/video/ffmpeg-renderers/vdpau.h @@ -17,6 +17,7 @@ public: virtual bool prepareDecoderContext(AVCodecContext* context) override; virtual void renderFrame(AVFrame* frame) override; virtual bool needsTestFrame() override; + virtual int getDecoderColorspace() override; private: uint32_t m_VideoWidth, m_VideoHeight;