ivideorenderinterface.h 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. #pragma once
  2. #ifdef _WIN32
  3. #ifdef LIBVIDEORENDER_EXPORTS
  4. #define LIBVIDEORENDER_API __declspec(dllexport)
  5. #else
  6. #define LIBVIDEORENDER_API __declspec(dllimport)
  7. #endif
  8. # elif ( defined(__GNUC__) && __GNUC__ >= 4 )
  9. #define LIBVIDEORENDER_API __attribute__((visibility("default")))
  10. #else // RVC_OS_WIN
  11. #define LIBVIDEORENDER_API
  12. #endif // RVC_OS_WIN
  13. #include <stdint.h>
  14. #include <stdarg.h>
  15. typedef enum
  16. {
  17. RVC_FLIP_NONE = 0x00000000, /**< Do not flip */
  18. RVC_FLIP_HORIZONTAL = 0x00000001, /**< flip horizontally */
  19. RVC_FLIP_VERTICAL = 0x00000002 /**< flip vertically */
  20. } RVC_RendererFlip;
  21. struct video_frame;
  22. typedef struct videorender_param_s {
  23. int icx;
  24. int icy;
  25. uint32_t uvideowidth;
  26. uint32_t uvideoheight;
  27. uint32_t uwidth;
  28. uint32_t uheight;
  29. uint32_t uwinflags;
  30. bool bpersonarea;
  31. int ivideoformat;
  32. bool bmoveable;
  33. }videorender_param_t;
  34. enum render_loglevel {
  35. RENDER_LOG_NO,
  36. RENDER_LOG_DEBUG,
  37. RENDER_LOG_INFO,
  38. RENDER_LOG_ERROR
  39. };
  40. typedef struct videorender_callback_s
  41. {
  42. void (*debug)(render_loglevel elevel, void* user_data, const char* fmt, va_list arg);
  43. void (*onrenderfailed)();
  44. void (*onvideorenderexcption)();
  45. void* user_data;
  46. }videorender_callback_t;
  47. class IVideoRender
  48. {
  49. public:
  50. virtual int VideoRenderSetParam(videorender_param_t* tparam) = 0;
  51. virtual int StartVideoRender() = 0;
  52. virtual int StopVideoRender() = 0;
  53. virtual void VideoRenderDestroy() = 0;
  54. virtual int ShowVideoWindow() = 0;
  55. virtual int HideVideoWindow() = 0;
  56. virtual int RenderVideoFrame(video_frame* pframe, RVC_RendererFlip eFlipType = RVC_FLIP_NONE) = 0;
  57. };
  58. extern "C" LIBVIDEORENDER_API IVideoRender* CreateVideoRenderObj(videorender_callback_t* pCallback);
  59. extern "C" LIBVIDEORENDER_API void DestroyVideoRenderObj(IVideoRender* pIVideoRender);
  60. extern "C" LIBVIDEORENDER_API int VideoRender_Init();
  61. extern "C" LIBVIDEORENDER_API int VideoRender_Term();