mfcapi.h 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. #ifndef __MFCAPI_H__
  2. #define __MFCAPI_H__
  3. #ifdef __cplusplus
  4. extern "C" {
  5. #endif
  6. #include "dwl.h"
  7. #define RAW_STRM_TYPE_H264 104
  8. #define RAW_STRM_TYPE_MP2 105
  9. #define RAW_STRM_TYPE_MP4 106
  10. #define RAW_STRM_TYPE_REAL 107
  11. #define RAW_STRM_TYPE_VC1 108
  12. #define RAW_STRM_TYPE_WMV3 109
  13. #define RAW_STRM_TYPE_JPEG 110
  14. #define RAW_STRM_TYPE_SOR 111
  15. #define RAW_STRM_TYPE_VP8 112
  16. #define RAW_STRM_TYPE_VP6 113
  17. #define RAW_STRM_TYPE_RV1020 114
  18. #define RAW_STRM_TYPE_MSMP4 115
  19. #define RAW_STRM_TYPE_MP4_CUSTOM 116
  20. #define RAW_STRM_TYPE_H264_NOREORDER (RAW_STRM_TYPE_H264 | (1 << 8))
  21. #define MAX_OUTFRAME_NUM 8
  22. #define MAX_OUTFRAME_WIDTH 1920
  23. #define MAX_OUTFRAME_HEIGHT 1088
  24. #define MAX_JPEG_OUTFRAME_WIDTH 8192
  25. #define MAX_JPEG_OUTFRAME_HEIGHT 8192
  26. typedef struct
  27. {
  28. u32 yBusAddress;
  29. u32 cbcrBusAddress;
  30. u32 crBusAddress;
  31. const void *pyVirAddress;
  32. const void *pcbcrVirAddress;
  33. const void *pcrVirAddress;
  34. i32 keyPicture;
  35. }FrameBuffer;
  36. typedef struct
  37. {
  38. i32 num;
  39. i32 codedWidth;
  40. i32 codedHeight;
  41. i32 frameWidth;
  42. i32 frameHeight;
  43. FrameBuffer buffer[MAX_OUTFRAME_NUM];
  44. }OutFrameBuffer;
  45. typedef enum{
  46. MFCDEC_RET_OK = 1,
  47. MFCDEC_RET_DECFAIL = 0,
  48. MFCDEC_RET_MEMFAIL = -1,
  49. MFCDEC_RET_LOCKFAIL = -2,
  50. }MFCDecodeRet;
  51. typedef struct
  52. {
  53. void *decInst;
  54. void *ppInst;
  55. int streamType;
  56. int delayInit;
  57. int isCustomMp4;
  58. int outputFormat;
  59. int ppInit;
  60. int ppMemalloc;
  61. int ppOutWidth;
  62. int ppOutHeight;
  63. int ppOutFormat;
  64. int ppOutBufferIndex;
  65. DWLLinearMem_t ppOutBuffer;
  66. }MFCHandle;
  67. typedef enum{
  68. MFCFORMAT_NONE = -1,
  69. MFCFORMAT_YCBCR400 = 0,
  70. MFCFORMAT_YCBCR420_SEMIPLANAR,
  71. MFCFORMAT_YCBCR422_SEMIPLANAR,
  72. MFCFORMAT_YCBCR440,
  73. MFCFORMAT_YCBCR411_SEMIPLANAR,
  74. MFCFORMAT_YCBCR444_SEMIPLANAR,
  75. }MFCFormat;
  76. typedef struct
  77. {
  78. i32 codedWidth;
  79. i32 codedHeight;
  80. i32 frameWidth;
  81. i32 frameHeight;
  82. MFCFormat format;
  83. }MFCStreamInfo;
  84. MFCHandle *mfc_init(int streamType);
  85. int mfc_decode(MFCHandle *handle, DWLLinearMem_t *inBuffer, OutFrameBuffer *outBuffer);
  86. int mfc_decode_eof(MFCHandle *handle, OutFrameBuffer *outBuffer);
  87. void mfc_uninit(MFCHandle *handle);
  88. int mfc_pp_init(MFCHandle *handle, int outWidth, int outHeight, int outFormat);
  89. int mfc_get_stream_info(MFCHandle *handle, DWLLinearMem_t *inBuffer, MFCStreamInfo *info);
  90. #ifdef __cplusplus
  91. }
  92. #endif
  93. #endif