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

📄 hxcodec.h

📁 著名的 helix realplayer 基于手机 symbian 系统的 播放器全套源代码
💻 H
📖 第 1 页 / 共 2 页
字号:
	ULONG32		cbLength;			// the size of this struct in bytes
	HX_MOFTAG 	moftag;				// always == HX_MEDIA_IMAGE
	HX_MOFTAG 	submoftag;			// image format identifier
	// General attributes of the image stream independent of bitwise encoding
	UINT16		uiWidth;			// width of the image in pixels
	UINT16		uiHeight;			// height of the image in pixels
	UINT16		uiBitCount;			// color depth in bits
	UINT16		uiPadWidth;			// number of padded columns for codecs that 
									// need certian block sizes e.g. 8x8
	UINT16		uiPadHeight;		// number of padded rows for codecs that 
									// need certian block sizes e.g. 8x8
} HX_FORMAT_IMAGE;

// Generic Image HX_MOF struct
typedef struct tag_HX_FORMAT_IMAGE2
{
	ULONG32		cbLength;			// the size of this struct in bytes
	HX_MOFTAG 	moftag;				// always == HX_MEDIA_IMAGE
	HX_MOFTAG 	submoftag;			// image format identifier
	// General attributes of the image stream independent of bitwise encoding
	UINT16		uiWidth;			// width of the image in pixels
	UINT16		uiHeight;			// height of the image in pixels
	UINT16		uiBitCount;			// color depth in bits
	UINT16		uiPadWidthLeft;			// number of padded columns for codecs that 
									// need certian block sizes e.g. 8x8
	UINT16		uiPadHeightTop;		// number of padded rows for codecs that 
									// need certian block sizes e.g. 8x8
	UINT16		uiPadWidthRight;			// number of padded columns for codecs that 
									// need certian block sizes e.g. 8x8
	UINT16		uiPadHeightBottom;		// number of padded rows for codecs that 
									// need certian block sizes e.g. 8x8
} HX_FORMAT_IMAGE2;



// Generic Video HX_MOF struct
typedef struct tag_HX_FORMAT_VIDEO
{
	ULONG32		cbLength;			// the size of this struct in bytes
	HX_MOFTAG 	moftag;				// always == HX_MEDIA_VIDEO
	HX_MOFTAG 	submoftag;			// video format identifier
	// General attributes of the video stream independent of bitwise encoding
	UINT16		uiWidth;			// width of the image in pixels
	UINT16		uiHeight;			// height of the image in pixels
	UINT16		uiBitCount;			// color depth in bits
	UINT16		uiPadWidth;			// number of padded columns for codecs that 
									// need certian block sizes e.g. 8x8
	UINT16		uiPadHeight;		// number of padded rows for codecs that 
									// need certian block sizes e.g. 8x8
	UFIXED32	framesPerSecond;	// frames per second

} HX_FORMAT_VIDEO;


typedef struct tag_HX_FORMAT_TRANSFORM
{
	ULONG32 cbLength;				//total transform header length in bytes;
	HX_MOFTAG moftag;				//always == HX_MEDIA_VIDEO
	HX_MOFTAG submoftag;			//fourcc name of transform pluggin
	ULONG32	subcbLength;			//size of specific opaque transform header in bytes
	INT32	viewLeft;				//replicates HXxRect structure for initial viewing position
	INT32	viewTop;
	INT32	viewRight;
	INT32	viewBottom;	
} HX_FORMAT_TRANSFORM;


// Unfortunately we did not 4 byte align the HX_FORMAT_VIDEO struct. Since this struct must be 26 bytes in size
// we cannot do sizeof(HX_FORMAT_VIDEO) on several UNIX platforms and PowerPC macs. We are therefore going to
// hardcode the size to 26 bytes.
#define SIZE_OF_HX_FORMAT_VIDEO 26	

#define HX_FORMAT_PACKETIZER_SIZE (3 * sizeof(ULONG32))

