00001 #ifndef VIDEOOUT_NULLVAAPI_H
00002 #define VIDEOOUT_NULLVAAPI_H
00003
00004 #include "videooutbase.h"
00005
00006 class VAAPIContext;
00007
00008 class VideoOutputNullVAAPI : public VideoOutput
00009 {
00010 public:
00011 static void GetRenderOptions(render_opts &opts);
00012 static QStringList GetAllowedRenderers(MythCodecID myth_codec_id);
00013 VideoOutputNullVAAPI();
00014 ~VideoOutputNullVAAPI();
00015
00016 virtual void* GetDecoderContext(unsigned char* buf, uint8_t*& id);
00017 virtual bool Init(int width, int height, float aspect, WId winid,
00018 const QRect &win_rect, MythCodecID codec_id);
00019 virtual bool InputChanged(const QSize &input_size,
00020 float aspect,
00021 MythCodecID av_codec_id,
00022 void *codec_private,
00023 bool &aspect_only);
00024
00025 virtual bool SetupDeinterlace(bool, const QString &ovrf = "") { return false; }
00026 virtual bool SetDeinterlacingEnabled(bool) { return false; }
00027 virtual bool ApproveDeintFilter(const QString& filtername) const { return false; }
00028 virtual void ReleaseFrame(VideoFrame *frame);
00029 virtual void ProcessFrame(VideoFrame *frame, OSD *osd,
00030 FilterChain *filterList,
00031 const PIPMap &pipPlayers,
00032 FrameScanType scan) {;}
00033 virtual void PrepareFrame(VideoFrame *buffer,
00034 FrameScanType, OSD *osd) {;}
00035 virtual void Show(FrameScanType ) {;}
00036
00037 virtual void Zoom(ZoomDirection direction) {;}
00038 virtual void EmbedInWidget(const QRect &rect) {;}
00039 virtual void StopEmbedding(void) {;}
00040 virtual void DrawUnusedRects(bool sync = true) {;}
00041 virtual void UpdatePauseFrame(int64_t &disp_timecode) {;}
00042 virtual void MoveResizeWindow(QRect ) {;}
00043 virtual bool CanVisualise(AudioPlayer *audio, MythRender *render)
00044 { return false; }
00045 virtual bool SetupVisualisation(AudioPlayer *audio, MythRender *render,
00046 const QString &name) { return false; }
00047 virtual MythPainter *GetOSDPainter(void) { return NULL; }
00048 virtual VideoFrame *GetLastDecodedFrame(void);
00049 virtual VideoFrame *GetLastShownFrame(void);
00050 virtual void DoneDisplayingFrame(VideoFrame *frame);
00051
00052 private:
00053 void TearDown(void);
00054 bool CreateVAAPIContext(QSize size);
00055 void DeleteVAAPIContext(void);
00056 bool InitBuffers(void);
00057 void DeleteBuffers(void);
00058 void DiscardFrame(VideoFrame*);
00059
00060 private:
00061 VAAPIContext *m_ctx;
00062 QMutex m_lock;
00063 VideoBuffers *m_shadowBuffers;
00064 };
00065
00066 #endif // VIDEOOUT_NULLVAAPI_H