#ifndef VIDEOOUT_COREVIDEO_H_
#define VIDEOOUT_COREVIDEO_H_

#include "videooutbase.h"

class VideoOutputCoreVideoRep;

class VideoOutputCoreVideo : public VideoOutput
{
  public:
    VideoOutputCoreVideo();
   ~VideoOutputCoreVideo();

    bool Init(int width, int height, float aspect, WId winid,
              int winx, int winy, int winw, int winh, WId embedid = 0);
    void PrepareFrame(VideoFrame *buffer, FrameScanType t);
    void Show(FrameScanType);

    void InputChanged(int width, int height, float aspect,
                      MythCodecID av_codec_id);
    void VideoAspectRatioChanged(float aspect);
    void Zoom(int direction);

    void EmbedInWidget(WId wid, int x, int y, int w, int h);
    void StopEmbedding(void);

    int GetRefreshRate(void);

    void DrawUnusedRects(bool sync = true);

    void UpdatePauseFrame(void);
    void ProcessFrame(VideoFrame *frame, OSD *osd,
                      FilterChain *filterList,
                      NuppelVideoPlayer *pipPlayer);

    static bool IsCoreVideoSupported();
    
  private:
    VideoFrame      mPauseFrame;

    VideoOutputCoreVideoRep *mCoreVideoRep;
};

#endif