typedef BOOL (HXEXPORT_PTR FP_MEDIAFORMATSCALLBACK)(void *userData, 
	HX_MOF * pmof);

#if defined(_MACINTOSH) || defined(_MAC_UNIX)
#pragma export on
#endif

// HXCODEC_INIT struct used in HXStream_Open()
typedef struct tag_HXCODEC_INIT
{
		HX_MOF			*pInMof;
		HX_MOF			*pOutMof;
		HXMEMORY		memoryRef;
		IUnknown*		pContext;
}HXCODEC_INIT;


// HXCODEC_SETMENTINFO
#ifndef TAG_HXCODEC_SEGMENTINFO
#define TAG_HXCODEC_SEGMENTINFO
typedef struct tag_HXCODEC_SEGMENTINFO
{
	LONG32 bIsValid;
	ULONG32 ulSegmentOffset;
} HXCODEC_SEGMENTINFO;
#define HXCODEC_SEGMENTINFO_SIZE	(8)
#endif 


// HXCODEC_SETMENTINFO
/*
typedef struct tag_HXCODEC_SEGMENTINFO
{
	BOOL bIsValid;
	ULONG32 ulSegmentOffset;
} HXCODEC_SEGMENTINFO;
#define HXCODEC_SEGMENTINFO_SIZE	(4 + sizeof(BOOL)) // BOOL is an int which changes size
*/



// HXCODEC_DATA struct used in PNStream_Input() and data_callback functions.
typedef struct tag_HXCODEC_DATA
{
	ULONG32 	dataLength;
	UCHAR		*data;
	ULONG32		timestamp;
	UINT16		sequenceNum;
	UINT16		flags;
	BOOL		lastPacket;
	ULONG32		numSegments;
	HXCODEC_SEGMENTINFO Segments[1];
} HXCODEC_DATA;



// Since this is an internal structure for which we don't know the alignment
// changed to use sizeof srobinson 11/98
#define HXCODEC_DATA_SIZE	(sizeof(HXCODEC_DATA))
#define HXCODEC_PTR_POPULATED_SIZE(x)	(((UINT8*) (&((x)->Segments[(x)->numSegments]))) - ((UINT8*) (x)))


HX_RESULT HXEXPORT ENTRYPOINT(PNCodec_Open)(HX_MOFTAG moftFormatTag,HXCODEC *codecRef);

HX_RESULT HXEXPORT ENTRYPOINT(PNCodec_Close)(HXCODEC codecRef);

HX_RESULT HXEXPORT ENTRYPOINT(PNCodec_GetUIName)(HXCODEC codecRef,char *nameBuf);

HX_RESULT HXEXPORT ENTRYPOINT(PNCodec_GetVersion)(HXCODEC codecRef, ULONG32 *pVersion);

HX_RESULT HXEXPORT ENTRYPOINT(PNCodec_QueryMediaFormat)(HXCODEC codecRef,HX_MOF * pmofIn, 
	HX_MOF * pmofOut, UINT16 ioDirection);

HX_RESULT HXEXPORT ENTRYPOINT(PNCodec_PreferredMediaFormat)(HXCODEC codecRef,HX_MOF * pmofIn, 
	HX_MOF * pmofOut, UINT16 ioDirection);

HX_RESULT HXEXPORT ENTRYPOINT(PNCodec_GetMediaFormats)(HXCODEC codecRef, UINT16 ioDirection, 
	FP_MEDIAFORMATSCALLBACK fpCallback, void *userData);

#if defined ADD_HXCODEC_INPUT
HX_RESULT HXEXPORT ENTRYPOINT(PNCodec_Input)(HXCODEC codecRef, HXCODEC_DATA *pData);
#endif

#if defined ADD_HXCODEC_GETIPNUNKNOWN
PIHXUnknown HXEXPORT ENTRYPOINT(PNCodec_GetIPNUnknown)(HXCODEC codecRef);
#endif


