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

📄 pvrvadd.h

📁 Lido PXA270平台开发板的最新BSP,包括源代码
💻 H
📖 第 1 页 / 共 2 页
字号:
/**************************************************************************
 * Name         : pvrvadd.h
 * Title        : PowerVR video accleration decoder and display interface
 * Author       : PowerVR
 * Created      : 19/05/03
 *
 * Copyright   : 2003 by Imagination Technologies. All rights reserved.
 *             : No part of this software, either material or conceptual 
 *             : may be copied or distributed, transmitted, transcribed,
 *             : stored in a retrieval system or translated into any 
 *             : human or computer language in any form by any means,
 *             : electronic, mechanical, manual or other-wise, or 
 *             : disclosed to third parties without the express written
 *             : permission of Imagination Technologies Limited, Unit 8,
 *             : HomePark Industrial Estate, King's Langley, Hertfordshire,
 *             : WD4 8LZ, U.K.
 *
 * Description  : PVR M24VA Video Decode Acceleration and display API
 *
 * Platform     : 
 *

 Version	 	: $Revision: 1.7 $

 Modifications	:

 $Log: pvrvadd.h $

  --- Revision Logs Removed --- 

  --- Revision Logs Removed --- 

  --- Revision Logs Removed --- 

  --- Revision Logs Removed --- 
 
 */

#ifndef _PVRVADD_H_
#define _PVRVADD_H_

#include <ddraw.h>

/****************************************************************************/
/*********** External Interface for the PVR video acceleration API **********/
/****************************************************************************/

#ifndef PVRAPI

#if defined(UNDER_CE)
	#define PVRAPI __stdcall
#else
	#define PVRAPI
#endif

#endif 
/************************************************************ Standard Types */

#ifndef __IMG_TYPES_H__

typedef	enum tag_img_bool
{
	IMG_FALSE,
	IMG_TRUE
} IMG_BOOL, *IMG_PBOOL;


typedef unsigned char	IMG_UINT8;
typedef unsigned short	IMG_UINT16;
typedef unsigned long	IMG_UINT32;

typedef signed short	IMG_INT16;
typedef signed long		IMG_INT32;

typedef void*			IMG_PVOID;

#endif 

typedef IMG_UINT32		SMSurface;

/******************************************************* Define core variant */

//#define IMG_M24VAg
//#define IMG_M24VA		

#define IMG_M24VAe		/* Support idct, IZZ */

/*****************************************************************************/
/***************************** M24VA Hardware commands ***********************/
/*****************************************************************************/

/*********************************************** Motion Compensation Commands */

#define M24VA_CMD_MC_OPP_TYPE	(0x00000000)
#define M24VA_CMD_FETCH_PRED_B	(0x08000000)
#define M24VA_CMD_IDCT_MODE		(0x10000000)
#define M24VA_CMD_IMAGE_WRITE	(0x18000000)
#define M24VA_CMD_FETCH_PRED_A	(0x80000000)

#define M24VA_CMD_MASK			(0xf8000000)

/* Motion Comp Operation Type (M24VA_CMD_MC_OPP_TYPE) */
#define M24VA_MC_TYPE_COL_PLANE_MASK	(0x00000003)
#define M24VA_MC_TYPE_COL_PLANE_Y		(0x00000000)
#define M24VA_MC_TYPE_COL_PLANE_U		(0x00000001)
#define M24VA_MC_TYPE_COL_PLANE_V		(0x00000002)
#define M24VA_MC_TYPE_BLK_WIDTH_MASK	(0x0000000c)
#define M24VA_MC_TYPE_BLK_WIDTH_4		(0x00000000)
#define M24VA_MC_TYPE_BLK_WIDTH_8		(0x00000004)
#define M24VA_MC_TYPE_BLK_WIDTH_16		(0x00000008)
#define M24VA_MC_TYPE_BLK_HGHT_MASK		(0x00000030)
#define M24VA_MC_TYPE_BLK_HGHT_4		(0x00000000)
#define M24VA_MC_TYPE_BLK_HGHT_8		(0x00000010)
#define M24VA_MC_TYPE_BLK_HGHT_16		(0x00000020)
#define M24VA_MC_TYPE_INTR_RND_MODE		(0x00000040)
#define M24VA_MC_TYPE_AVR_RND_MODE		(0x00000080)
#define M24VA_MC_TYPE_QUARTR_PIX_ACC	(0x00000100)
#define M24VA_MC_TYPE_WMV_FILTER_MODE	(0x00000400) 

#ifndef IMG_M24VAg
#define M24VA_MC_TYPE_QUARTR_PIX_MODE (0x00000200)
#endif /* IMG_M24VAg */

/* Fetch Prediction A (M24VA_CMD_FETCH_PRED_A)*/
#define M24VA_FETCH_A_PREDX_MASK	(0x00003fff)
#define M24VA_FETCH_A_PREDX_SHIFT	(0)
#define M24VA_FETCH_A_PREDY_MASK	(0x0fffc000)
#define M24VA_FETCH_A_PREDY_SHIFT	(14)
#define M24VA_FETCH_A_SRC_SEL_MASK	(0x30000000)
#define M24VA_FETCH_A_SRC_SEL_REF1	(0x00000000)
#define M24VA_FETCH_A_SRC_SEL_REF2	(0x10000000)
#define M24VA_FETCH_A_SRC_SEL_OUT	(0x20000000)
#define M24VA_FETCH_A_SRC_SEL_SHIFT	(28)
#define M24VA_FETCH_A_FIRST_PRED	(0x40000000)

