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

📄 me.h

📁 基于Linux的ffmepg decoder
💻 H
字号:
#ifndef __ME_H	#define __ME_H	#include "define.h"	#include "local_mem.h"	#include "decoder.h"	/////////////////////////////////////////////////	// ME command queue offset	#define MV1_BUFF0			0		// 4W	#define MV2_BUFF1			4		// 4W	#define MV_BUFF			8		// 4W	#define MVUV_BUFF			12		// 1W	#define PMV_CMD_ST		13		// 8W	#define PXI_CMD0_ST		21		// 6W	#define PXI_CMD1_ST		27		// 6W	/////////////////////////////////////////////////	// ME command queue bit field	#define mMECMD_TYPE3b(v)	((uint32_t)(v) << 29)	// command (3 bits)	#define MEC_PMVX			0	// Set horizontal prediction vector command	#define MEC_PMVY			1	// Set vertical prediction vector command	#define MEC_SAD			2	// Performs SAD calculation based on a given								// motion vector	#define MEC_DIA			3	// Performs diamond search repeatedly to find								// the best motion vector	#define MEC_REF			4	// Performs half-pixel refine based on previous								// found best motion vector by DIA	#define MEC_MOD			5	// Intra/inter mode decision command	#define MEC_PXI			6	// Performs pixel interpolation of the reference								// block & output the interpolated result block								// to local memory	// MV / MVD  buffer	#define mMV_X8b(v)			((uint32_t)(v) << 20)	#define mMV_Y8b(v)			((uint32_t)(v) << 12)	#define mMV_RADD12b(v)		((uint32_t)(v) & 0xfff)	// MEC_PMVX / MEC_PMVY//	#define MECPMV_DECODE			(BIT28 | BIT27 | BIT26)									// all from ME Buffer									// Prediction vector source									// Specify the source for each candidate predictionvector,									// SRC[0] for MV1, SRC[1] for MV2 and SRC[2] for MV3									// 0: the source is from the MV field in this command									// 1: the source is from the MV buffer	#define mMECPMV_E_BSZ1b(v)	((uint32_t)(v) << 25)									// 1: 1MV mode, 0: 4MV mode									// In decoding mode: not used and should be 0	#define mMECPMV_4MVBN2b(v)	((uint32_t)(v) << 23)	// block number//	#define mMECPMV_MV1HIT1b(v)	((uint32_t)(v) << 22)//	#define mMECPMV_MV37b(v)		((uint32_t)(v) << 14)									// Candidate prediction vector 3/Index to candidate prediction vector 3//	#define mMECPMV_MV27b(v)		((uint32_t)(v) << 7)									// Candidate prediction vector 2/Index to candidate prediction vector 2//	#define mMECPMV_MV17b(v)		((uint32_t)(v) << 0)									// Candidate prediction vector 1/Index to candidate prediction vector 1	// MEC_PXI	#define MEPXI_E_LAST			BIT28	#define MEPXI_UV				(BIT27 | BIT25)//	#define MEPXI_SKIP_PXI			BIT26//	#define MEPXI_MBCNT			BIT25	#define mMEPXI_BKNUM2b(v)		((uint32_t)(v) << 23)	#define MEPXI_GRP1				BIT22//	#define MEPXI_PAD_RIGHT		BIT21//	#define MEPXI_PAD_TOP			BIT20//	#define MEPXI_PAD_BOT			BIT19	#define mMEPXI_RADD12b(v)		((uint32_t)(v) << 0)	/*		1MV:				REF1_Y_OFF-------REF_Y_OFF_0 ------				|				|				|				V				V				###########---###########---				#Y	|	|	#	#Y	|	|	#	|				#-----------#---#-----------#---				#	|	|	#	#	|	|	#	|				#-----------#---#-----------#---				#	|	|	#	#	|	|	#	|				###########---###########---				|	|	|	|	|	|	|	|	|				############################				#U	|	#V	|	#U	|	#V	|	#				#-------#-------#------#--------#				#	|	#	|	#	|	#	|	#				############################		4MV:				REF_Y0_OFF_1 -----REF_Y0_OFF_0 -----				|				|				|				V				V				###########################				#Y0	|	#Y1	|	#Y0	|	#Y1	|	#				#-------#-------#-------#------#				#	|	#	|	#	|	#	|	#				###########################				#Y2	|	#Y3	|	#Y2	|	#Y3	|	#				#-------#-------#------#-------#				#	|	#	|	#	|	#	|	#				############################				#U	|	#V	|	#U	|	#V	|	#				#-------#-------#------#--------#				#	|	#	|	#	|	#	|	#				############################	*/	//Y0	#define CONST_MEPXI0Y0	(mMECMD_TYPE3b(MEC_PXI)				\						| mMEPXI_BKNUM2b(0)					\						| mMEPXI_RADD12b(REF_Y0_OFF_0 >> 2))	// Y1	#define CONST_MEPXI0Y1	(mMECMD_TYPE3b(MEC_PXI)				\						| mMEPXI_BKNUM2b(1)					\						| mMEPXI_RADD12b(REF_Y1_OFF_0 >> 2))	// Y2	#define CONST_MEPXI0Y2	(mMECMD_TYPE3b(MEC_PXI)				\						| mMEPXI_BKNUM2b(2)					\						| mMEPXI_RADD12b(REF_Y2_OFF_0 >> 2))	// Y3	#define CONST_MEPXI0Y3	(mMECMD_TYPE3b(MEC_PXI)				\						| mMEPXI_BKNUM2b(3)					\						| mMEPXI_RADD12b(REF_Y3_OFF_0 >> 2))	// U	#define CONST_MEPXI0U	(mMECMD_TYPE3b(MEC_PXI)				\						| mMEPXI_BKNUM2b(0)					\						| MEPXI_UV							\						| mMEPXI_RADD12b(REF_U_OFF_0 >> 2))	// V	#define CONST_MEPXI0V	(mMECMD_TYPE3b(MEC_PXI)				\						| MEPXI_E_LAST						\						| mMEPXI_BKNUM2b(0)					\						| MEPXI_UV							\						| mMEPXI_RADD12b(REF_V_OFF_0 >> 2))	//Y0	#define CONST_MEPXI1Y0	(mMECMD_TYPE3b(MEC_PXI)				\						| mMEPXI_BKNUM2b(0)					\						| MEPXI_GRP1							\						| mMEPXI_RADD12b(REF_Y0_OFF_1 >> 2))	// Y1	#define CONST_MEPXI1Y1	(mMECMD_TYPE3b(MEC_PXI)				\						| mMEPXI_BKNUM2b(1)					\						| MEPXI_GRP1							\						| mMEPXI_RADD12b(REF_Y1_OFF_1 >> 2))	// Y2	#define CONST_MEPXI1Y2	(mMECMD_TYPE3b(MEC_PXI)				\						| mMEPXI_BKNUM2b(2)					\						| MEPXI_GRP1							\						| mMEPXI_RADD12b(REF_Y2_OFF_1 >> 2))	// Y3	#define CONST_MEPXI1Y3	(mMECMD_TYPE3b(MEC_PXI)				\						| mMEPXI_BKNUM2b(3)					\						| MEPXI_GRP1							\						| mMEPXI_RADD12b(REF_Y3_OFF_1 >> 2))	// U	#define CONST_MEPXI1U	(mMECMD_TYPE3b(MEC_PXI)				\						| MEPXI_UV							\						| mMEPXI_BKNUM2b(0)					\						| MEPXI_GRP1							\						| mMEPXI_RADD12b(REF_U_OFF_1 >> 2))	// V	#define CONST_MEPXI1V	(mMECMD_TYPE3b(MEC_PXI)				\						| MEPXI_E_LAST						\						| MEPXI_UV							\						| mMEPXI_BKNUM2b(0)					\						| MEPXI_GRP1							\						| mMEPXI_RADD12b(REF_V_OFF_1 >> 2))	#ifdef ME_GLOBALS		#define ME_EXT		const uint32_t u32ConstMePxi0[6] = {			CONST_MEPXI0Y0,			CONST_MEPXI0Y1,			CONST_MEPXI0Y2,			CONST_MEPXI0Y3,			CONST_MEPXI0U,			CONST_MEPXI0V		};		const uint32_t u32ConstMePxi1[6] = {			CONST_MEPXI1Y0,			CONST_MEPXI1Y1,			CONST_MEPXI1Y2,			CONST_MEPXI1Y3,			CONST_MEPXI1U,			CONST_MEPXI1V		};	#else		#define ME_EXT extern		extern uint32_t u32ConstMePxi0[];		extern uint32_t u32ConstMePxi1[];	#endif	ME_EXT void me_dec_commandq_init(uint32_t * base);#endif /* __ME_H  */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -