00001 #ifndef VIDEOOUTPUTOPENGLVAAPI_H
00002 #define VIDEOOUTPUTOPENGLVAAPI_H
00003
00004 #include "videoout_opengl.h"
00005
00006 class VAAPIContext;
00007
00008 class VideoOutputOpenGLVAAPI : public VideoOutputOpenGL
00009 {
00010 public:
00011 static void GetRenderOptions(render_opts &opts);
00012
00013 VideoOutputOpenGLVAAPI();
00014 ~VideoOutputOpenGLVAAPI();
00015
00016 bool Init(int width, int height, float aspect, WId winid,
00017 const QRect &win_rect, MythCodecID codec_id);
00018 bool CreateVAAPIContext(QSize size);
00019 void DeleteVAAPIContext(void);
00020 bool CreateBuffers(void);
00021 virtual void* GetDecoderContext(unsigned char* buf, uint8_t*& id);
00022 uint8_t* GetSurfaceIDPointer(void* buf);
00023 void SetProfile(void);
00024 void TearDown(void);
00025 bool InputChanged(const QSize &input_size, float aspect,
00026 MythCodecID av_codec_id, void *codec_private,
00027 bool &aspect_only);
00028 virtual void UpdatePauseFrame(int64_t &disp_timecode);
00029 void ProcessFrame(VideoFrame *frame, OSD *osd,
00030 FilterChain *filterList,
00031 const PIPMap &pipPlayers,
00032 FrameScanType scan);
00033 bool ApproveDeintFilter(const QString& filtername) const;
00034 bool SetDeinterlacingEnabled(bool enable);
00035 bool SetupDeinterlace(bool i, const QString& ovrf="");
00036 virtual void InitPictureAttributes(void);
00037 virtual int SetPictureAttribute(PictureAttribute attribute, int newValue);
00038
00039 static QStringList GetAllowedRenderers(MythCodecID myth_codec_id,
00040 const QSize &video_dim);
00041 static MythCodecID GetBestSupportedCodec(uint width, uint height,
00042 const QString &decoder,
00043 uint stream_type,
00044 bool no_acceleration,
00045 PixelFormat &pix_fmt);
00046
00047 private:
00048 VAAPIContext *m_ctx;
00049 void *m_pauseBuffer;
00050 };
00051 #endif // VIDEOOUTPUTOPENGLVAAPI_H
00052