From 8b9b96f422602d0f8091e45737f2c88d85dd66d1 Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Sat, 14 Dec 2019 15:34:48 -0800 Subject: [PATCH] Only enable slicing when CPU decoding --- app/streaming/session.cpp | 9 +-------- app/streaming/video/ffmpeg-renderers/sdlvid.cpp | 10 ++++++++++ app/streaming/video/ffmpeg-renderers/sdlvid.h | 1 + 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/app/streaming/session.cpp b/app/streaming/session.cpp index 0f7e9604..d1a96f17 100644 --- a/app/streaming/session.cpp +++ b/app/streaming/session.cpp @@ -282,7 +282,7 @@ bool Session::populateDecoderProperties(SDL_Window* window) return false; } - m_VideoCallbacks.capabilities |= decoder->getDecoderCapabilities(); + m_VideoCallbacks.capabilities = decoder->getDecoderCapabilities(); m_StreamConfig.colorSpace = decoder->getDecoderColorspace(); @@ -350,13 +350,6 @@ bool Session::initialize() m_VideoCallbacks.setup = drSetup; m_VideoCallbacks.submitDecodeUnit = drSubmitDecodeUnit; - // Slice up to 4 times for parallel decode, once slice per core - int slices = qMin(MAX_SLICES, SDL_GetCPUCount()); - m_VideoCallbacks.capabilities |= CAPABILITY_SLICES_PER_FRAME(slices); - SDL_LogInfo(SDL_LOG_CATEGORY_APPLICATION, - "Encoder configured for %d slices per frame", - slices); - LiInitializeStreamConfiguration(&m_StreamConfig); m_StreamConfig.width = m_Preferences->width; m_StreamConfig.height = m_Preferences->height; diff --git a/app/streaming/video/ffmpeg-renderers/sdlvid.cpp b/app/streaming/video/ffmpeg-renderers/sdlvid.cpp index d335e02e..508c9cc2 100644 --- a/app/streaming/video/ffmpeg-renderers/sdlvid.cpp +++ b/app/streaming/video/ffmpeg-renderers/sdlvid.cpp @@ -127,6 +127,16 @@ bool SdlRenderer::isRenderThreadSupported() return true; } +int SdlRenderer::getDecoderCapabilities() +{ + // Slice up to 4 times for parallel decode, once slice per core + int slices = qMin(MAX_SLICES, SDL_GetCPUCount()); + SDL_LogInfo(SDL_LOG_CATEGORY_APPLICATION, + "Encoder configured for %d slices per frame", + slices); + return CAPABILITY_SLICES_PER_FRAME(slices); +} + bool SdlRenderer::initialize(PDECODER_PARAMETERS params) { Uint32 rendererFlags = SDL_RENDERER_ACCELERATED; diff --git a/app/streaming/video/ffmpeg-renderers/sdlvid.h b/app/streaming/video/ffmpeg-renderers/sdlvid.h index 5c7b2e7f..3c952953 100644 --- a/app/streaming/video/ffmpeg-renderers/sdlvid.h +++ b/app/streaming/video/ffmpeg-renderers/sdlvid.h @@ -13,6 +13,7 @@ public: virtual void renderFrame(AVFrame* frame) override; virtual void notifyOverlayUpdated(Overlay::OverlayType) override; virtual bool isRenderThreadSupported() override; + virtual int getDecoderCapabilities() override; private: void renderOverlay(Overlay::OverlayType type);