Add software fallback for YUV444 using libswscale

This commit is contained in:
Cameron Gutman
2024-08-19 19:20:17 -05:00
parent ea724a05a6
commit 5765c254cd
7 changed files with 157 additions and 38 deletions
@@ -7,6 +7,10 @@
#include "cuda.h"
#endif
extern "C" {
#include <libswscale/swscale.h>
}
class SdlRenderer : public IFFmpegRenderer {
public:
SdlRenderer();
@@ -23,6 +27,8 @@ public:
private:
void renderOverlay(Overlay::OverlayType type);
static void ffNoopFree(void *opaque, uint8_t *data);
int m_VideoFormat;
SDL_Renderer* m_Renderer;
SDL_Texture* m_Texture;
@@ -30,6 +36,11 @@ private:
SDL_Texture* m_OverlayTextures[Overlay::OverlayMax];
SDL_Rect m_OverlayRects[Overlay::OverlayMax];
// Used for CPU conversion of YUV to RGB if needed
bool m_NeedsYuvToRgbConversion;
SwsContext* m_SwsContext;
AVFrame* m_RgbFrame;
SwFrameMapper m_SwFrameMapper;
#ifdef HAVE_CUDA