// FP_STREAM_DATA typedef
typedef HX_RESULT (HXEXPORT_PTR FP_STREAM_DATA)(HXSTREAM streamRef, 
	HXSTREAM fromstreamRef, HXCODEC_DATA *pData);

HX_RESULT HXEXPORT ENTRYPOINT(PNCodec_StreamOpen)(HXCODEC codecRef,HXSTREAM *streamRef,HXCODEC_INIT
	*params);

HX_RESULT HXEXPORT ENTRYPOINT(PNStream_Close)(HXSTREAM streamRef);

HX_RESULT HXEXPORT ENTRYPOINT(PNStream_SetDataCallback)(HXSTREAM streamRef,HXSTREAM callbackRef,
	HXMEMORY memoryRef, FP_STREAM_DATA data_callback);

HX_RESULT HXEXPORT ENTRYPOINT(PNStream_GetProperty)(HXSTREAM streamRef, ULONG32 prop, 
	void *pValue);

HX_RESULT HXEXPORT ENTRYPOINT(PNStream_SetProperty)(HXSTREAM streamRef, ULONG32 prop, 
	void *pValue);

#ifdef HW_VIDEO_MEMORY_FRONTEND
HX_RESULT HXEXPORT ENTRYPOINT(PNStream_PostProcess)(HXSTREAM streamRef, 
				HXCODEC_DATA *pncData,
				ULONG32	uCurrentTime,
				UCHAR *pDestBuffer,
				UINT32 uDestPitch,
				INT32 cidDestColorFormat);

HX_RESULT HXEXPORT ENTRYPOINT(PNStream_ReleaseFrame)(HXSTREAM streamRef, 
				HXCODEC_DATA *pncData);
#endif

HX_RESULT HXEXPORT ENTRYPOINT(PNStream_GetStreamHeaderSize)(HXSTREAM streamRef,
	ULONG32 *puSize);

HX_RESULT HXEXPORT ENTRYPOINT(PNStream_GetStreamHeader)(HXSTREAM streamRef, HX_MOF *pHeader);

HX_RESULT HXEXPORT ENTRYPOINT(PNStream_Input)(HXSTREAM streamRef,HXSTREAM	fromStreamRef,
	HXCODEC_DATA *pData);

HX_RESULT HXEXPORT ENTRYPOINT(PNStream_SetOutputPacketSize)(HXSTREAM streamRef,ULONG32 prefSize,
	ULONG32 maxSize,ULONG32 *actualSize);

HX_RESULT HXEXPORT ENTRYPOINT(PNStream_GetInputBufferSize)(HXSTREAM streamRef,ULONG32 *puSize);

HX_RESULT HXEXPORT ENTRYPOINT(PNStream_OpenSettingsBox)(HXSTREAM streamRef, void * platformData);

PIHXUnknown HXEXPORT ENTRYPOINT(PNStream_GetIPNUnknown)(HXSTREAM streamRef);

#if defined(_MACINTOSH) || defined(_MAC_UNIX)
#pragma export off
#endif

#ifdef __cplusplus
}
#endif	/* __cplusplus */

#ifdef __cplusplus
class IHXUnknown
{
	public:
	virtual HX_RESULT QueryInterface(HX_IID iid, void** ppvObj) = 0;
	virtual ULONG32 AddRef() = 0;
	virtual ULONG32 Release() = 0;
};

