📄 pvrvadd.h
字号:
/**************************************************************************
* 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 + -