libvideorender.h 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  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. int VideoRenderSetParam(videorender_param_t* tparam);
  21. int StartVideoRender();
  22. int StopVideoRender();
  23. void VideoRenderDestroy();
  24. int ShowVideoWindow();
  25. int HideVideoWindow();
  26. int RenderVideoFrame(video_frame* pframe, RVC_RendererFlip eFlipType = RVC_FLIP_NONE);
  27. int SetWindowProperty(videorender_param_t* tparam);
  28. SDL_PixelFormatEnum GetPixelFormat();
  29. bool GetReFreshFlag();
  30. void RenderLog(render_loglevel elevel, const char* fmt, ...);
  31. private:
  32. ~VideoRenderImpl();
  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_x;
  41. int m_y;
  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. };