⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mp4vdec.h

📁 基于Linux的ffmepg decoder
💻 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 + -