ivideorenderinterface.h 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  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. int ivideoformat;
  30. bool bmoveable;
  31. }videorender_param_t;
  32. enum render_loglevel {
  33. RENDER_LOG_DEBUG,
  34. RENDER_LOG_INFO,
  35. RENDER_LOG_WARN,
  36. RENDER_LOG_ERROR,
  37. RENDER_LOG_FATAL
  38. };
  39. typedef struct videorender_callback_s
  40. {
  41. void (*debug)(render_loglevel elevel, void* user_data, const char* fmt, va_list arg);
  42. void (*onrenderfailed)();
  43. void (*onvideorenderexcption)();
  44. void* user_data;
  45. }videorender_callback_t;
  46. class IVideoRender
  47. {
  48. public:
  49. virtual int VideoRenderSetParam(videorender_param_t* tparam) = 0;
  50. virtual int StartVideoRender() = 0;
  51. virtual int StopVideoRender() = 0;
  52. virtual void VideoRenderDestroy() = 0;
  53. virtual int ShowVideoWindow() = 0;
  54. virtual int HideVideoWindow() = 0;
  55. virtual int RenderVideoFrame(video_frame* pframe, RVC_RendererFlip eFlipType = RVC_FLIP_NONE) = 0;
  56. };
  57. extern "C" LIBVIDEORENDER_API IVideoRender* CreateVideoRenderObj(videorender_callback_t* pCallback);
  58. extern "C" LIBVIDEORENDER_API void DestroyVideoRenderObj(IVideoRender* pIVideoRender);
  59. extern "C" LIBVIDEORENDER_API int VideoRender_Init();
  60. extern "C" LIBVIDEORENDER_API int VideoRender_Term();