class IHX20Codec : public IHXUnknown
{
	public:
	virtual HX_RESULT PNCodec_Close() = 0;
	virtual HX_RESULT PNCodec_GetUIName(char *pnameBuf) = 0;
	virtual HX_RESULT PNCodec_GetVersion(ULONG32 *pVersion) = 0;
	virtual HX_RESULT PNCodec_QueryMediaFormat(HX_MOF * pmofIn,
		HX_MOF * pmofOut, UINT16 ioDirection) = 0;
	virtual HX_RESULT PNCodec_PreferredMediaFormat(HX_MOF * pmofIn,
		HX_MOF * pmofOut, UINT16 ioDirection) = 0;
	virtual HX_RESULT PNCodec_GetMediaFormats(UINT16 ioDirection, 
		FP_MEDIAFORMATSCALLBACK fpCallback, void *userData) = 0;
	virtual HX_RESULT PNCodec_StreamOpen(HXSTREAM * pStreamRef,
		HXCODEC_INIT * pParams) = 0;
#if defined ADD_HXCODEC_INPUT
	virtual HX_RESULT PNCodec_Input(HXCODEC_DATA *pData) = 0;
#endif
#if defined ADD_HXCODEC_GETIPNUNKNOWN
    virtual IHXUnknown * PNCodec_GetIPNUnknown() = 0;
#endif
};

class IHX20Stream : public IHXUnknown
{
	public:
	virtual HX_RESULT HXStream_Init(HXCODEC_INIT * pInitParams) = 0;
	virtual HX_RESULT PNStream_SetDataCallback(HXSTREAM callbackRef,
		HXMEMORY memoryRef, FP_STREAM_DATA fpDataCallback) = 0;
	virtual HX_RESULT PNStream_GetStreamHeaderSize(ULONG32 * puSize) = 0;
	virtual HX_RESULT PNStream_GetStreamHeader(HX_MOF * pmofStreamHeader) = 0;
	virtual HX_RESULT PNStream_Close() = 0;
	virtual HX_RESULT PNStream_Input(HXSTREAM fromStreamRef,
		HXCODEC_DATA * pData) = 0;
	virtual HX_RESULT PNStream_SetOutputPacketSize(ULONG32 PrefSize,
		ULONG32 MaxSize, ULONG32 *pActualSize) = 0;
	virtual HX_RESULT PNStream_GetInputBufferSize(ULONG32 * puSize) = 0;
	virtual HX_RESULT PNStream_SetProperty(ULONG32 prop, void *pValue) = 0;
	virtual HX_RESULT PNStream_GetProperty(ULONG32 prop, void *pValue) = 0;
#ifdef HW_VIDEO_MEMORY_FRONTEND
	virtual HX_RESULT PNStream_PostProcess(
				HXCODEC_DATA *pncData,
				ULONG32	uCurrentTime,
				UCHAR *pDestBuffer,
				UINT32 uDestPitch,
				INT32 cidDestColorFormat) = 0;
	virtual HX_RESULT PNStream_ReleaseFrame(
				HXCODEC_DATA *pncData) = 0;
#endif
	virtual HX_RESULT PNStream_OpenSettingsBox(void * platformData) = 0;
	virtual IHXUnknown * PNStream_GetIPNUnknown() = 0;
};

typedef struct allocatorProps
{
	ULONG32 uBufferSize;
	ULONG32 nNumBuffers;
} HX20ALLOCPROPS;

class IHX20MemoryAllocator : public IHXUnknown
{
	public:
	virtual UCHAR *	GetPacketBuffer(IHXUnknown ** pPacketBuffer) = 0;
	virtual HX_RESULT SetProperties(HX20ALLOCPROPS* pRequest, HX20ALLOCPROPS* pActual) =  0;
	virtual HX_RESULT GetProperties(HX20ALLOCPROPS* pProps) = 0;
	virtual UINT16 AddRefPacketPtr(UCHAR * memPtr) = 0;
	virtual UINT16 ReleasePacketPtr(UCHAR * memPtr) = 0;
};

#define USER_DATA_REALAUDIO_SURROUND 0x00000001



#endif // __cplusplus

#if defined( _WIN32 ) || defined( _WINDOWS )
#pragma pack()

//	Restore warnings
#pragma warning( default : 4200 )
#endif

// Byte alignment settings for Mac
#if defined( _MACINTOSH ) || defined(_MAC_UNIX)
#pragma options align=reset
#endif


#endif	//	__HXCODEC_H_

⌨️ 快捷键说明

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