ARKMirrorRender.h 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. #pragma once
  2. #include "ECMirrorRender.h"
  3. //define compile mode
  4. #define COMPILE_USE_ARK_VIDEO_API 1
  5. #define COMPILE_MFC_STORE_FILE_NO_ARK_API 2
  6. #define COMPILE_TEST_ARK_API 3
  7. //define test mode
  8. #define USE_ARK_VIDEO_API 1
  9. #define USE_ARK_DISPLAY_2D_API 2
  10. #define USE_ARK_RAW2D_DISPLAY_API 3
  11. #define ARK1668_MFC_DISPLAY_API 4
  12. #define ARKN141_MFC_DISPLAY_API 5
  13. ///////////////////////////////////////////////////////////////
  14. #define ARK_COMPILE_MODE COMPILE_TEST_ARK_API
  15. //////////////////////////////////////////////////////////////
  16. #if (ARK_COMPILE_MODE == COMPILE_USE_ARK_VIDEO_API)
  17. #include "ark_api.h"
  18. class ARKMirrorRender : public ECMirrorRender
  19. {
  20. public:
  21. ARKMirrorRender();
  22. virtual ~ARKMirrorRender();
  23. virtual void initialize();
  24. virtual void play(const void *data, int len, MirrorDirection direction = LANDSCAPE);
  25. virtual void show();
  26. virtual void hide();
  27. virtual void release();
  28. private:
  29. MirrorDirection cur_direction;
  30. video_handle * handle_vid;
  31. };
  32. #else
  33. #include <gc_hal.h>
  34. #include <gc_hal_raster.h>
  35. #include "mfcapi.h"
  36. #include "memalloc.h"
  37. #include "ark_api.h"
  38. /*!d
  39. * \brief 亿连解码渲染接口
  40. */
  41. class ARKMirrorRender : public ECMirrorRender
  42. {
  43. public:
  44. ARKMirrorRender();
  45. virtual ~ARKMirrorRender();
  46. /*!
  47. * \brief 初始化解码器
  48. * 根据实现需要内部可直接使用成员变量中的屏幕和镜像分辨率
  49. */
  50. virtual void initialize();
  51. /*!
  52. * \brief 解码渲染
  53. * \param[in] data 镜像数据
  54. * \param[in] len 镜像数据长度
  55. * \param[in] direction 镜像的显示方向,即横屏或竖屏
  56. */
  57. virtual void play(const void *data, int len, MirrorDirection direction = LANDSCAPE);
  58. /*!
  59. * \brief 显示镜像画面
  60. */
  61. virtual void show();
  62. /*!
  63. * \brief 隐层镜像画面
  64. */
  65. virtual void hide();
  66. /*!
  67. * \brief 释放解码器
  68. */
  69. virtual void release();
  70. private:
  71. int alloc_buffer(void);
  72. void free_buffer(void);
  73. void data_process(unsigned int src_addr, unsigned int dst_addr, MirrorDirection direction);
  74. void render(unsigned int addr);
  75. bool initialized;
  76. int fd_memalloc;
  77. //int fd_fb;
  78. unsigned int last_display_addr;
  79. int first_show;
  80. int dec_first_frame;
  81. int rotate_buffer_index;
  82. int out_width;
  83. int out_height;
  84. MirrorDirection cur_direction;
  85. OutFrameBuffer out_buffer;
  86. DWLLinearMem_t in_buffer;
  87. DWLLinearMem_t rotate_buffer[3];
  88. gcoOS g_os;
  89. gcoHAL g_hal;
  90. gco2D g_engine2d;
  91. MFCHandle *handle_mfc;
  92. /**************************USE_ARK_VIDEO_API****************************/
  93. video_handle * handle_vid;
  94. /**************************USE_ARK_2D_API******************************/
  95. ark2d_handle *handle_2d;
  96. disp_handle *handle_display;
  97. memalloc_handle * handle_mem;
  98. };
  99. #endif