/* Fetch Prediction B (M24VA_CMD_FETCH_PRED_B)*/
#define M24VA_FETCH_B_IP_FIELD_MODE	 (0x00000001)
#define M24VA_FETCH_B_ACC_FIELD_MODE (0x00000002)
#define M24VA_FETCH_B_ACC_FIELD_SLCT (0x00000004)
#define M24VA_FETCH_B_ACC_Y_POS_MASK (0x00000018)
#define M24VA_FETCH_B_ACC_Y_POS_0	 (0x00000000)
#define M24VA_FETCH_B_ACC_Y_POS_4	 (0x00000008)
#define M24VA_FETCH_B_ACC_Y_POS_8	 (0x00000010)
#define M24VA_FETCH_B_ACC_Y_POS_12	 (0x00000018)
#define M24VA_FETCH_B_ACC_X_POS_MASK (0x00000060)
#define M24VA_FETCH_B_ACC_X_POS_0	 (0x00000000)
#define M24VA_FETCH_B_ACC_X_POS_4	 (0x00000020)
#define M24VA_FETCH_B_ACC_X_POS_8	 (0x00000040)
#define M24VA_FETCH_B_ACC_X_POS_12	 (0x00000060)

/* IDCT Mode (M24VA_CMD_IDCT_MODE) */
#ifdef IMG_M24VAg

#define M24VA_IDCT_MODE_FIELD		 (0x00000001)
#define M24VA_IDCT_MODE_INTRA		 (0x00000002)
#define M24VA_IDCT_MODE_BLK_SEL_MASK (0x0000003c)
#define M24VA_IDCT_MODE_BLK_SEL_SHIFT (2)
#define M24VA_IDCT_MODE_BLK_TOP_LEFT (0x00000000)
#define M24VA_IDCT_MODE_BLK_TOP_RGHT (0x00000004)
#define M24VA_IDCT_MODE_BLK_BOT_LEFT (0x00000008)
#define M24VA_IDCT_MODE_BLK_BOT_RGHT (0x0000000c)
#define M24VA_IDCT_MODE_BLK_BOT_FIELD_LEFT (M24VA_IDCT_MODE_BLK_BOT_LEFT)
#define M24VA_IDCT_MODE_BLK_BOT_FIELD_RGHT (M24VA_IDCT_MODE_BLK_BOT_RGHT)
#define M24VA_IDCT_MODE_SIZE		 (0x00000040)
#define M24VA_IDCT_MODE_DCOFFSET	 (0x00000080)

#else

#define M24VA_IDCT_MODE_FIELD		 (0x00000001)
#define M24VA_IDCT_MODE_INTRA		 (0x00000002)
#define M24VA_IDCT_MODE_BLK_SELX_MASK (0x0000000c)
#define M24VA_IDCT_MODE_BLK_SELX_SHIFT (2)
#define M24VA_IDCT_MODE_BLK_SELY_MASK (0x00000030)
#define M24VA_IDCT_MODE_BLK_SELY_SHIFT (4)

/* defines for simplicity in 8x8 mode */
#define M24VA_IDCT_MODE_BLK_TOP_LEFT (0x00000000)
#define M24VA_IDCT_MODE_BLK_TOP_RGHT (0x00000008)
#define M24VA_IDCT_MODE_BLK_BOT_LEFT (0x00000020)
#define M24VA_IDCT_MODE_BLK_BOT_RGHT (0x00000028)

#define M24VA_IDCT_MODE_BLK_BOT_FIELD_LEFT (0x00000010)
#define M24VA_IDCT_MODE_BLK_BOT_FIELD_RGHT (0x00000018)

#define M24VA_IDCT_MODE_DCOFFSET	 (0x00000080)
#define M24VA_IDCT_BLK_SIZEX_4		 (0x00000100)
#define M24VA_IDCT_BLK_SIZEX_8		 (0x00000000)
#define M24VA_IDCT_BLK_SIZEY_4		 (0x00000200)
#define M24VA_IDCT_BLK_SIZEY_8		 (0x00000000)

#endif /* IMG_M24VAg */

/* Image Write (M24VA_CMD_IMAGE_WRITE) */
#define M24VA_IMAGE_WRITE_X_MASK	 (0x000007ff)
#define M24VA_IMAGE_WRITE_X_SHIFT	 (0)
#define M24VA_IMAGE_WRITE_Y_MASK	 (0x003ff800)
#define M24VA_IMAGE_WRITE_Y_SHIFT	 (11)
#define M24VA_IMAGE_WRITE_FIELD		 (0x00400000)
#define M24VA_IMAGE_WRITE_WIDTH_MASK (0x01800000)
#define M24VA_IMAGE_WRITE_WIDTH_4	 (0x00000000)
#define M24VA_IMAGE_WRITE_WIDTH_8	 (0x00800000)
#define M24VA_IMAGE_WRITE_WIDTH_16	 (0x01000000)
#define M24VA_IMAGE_WRITE_HGHT_MASK	 (0x06000000)
#define M24VA_IMAGE_WRITE_HGHT_4	 (0x00000000)
#define M24VA_IMAGE_WRITE_HGHT_8	 (0x02000000)
#define M24VA_IMAGE_WRITE_HGHT_16	 (0x04000000)

/* End of Frame (M24VA_CMD_END_OF_FRAME) */


/*****************************************************************************/
/***************************** M24VA API Defines *****************************/
/*****************************************************************************/

typedef enum {

	M24VAError_OK = 0,

	M24VAError_GenericError,
	M24VAError_InvalidParameter,
	M24VAError_IncorrectSurfaceFormat,
	M24VAError_OutOfMemory,
	M24VAError_HardwareNotAvailable,
	M24VAError_NotInitialised,
	M24VAError_WriteTimedOut,
	M24VAError_SurfaceUnavailable,

⌨️ 快捷键说明

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