2018-07-21 20:22:00 -07:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include "decoder.h"
|
2022-05-21 00:10:49 -05:00
|
|
|
#include "overlaymanager.h"
|
2018-07-21 20:22:00 -07:00
|
|
|
|
|
|
|
#include <SLVideo.h>
|
|
|
|
|
2022-05-21 00:10:49 -05:00
|
|
|
class SLVideoDecoder : public IVideoDecoder, public Overlay::IOverlayRenderer
|
2018-07-21 20:22:00 -07:00
|
|
|
{
|
|
|
|
public:
|
2019-02-12 18:42:53 -08:00
|
|
|
SLVideoDecoder(bool testOnly);
|
2018-07-21 20:22:00 -07:00
|
|
|
virtual ~SLVideoDecoder();
|
2022-01-29 00:59:04 -06:00
|
|
|
virtual bool initialize(PDECODER_PARAMETERS params) override;
|
|
|
|
virtual bool isHardwareAccelerated() override;
|
|
|
|
virtual bool isAlwaysFullScreen() override;
|
|
|
|
virtual int getDecoderCapabilities() override;
|
|
|
|
virtual int getDecoderColorspace() override;
|
|
|
|
virtual QSize getDecoderMaxResolution() override;
|
|
|
|
virtual int submitDecodeUnit(PDECODE_UNIT du) override;
|
2022-05-21 00:10:49 -05:00
|
|
|
virtual void notifyOverlayUpdated(Overlay::OverlayType) override;
|
2018-07-21 20:22:00 -07:00
|
|
|
|
|
|
|
// Unused since rendering is done directly from the decode thread
|
2022-01-29 00:59:04 -06:00
|
|
|
virtual void renderFrameOnMainThread() override {}
|
2018-07-21 20:22:00 -07:00
|
|
|
|
2022-01-28 22:10:50 -06:00
|
|
|
// HDR is not supported by SLVideo
|
2022-01-29 00:59:04 -06:00
|
|
|
virtual void setHdrMode(bool) override {}
|
|
|
|
virtual bool isHdrSupported() override {
|
|
|
|
return false;
|
|
|
|
}
|
2022-01-28 22:10:50 -06:00
|
|
|
|
2018-07-21 20:22:00 -07:00
|
|
|
private:
|
2019-04-28 11:01:54 -07:00
|
|
|
static void slLogCallback(void* context, ESLVideoLog logLevel, const char* message);
|
|
|
|
|
2018-07-21 20:22:00 -07:00
|
|
|
CSLVideoContext* m_VideoContext;
|
|
|
|
CSLVideoStream* m_VideoStream;
|
2022-05-21 00:10:49 -05:00
|
|
|
CSLVideoOverlay* m_Overlay;
|
|
|
|
|
|
|
|
int m_ViewportWidth;
|
|
|
|
int m_ViewportHeight;
|
2018-07-21 20:22:00 -07:00
|
|
|
};
|