?? mp4vdec.h
字號:
#ifndef _MP4VDEC_H_ #define _MP4VDEC_H_ #include "portab.h" // user define, start // define MPEG4 decoder output format, select from the following avaiable format // RGB888 not Work, due to bank1 memory size too small & "DT" module can not addressing over 2K// #define OUTPUT_FMT OUTPUT_FMT_RGB555// #define OUTPUT_FMT OUTPUT_FMT_RGB565// #define OUTPUT_FMT OUTPUT_FMT_RGB888 #define OUTPUT_FMT OUTPUT_FMT_CbYCrY// #define OUTPUT_FMT OUTPUT_FMT_YUV // user define, end // avaiable format, start #define OUTPUT_FMT_CbYCrY 0 #define OUTPUT_FMT_RGB555 1 #define OUTPUT_FMT_RGB888 2 #define OUTPUT_FMT_RGB565 3 #define OUTPUT_FMT_YUV 4 // avaiable format, end #define FARADAY_ERR_FAIL -1 // Operation failed. #define FARADAY_ERR_OK 0 // Operation succeed. #define FARADAY_ERR_MEMORY 1 // Operation failed (out of memory). #define FARADAY_ERR_API 2 // Operation failed (API version error). typedef uint32_t (* REQUEST_BS_PTR) (uint8_t * const pu8bs_buf, uint32_t const u32byte_num); typedef void (* SEM_WAIT_PTR)(void * pSem); typedef void (* SEM_SIGNAL_PTR)(void * pSem); typedef void *(* DMA_MALLOC_PTR)(uint32_t size, uint8_t align_size, uint8_t reserved_size, void ** phy_ptr); typedef void (* DMA_FREE_PTR)(void * virt_ptr, void * phy_ptr);/***************************************************************************** * Decoder structures ****************************************************************************/ typedef struct { uint32_t u32API_version; uint32_t *pu32BaseAddr; void * pvSemaphore; uint32_t u32MaxWidth; uint32_t u32MaxHeight; uint32_t u32BSBufSize; uint8_t * pu8FrameBaseAddr_phy; // output frame buffer, must 8 bytes align. uint8_t * pu8FrameBaseAddr_U_phy; // frame buffer (U) if output format is yuv420, must 8 bytes align. uint8_t * pu8FrameBaseAddr_V_phy; // frame buffer (V) if output format is yuv420, must 8 bytes align. uint32_t u32FrameWidth; // output frame width, no matter decoded image size // "set to 0", means equal to decoded image width uint32_t u32FrameHeight; // output frame height, no matter decoded image size // "set to 0", means equal to decoded image height uint32_t u32CacheAlign; DMA_MALLOC_PTR pfnDmaMalloc; DMA_FREE_PTR pfnDmaFree; SEM_WAIT_PTR pfnSemWait; SEM_SIGNAL_PTR pfnSemSignal; REQUEST_BS_PTR pfnRequestBS; } FMP4_DEC_PARAM; typedef struct { uint32_t u32VopWidth; uint32_t u32VopHeight; uint32_t u32UsedBytes; uint8_t * pu8FrameBaseAddr_phy; // output frame buffer uint8_t * pu8FrameBaseAddr_U_phy; // frame buffer (U) if output format is yuv420 uint8_t * pu8FrameBaseAddr_V_phy; // frame buffer (V) if output format is yuv420 } FMP4_DEC_RESULT; typedef struct { int general; void *bitstream; int length; void *image; int stride; // ben-mark-04'10/21: int colorspace; } XVID_DEC_FRAME; // This struct is used for per slice rendering typedef struct { void *y,*u,*v; int stride_y, stride_u,stride_v; } XVID_DEC_PICTURE; typedef struct { int x; int y; } VECTOR; #ifdef MP4VDEC_GLOBALS #define MP4VDEC_EXT #else #define MP4VDEC_EXT extern #endif MP4VDEC_EXT int32_t Mp4VDec_Init(FMP4_DEC_PARAM * ptParam, void ** pptDecHandle); MP4VDEC_EXT uint32_t Mp4VDec_QueryEmptyBuffer (void * ptDecHandle); MP4VDEC_EXT uint32_t Mp4VDec_QueryFilledBuffer (void * ptDecHandle); MP4VDEC_EXT void Mp4VDec_InvalidBS (void * ptDecHandle); MP4VDEC_EXT int32_t Mp4VDec_FillBuffer(void * ptDecHandle, uint8_t * ptBuf, uint32_t u32BufSize); MP4VDEC_EXT void Mp4VDec_EndOfData (void * ptDecHandle); MP4VDEC_EXT void Mp4VDec_SetOutputAddr (void * ptDecHandle, uint8_t * pu8output_phy, uint8_t * pu8output_u_phy, uint8_t * pu8output_v_phy); MP4VDEC_EXT int32_t Mp4VDec_OneFrame(void * ptDecHandle, FMP4_DEC_RESULT * ptResult); MP4VDEC_EXT void Mp4VDec_Release(void * ptDecHandle); MP4VDEC_EXT void Mp4VDec_Reinit(void * ptDecHandle);#ifdef __cplusplus}#endif#endif
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -