#pragma once #include "ivideorenderinterface.h" #if defined(_MSC_VER) #include #include #include #include #include #else #include #include #include #include #include #endif //_MSC_VER class VideoRenderImpl : public IVideoRender { public: VideoRenderImpl(videorender_callback_t* pCallback); int VideoRenderSetParam(videorender_param_t* tparam); int StartVideoRender(); int StopVideoRender(); void VideoRenderDestroy(); int ShowVideoWindow(); int HideVideoWindow(); int RenderVideoFrame(video_frame* pframe, RVC_RendererFlip eFlipType = RVC_FLIP_NONE); int SetWindowProperty(videorender_param_t* tparam); SDL_PixelFormatEnum GetPixelFormat(); bool GetReFreshFlag(); void RenderLog(render_loglevel elevel, const char* fmt, ...); private: ~VideoRenderImpl(); private: SDL_Window* m_sdl_window; SDL_Texture* m_rending_texture; SDL_Renderer* m_renderer; videorender_callback_t m_callback; SDL_Thread *m_refresh_thread; bool m_refresh_flag; int m_x; int m_y; uint32_t m_videowidth; uint32_t m_videoheight; uint32_t m_width; uint32_t m_height; uint32_t m_flags; int m_videoformat; bool m_bmoveable; };