hevcd_if.h 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. #ifndef _HEVC_DECODE_IF_H_
  2. #define _HEVC_DECODE_IF_H_
  3. /* #include "hevcd.h" */
  4. /* #include "hevc_common_if.h" */
  5. #include "vcodec_if_v2.h"
  6. #include "vcodec_dec_demuxer_if_v2.h"
  7. #define MAX_DECODE_BUFFERS 15
  8. #define _FILE_IO_
  9. /* extern int frame_num; */
  10. typedef struct {
  11. void (*hevc_pfnMalloc)(IN HANDLE /* hDrv */,
  12. IN unsigned int /* u4Size */,
  13. IN unsigned int /*u4AlignSize*/,
  14. IN VCODEC_MEMORY_TYPE_T /* fgCacheable */,
  15. OUT VCODEC_BUFFER_T * /* prBuf */
  16. ); /* buffer address must cache line align */
  17. void (*pfnFree)(IN HANDLE /* hDrv */,
  18. IN VCODEC_BUFFER_T * /* prBuf */
  19. ); /* same memory type with malloc */
  20. } hevcd_callback_t;
  21. typedef struct {
  22. unsigned char *buffer_origin;
  23. unsigned char *luma;
  24. unsigned char *cb, *cr;
  25. int y_stride, uv_stride;
  26. int width, height;
  27. int ref_count;
  28. } decode_picture_buffer_info_t;
  29. typedef struct {
  30. unsigned char *start_address;
  31. int length;
  32. } HEVC_ACCESS_UNIT_T;
  33. #define MAX_ACCESS_UNIT_NUMBER 32
  34. typedef struct {
  35. HEVC_ACCESS_UNIT_T au_list[MAX_ACCESS_UNIT_NUMBER];
  36. int au_number;
  37. } HEVC_DECODE_INP_T;
  38. typedef struct {
  39. unsigned char *y;
  40. unsigned char *u;
  41. unsigned char *v;
  42. int y_stride;
  43. int uv_stride;
  44. int width;
  45. int height;
  46. } HEVC_DECODE_PICTURE_T;
  47. typedef struct {
  48. int width;
  49. int height;
  50. } HEVC_PICTURE_INFO_T;
  51. VCODEC_DEC_ERROR_T HEVCDecoderGetMemoryRequired(
  52. VCODEC_DEC_INPUT_T * prInput,
  53. VCODEC_MEMORY_SIZE_T *prMemeorySize,
  54. VCODEC_DEC_OUTPUT_BUFFER_PARAM_T *prYUVBufferParameter,
  55. VCODEC_MEMORY_TYPE_T * prBitStreamBufferMemType
  56. );
  57. VCODEC_DEC_ERROR_T HEVCDecoderGetMemoryRequiredExtend(
  58. VCODEC_DEC_INPUT_T * prInput,
  59. VCODEC_MEMORY_SIZE_T *prMemeorySize,
  60. VCODEC_DEC_OUTPUT_BUFFER_PARAM_T *prYUVBufferParameter,
  61. OUT VCODEC_DEC_INPUT_BUFFER_PARAM_T * prBitStreamParam,
  62. INOUT void *prExtra
  63. );
  64. VCODEC_DEC_ERROR_T HEVCDecoderInitAdapt(IN HANDLE hCodec);
  65. VCODEC_DEC_ERROR_T HEVCDecoderDeInitAdapt(IN HANDLE hCodec);
  66. VCODEC_DEC_ERROR_T HEVCDecoderOpenAdapt(
  67. IN HANDLE hDrv ,
  68. IN VCODEC_DEC_CALLBACK_T * pfnCallback,
  69. IN void *prOpenSetting, OUT HANDLE * hCodec
  70. );
  71. VCODEC_DEC_ERROR_T HEVCDecoderStartAdapt(IN HANDLE hCodec, IN VCODEC_DEC_INPUT_T * prBufferHeader);
  72. VCODEC_DEC_ERROR_T HEVCDecoderCloseAdapt(IN HANDLE hCodec);
  73. VCODEC_DEC_ERROR_T HEVCDecoderGetNextDisplay(IN HANDLE hCodec, OUT VCODEC_DEC_PRIVATE_OUTPUT_T * prPrivateOutput);
  74. VCODEC_DEC_ERROR_T HEVCDecoderGetParameterAdapt(IN HANDLE hCodec, IN VCODEC_DEC_PARAM_TYPE_T eCmd, INOUT void *pParam);
  75. VCODEC_DEC_ERROR_T HEVCDecoderSetParameterAdapt(IN HANDLE hCodec, IN VCODEC_DEC_PARAM_TYPE_T eCmd, INOUT void *pParam);
  76. extern VCODEC_DEC_API_T *GetHEVCDecoderAPI(void);
  77. VCODEC_DEC_API_T *GetHEVCDecoderAPI(void);
  78. #endif