libvideorender.h 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. #pragma once
  2. #include "ivideorenderinterface.h"
  3. #if defined(_MSC_VER)
  4. #include <SDL.h>
  5. #include <SDL_video.h>
  6. #include <SDL_render.h>
  7. #include <SDL_rect.h>
  8. #include <SDL_mutex.h>
  9. #else
  10. #include <SDL2/SDL.h>
  11. #include <SDL2/SDL_video.h>
  12. #include <SDL2/SDL_render.h>
  13. #include <SDL2/SDL_rect.h>
  14. #include <SDL2/SDL_mutex.h>
  15. #endif //_MSC_VER
  16. class VideoRenderImpl : public IVideoRender
  17. {
  18. public:
  19. VideoRenderImpl(videorender_callback_t* pCallback);
  20. ~VideoRenderImpl();
  21. int VideoRenderSetParam(videorender_param_t* tparam);
  22. int StartVideoRender();
  23. int StopVideoRender();
  24. void VideoRenderDestroy();
  25. int ShowVideoWindow();
  26. int HideVideoWindow();
  27. int RenderVideoFrame(video_frame* pframe, RVC_RendererFlip eFlipType = RVC_FLIP_NONE);
  28. int SetWindowProperty(videorender_param_t* tparam);
  29. SDL_PixelFormatEnum GetPixelFormat();
  30. void ConVert24to32(unsigned char* image_in, unsigned char* image_out, int w, int h);
  31. bool GetReFreshFlag();
  32. void RenderLog(render_loglevel elevel, const char* fmt, ...);
  33. private:
  34. SDL_Window* m_sdl_window;
  35. SDL_Texture* m_rending_texture;
  36. SDL_Renderer* m_renderer;
  37. videorender_callback_t m_callback;
  38. SDL_Thread *m_refresh_thread;
  39. bool m_refresh_flag;
  40. int m_cx;
  41. int m_cy;
  42. uint32_t m_videowidth;
  43. uint32_t m_videoheight;
  44. uint32_t m_width;
  45. uint32_t m_height;
  46. uint32_t m_flags;
  47. int m_videoformat;
  48. bool m_bmoveable;
  49. };