carlink_video.h 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. #ifndef __CARLINK_VIDEO_H
  2. #define __CARLINK_VIDEO_H
  3. #include <FreeRTOS.h>
  4. #include "board.h"
  5. #include "list.h"
  6. #define H264DEC_INBUF_SIZE (LCD_WIDTH * LCD_HEIGHT * 2)
  7. #define H264DEC_DISP_COUNTS (2)
  8. #define H264_FRAME_FIFO_COUNT (16)
  9. #define H264_FRAME_BUF_SIZE (0x80000)
  10. typedef struct h264_frame_s {
  11. char* buf;
  12. char* cur;
  13. unsigned int len;
  14. unsigned int frame_id;
  15. ListItem_t entry;
  16. } video_frame_s;
  17. video_frame_s* get_h264_frame_buf(void);
  18. void notify_h264_frame_ready(video_frame_s** frame);
  19. void set_h264_frame_free(video_frame_s* frame);
  20. void h264_dec_ctx_init();
  21. int carlink_ey_video_init();
  22. int get_carlink_video_width(void);
  23. int get_carlink_video_height(void);
  24. int get_carlink_video_fps(void);
  25. void set_carlink_video_info(int w, int h, int fps);//set h264 video stream info from phone
  26. void set_carlink_display_info(int x, int y, int w, int h);//set carlink show area in lcd
  27. void set_carlink_display_state(int on); // on: 1.display carlink; 0. display native ui
  28. #define WRITE_BE32(ptr, val) \
  29. do { \
  30. uint8_t* __ptr = (uint8_t*)(ptr); \
  31. *__ptr++ = (val) >> 24; \
  32. *__ptr++ = ((val) & 0x00FF0000) >> 16; \
  33. *__ptr++ = ((val) & 0x0000FF00) >> 8; \
  34. *__ptr = ((val) & 0x000000FF); \
  35. } while (0)
  36. #define WRITE_BE16(ptr, val) \
  37. do { \
  38. uint8_t* __ptr = (uint8_t*)(ptr); \
  39. *__ptr++ = (val) >> 8; \
  40. *__ptr = (val) & 0x00FF; \
  41. } while (0)
  42. #define READ_BE32(ptr, dest) \
  43. do { \
  44. uint8_t* __ptr = (uint8_t*)(ptr); \
  45. (dest) = (*__ptr++) << 24; \
  46. (dest) |= (*__ptr++) << 16; \
  47. (dest) |= (*__ptr++) << 8; \
  48. (dest) |= *__ptr; \
  49. } while (0)
  50. #define READ_BE16(ptr, dest) \
  51. do { \
  52. uint8_t* __ptr = (uint8_t*)(ptr); \
  53. (dest) = (*__ptr++) << 8; \
  54. (dest) |= *__ptr; \
  55. } while (0)
  56. #define WRITE_LE32(ptr, val) \
  57. do { \
  58. uint8_t* __ptr = (uint8_t*)(ptr); \
  59. *__ptr++ = ((val) & 0x000000FF); \
  60. *__ptr++ = ((val) & 0x0000FF00) >> 8; \
  61. *__ptr++ = ((val) & 0x00FF0000) >> 16; \
  62. *__ptr = (val) >> 24; \
  63. } while (0)
  64. #define WRITE_LE16(ptr, val) \
  65. do { \
  66. uint8_t* __ptr = (uint8_t*)(ptr); \
  67. *__ptr++ = (val) & 0x00FF; \
  68. *__ptr = (val) >> 8; \
  69. } while (0)
  70. #define READ_LE32(ptr, dest) \
  71. do { \
  72. uint8_t* __ptr = (uint8_t*)(ptr); \
  73. (dest) = *__ptr; \
  74. (dest) |= (*__ptr++) << 8; \
  75. (dest) |= (*__ptr++) << 16; \
  76. (dest) |= (*__ptr++) << 24; \
  77. } while (0)
  78. #define READ_LE16(ptr, dest) \
  79. do { \
  80. uint8_t* __ptr = (uint8_t*)(ptr); \
  81. (dest) = *__ptr; \
  82. (dest) |= (*__ptr++) << 8; \
  83. } while (0)
  84. #endif