ivideorenderinterface.h 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  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. typedef struct videorender_callback_s
  35. {
  36. void (*debug)(void* user_data, const char* fmt, va_list arg);
  37. void (*onrenderfailed)();
  38. void (*onvideorenderexcption)();
  39. void* user_data;
  40. }videorender_callback_t;
  41. class IVideoRender
  42. {
  43. public:
  44. virtual int VideoRenderSetParam(videorender_param_t* tparam) = 0;
  45. virtual int StartVideoRender() = 0;
  46. virtual int StopVideoRender() = 0;
  47. virtual void VideoRenderDestroy() = 0;
  48. virtual int ShowVideoWindow() = 0;
  49. virtual int HideVideoWindow() = 0;
  50. virtual int RenderVideoFrame(video_frame* pframe, RVC_RendererFlip eFlipType = RVC_FLIP_NONE) = 0;
  51. };
  52. extern "C" LIBVIDEORENDER_API IVideoRender* CreateVideoRenderObj(videorender_callback_t* pCallback);
  53. extern "C" LIBVIDEORENDER_API void DestroyVideoRenderObj(IVideoRender* pIVideoRender);
  54. extern "C" LIBVIDEORENDER_API int VideoRender_Init();
  55. extern "C" LIBVIDEORENDER_API int VideoRender_Term();