libvideorender.h 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  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. void ConVert24to32(unsigned char* image_in, unsigned char* image_out, int w, int h);
  30. bool GetReFreshFlag();
  31. void RenderLog(render_loglevel elevel, const char* fmt, ...);
  32. SDL_Window* GetRenderWindow() { return m_sdl_window; }
  33. private:
  34. ~VideoRenderImpl();
  35. private:
  36. SDL_Window* m_sdl_window;
  37. SDL_Texture* m_rending_texture;
  38. SDL_Renderer* m_renderer;
  39. videorender_callback_t m_callback;
  40. SDL_Thread *m_refresh_thread;
  41. bool m_refresh_flag;
  42. int m_cx;
  43. int m_cy;
  44. uint32_t m_videowidth;
  45. uint32_t m_videoheight;
  46. uint32_t m_width;
  47. uint32_t m_height;
  48. uint32_t m_flags;
  49. int m_videoformat;
  50. bool m_bmoveable;
  51. };