vpu_io.h

来自「mx27 f14v2 源代码。包括ADS板上诸多驱动的源码。」· C头文件 代码 · 共 221 行

H
221
字号
//-----------------------------------------------------------------------------
// Copyright (C) 2006-2007, Freescale Semiconductor, Inc. All Rights Reserved.
// THIS SOURCE CODE, AND ITS USE AND DISTRIBUTION, IS SUBJECT TO THE TERMS
// AND CONDITIONS OF THE APPLICABLE LICENSE AGREEMENT 
//-----------------------------------------------------------------------------

//------------------------------------------------------------------------------
//
//  File:		  vpu_io.h
//  Purpose:	Defines IOCTL code and structures for VPU API driver.
//
//------------------------------------------------------------------------------

#ifndef __VPU_SDK_H__
#define __VPU_SDK_H__

#if __cplusplus
extern "C" {
#endif

#pragma warning(push)
#pragma warning(disable: 4115)
#pragma warning(disable: 4201)
#pragma warning(disable: 4204)
#pragma warning(disable: 4214)
#include <windows.h>
#pragma warning(pop)

#define VPU_POWER 0
//------------------------------------------------------------------------------
// IOCTL code definition
//------------------------------------------------------------------------------

//Common Codec commands..
#define IOCTL_VPU_IS_BUSY               \
	CTL_CODE(FILE_DEVICE_UNKNOWN, 4000, METHOD_BUFFERED, FILE_ANY_ACCESS) 
#define IOCTL_VERSION_INFO              \
	CTL_CODE(FILE_DEVICE_UNKNOWN, 4001, METHOD_BUFFERED, FILE_ANY_ACCESS) 
#define IOCTL_ALLOC_PHY_MEM             \
	CTL_CODE(FILE_DEVICE_UNKNOWN, 4002, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_FREE_PHY_MEM              \
	CTL_CODE(FILE_DEVICE_UNKNOWN, 4003, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_GET_PHY_ADDR                 \
	CTL_CODE(FILE_DEVICE_UNKNOWN, 4004, METHOD_BUFFERED, FILE_ANY_ACCESS)

//VPU Decoder Commands...
#define IOCTL_DEC_OPEN                  \
	CTL_CODE(FILE_DEVICE_UNKNOWN, 4005, METHOD_BUFFERED, FILE_ANY_ACCESS) 
#define IOCTL_DEC_CLOSE                 \
	CTL_CODE(FILE_DEVICE_UNKNOWN, 4006, METHOD_BUFFERED, FILE_ANY_ACCESS) 
#define IOCTL_DEC_SET_ESC_SEQ_INIT      \
	CTL_CODE(FILE_DEVICE_UNKNOWN, 4007, METHOD_BUFFERED, FILE_ANY_ACCESS) 
#define IOCTL_DEC_GET_INITIAL_INFO      \
	CTL_CODE(FILE_DEVICE_UNKNOWN, 4008, METHOD_BUFFERED, FILE_ANY_ACCESS) 
#define IOCTL_DEC_REGISTER_FRAME_BUF      \
	CTL_CODE(FILE_DEVICE_UNKNOWN, 4009, METHOD_BUFFERED, FILE_ANY_ACCESS) 
#define IOCTL_DEC_GET_BITSTREAM_BUF     \
	CTL_CODE(FILE_DEVICE_UNKNOWN, 4010, METHOD_BUFFERED, FILE_ANY_ACCESS) 
#define IOCTL_DEC_UPDATE_BITSTREAM_BUF  \
	CTL_CODE(FILE_DEVICE_UNKNOWN, 4011, METHOD_BUFFERED, FILE_ANY_ACCESS) 
#define IOCTL_DEC_START_ONE_FRAME         \
	CTL_CODE(FILE_DEVICE_UNKNOWN, 4012, METHOD_BUFFERED, FILE_ANY_ACCESS) 
#define IOCTL_DEC_GET_OUTPUT_INFO       \
	CTL_CODE(FILE_DEVICE_UNKNOWN, 4013, METHOD_BUFFERED, FILE_ANY_ACCESS)   
#define IOCTL_DEC_BIT_BUFFER_FLUSH      \
	CTL_CODE(FILE_DEVICE_UNKNOWN, 4014, METHOD_BUFFERED, FILE_ANY_ACCESS) 
#define IOCTL_DEC_GIVE_COMMAND          \
	CTL_CODE(FILE_DEVICE_UNKNOWN, 4015, METHOD_BUFFERED, FILE_ANY_ACCESS)
	
//VPU Encoder Commands...
#define IOCTL_ENC_OPEN                  \
	CTL_CODE(FILE_DEVICE_UNKNOWN, 4016, METHOD_BUFFERED, FILE_ANY_ACCESS) 
#define IOCTL_ENC_CLOSE                 \
	CTL_CODE(FILE_DEVICE_UNKNOWN, 4017, METHOD_BUFFERED, FILE_ANY_ACCESS) 
#define IOCTL_ENC_SET_ESC_SEQ_INIT      \
	CTL_CODE(FILE_DEVICE_UNKNOWN, 4018, METHOD_BUFFERED, FILE_ANY_ACCESS) 
#define IOCTL_ENC_GET_INITIAL_INFO      \
	CTL_CODE(FILE_DEVICE_UNKNOWN, 4019, METHOD_BUFFERED, FILE_ANY_ACCESS) 
#define IOCTL_ENC_REGISTER_FRAME_BUF      \
	CTL_CODE(FILE_DEVICE_UNKNOWN, 4020, METHOD_BUFFERED, FILE_ANY_ACCESS) 
#define IOCTL_ENC_GET_BITSTREAM_BUF     \
	CTL_CODE(FILE_DEVICE_UNKNOWN, 4021, METHOD_BUFFERED, FILE_ANY_ACCESS) 
#define IOCTL_ENC_UPDATE_BITSTREAM_BUF  \
	CTL_CODE(FILE_DEVICE_UNKNOWN, 4022, METHOD_BUFFERED, FILE_ANY_ACCESS) 
#define IOCTL_ENC_START_ONE_FRAME         \
	CTL_CODE(FILE_DEVICE_UNKNOWN, 4023, METHOD_BUFFERED, FILE_ANY_ACCESS) 
#define IOCTL_ENC_GET_OUTPUT_INFO       \
	CTL_CODE(FILE_DEVICE_UNKNOWN, 4024, METHOD_BUFFERED, FILE_ANY_ACCESS)   
#define IOCTL_ENC_GIVE_COMMAND          \
	CTL_CODE(FILE_DEVICE_UNKNOWN, 4025, METHOD_BUFFERED, FILE_ANY_ACCESS)


//------------------------------------------------------------------------------
// Wrapped struct definition for IOCTL operation
//------------------------------------------------------------------------------

// for encoder
/////////////////////////////// Input parameter definition
typedef struct {
	EncHandle	handle;
	int escape;
} EncSetEscSeqInitInput, *PEncSetEscSeqInitInput;

typedef struct {
	EncHandle	handle;
	FrameBuffer	*pbufarray;
	int			num;
	int			stride;
} EncRegisterFrameBufferInput, *PEncRegisterFrameBufferInput;

typedef struct {
	EncHandle	handle;
	Uint32		size;
} EncUpdateBitstreamBufferInput, *PEncUpdateBitstreamBufferInput;

typedef struct {
	EncHandle	handle;
	EncParam	*pencparam;
} EncStartOneFrameInput, *PEncStartOneFrameInput;

typedef struct {
	EncHandle		handle;
	CodecCommand	cmd;
	void			*pparam;
} EncGiveCommandInput, *PEncGiveCommandInput;

/////////////////////////////// Output parameter definition
typedef struct {
	EncHandle	handle;
	RetCode retcode;
} EncOpenOutput, *PEncOpenOutput;

typedef struct {
	EncInitialInfo	intialinfo;
	RetCode			retcode;
} EncGetInitialInfoOutput, *PEncGetInitialInfoOutput;

typedef struct {
	PhysicalAddress readptr;
	PhysicalAddress writeptr;
	Uint32			size;
	RetCode			retcode;
} EncGetBitstreamBufferOutput, *PEncGetBitstreamBufferOutput;

typedef struct {
	EncOutputInfo	outputinfo;
	RetCode			retcode;
} EncGetOutputInfoOutput, *PEncGetOutputInfoOutput;

// for decoder
/////////////////////////////// Input parameter definition

typedef struct {
	DecHandle	handle;
	int escape;
} DecSetEscSeqInitInput, *PDecSetEscSeqInitInput;

typedef struct {
	DecHandle	handle;
	FrameBuffer	*pbufarray;
	int			num;
	int			stride;
	DecBufInfo * pbufinfo;
} DecRegisterFrameBufferInput, *PDecRegisterFrameBufferInput;

typedef struct {
	DecHandle	handle;
	Uint32		size;
} DecUpdateBitstreamBufferInput, *PDecUpdateBitstreamBufferInput;

typedef struct {
	DecHandle	handle;
	DecParam	*pdecparam;
} DecStartOneFrameInput, *PDecStartOneFrameInput;

typedef struct {
	DecHandle		handle;
	CodecCommand	cmd;
	void			*pparam;
} DecGiveCommandInput, *PDecGiveCommandInput;

typedef struct {
	void            *lpvAddress;
	Uint32          size;
} GetPhysAddressInput, *PGetPhysAddressInput;

/////////////////////////////// Output parameter definition

typedef struct {
	PhysicalAddress phyaddr;
	void	*pvirAddr;
} DecAllocPhysMemOutput, *PDecAllocPhysMemOutput;

typedef struct {
	DecHandle	handle;
	RetCode retcode;
} DecOpenOutput, *PDecOpenOutput;

typedef struct {
	DecInitialInfo	intialinfo;
	RetCode			retcode;
} DecGetInitialInfoOutput, *PDecGetInitialInfoOutput;

typedef struct {
	PhysicalAddress readptr;
	PhysicalAddress writeptr;
	Uint32			size;
	RetCode			retcode;
} DecGetBitstreamBufferOutput, *PDecGetBitstreamBufferOutput;

typedef struct {
	DecOutputInfo	outputinfo;
	RetCode			retcode;
} DecGetOutputInfoOutput, *PDecGetOutputInfoOutput;


#ifdef __cplusplus
}
#endif

#endif //_VPU_SDK_H__

⌨️ 快捷键说明

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