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

📄 avi_control.h

📁 SAMSUNG 5009的源代码
💻 H
📖 第 1 页 / 共 2 页
字号:
#ifndef _AVI_CONTROL_H_
#define _AVI_CONTROL_H_

#ifdef __cplusplus
extern "C" {
#endif

/* <<< 2006/01/21 : Park,HeeSang */
#define	AVI_MAX_STREAM_ERROR_COUNT		10
/* >>> 2006/01/21 : Park,HeeSang */

//HJ 2005. 10. 28  TEST...
#define	AVI_LAST_ALLOC_HANDLING		1		// to let movie yuguanyin play zb 060329


#define 	AVI_ONLY_VIDEO_SUPPORT		1
#define 	AVI_ONLY_AUDIO_SUPPORT		1
#define		AVI_ONLY_SUBPIC_SUPPORT		1


/* 07 29 05 Tejas */
#define _DEBUG_DRM_					0
#define _AES_DYCRYPT_ 				1
#define _PARSE_STRD_					1


#define DRMINFO_SIZE					2224 // By SISO
#define DDCHUNKINFO_SIZE			10
#define PARTIAL_DDCHUNK			14


#define	_DEBUG_PAR					0	//hj0908

#define	_USE_FAKE_START_CODE_FOR_DIVX311		1 //hj1016
#define	_USE_FAKE_START_CODE_EVERY_CHUNK			1//hj1016


/* <<< @: 5010-xxx.HoJune_Byun 05/11/18 :  Test Purpose Only  :  Request  from Dr,Lee   */
//#define	_USE_FAKE_START_CODE_EVERY_NULL_CHUNK			1//hj1016



/* <<< @: 5010-xxx.HoJune_Byun 06/01/11 :  Test Purpose Only  for AVI Extenion 2.0 */
//#define	_USE_AVI_EXTENSION_TEST		1
/* <<< @: 5010-xxx.HoJune_Byun 06/01/11 :  Test Purpose Only  for AVI Extenion 2.0 */

//#define	_USE_DIVX6_TEST	0

/* <<< @: 5010-xxx.HoJune_Byun 06/03/04 :  Test Purpose Only for finding Fourcc by Demux */
#define	_TEST_FIND_FOURCC_BY_DEMUX		1
/* <<< @: 5010-xxx.HoJune_Byun 06/03/04 :  Test Purpose Only for finding Fourcc by Demux */
////////////////////////////////////////////////////////




/* AVI Task Msg */
extern	SysTask_t		gAVI_Task;
extern	SysQueue_t		gAVI_Message;
//extern	SysSema_t		gAvi_Sema; 
extern	SysSema_t		gDma_Sema; 


extern	SysSema_t		gAvi_Video_Sema; 
extern	SysSema_t		gAvi_Audio_Sema; 
extern	SysSema_t		gAvi_Sub_Sema; 

		
/* global variables */
extern	 UINT	gAvi_TBuf_RD_Ptr;  
extern	 UINT	gAvi_TBuf_RD_St_Ptr;  

extern 	 UINT 	gAvi_Buf_WR_Ptr0;
extern 	 UINT 	gAvi_Buf_WR_St_Ptr0;

extern 	 UINT 	gAvi_Buf_WR_Ptr1;
extern 	 UINT 	gAvi_Buf_WR_St_Ptr1;

extern 	 UINT 	gAvi_Buf_WR_Ptr2;
extern 	 UINT 	gAvi_Buf_WR_St_Ptr2;

extern UINT		vCkSize;


extern	int gAVI_CurVideoIndex;
extern	int gAVI_CurAudioIndex;
extern	int gAVI_CurSubtitleIndex;
extern 	BOOL IsExSubtitle; // <<< @: 5010.joe.kang 051124

//////////////////////////////////////////////////////////////////

/* define functions */
#define	InPtrSet(val)			( gAvi_TBuf_RD_Ptr		= val)
#define	InStopPtrSet(val)		( gAvi_TBuf_RD_St_Ptr	= val) 
#define	OutPtrSet0(val)		( gAvi_Buf_WR_Ptr0  	= val)
#define 	OutStopPtrSet0(val)	( gAvi_Buf_WR_St_Ptr0 	= val)

#define	OutPtrSet1(val)		( gAvi_Buf_WR_Ptr1  	= val)
#define 	OutStopPtrSet1(val)	( gAvi_Buf_WR_St_Ptr1 	= val)


#define	OutPtrSet2(val)		( gAvi_Buf_WR_Ptr2  	= val)
#define 	OutStopPtrSet2(val)	( gAvi_Buf_WR_St_Ptr2 	= val)
//////////////////////////////////////////////////////////////////

typedef enum {
	ckID_ERROR=0,

/* <<< @: 5010-xxx.HoJune_Byun 06/01/24 :  Test Purpose for DIVX 6.0 Only */
#ifdef _USE_DIVX6_TEST
	chID_CHECK_LIST_ID_SKIP_START,
	chID_CHECK_LIST_ID_SKIP_CONTINUE,	
	chID_CHECK_LIST_SIZE_SKIP_START,
	chID_CHECK_LIST_SIZE_SKIP_CONTINUE,	
	chID_CHECK_LIST_TYPE_SKIP_START,
	chID_CHECK_LIST_TYPE_SKIP_CONTINUE,	
	chID_CHECK_PARTIAL_INDEX_ID_START,		/* partial Index : 'ix##' */
	chID_CHECK_PARTIAL_INDEX_ID_CONTINUE,	/* partial Index : 'ix##' */
	chID_CHECK_INDEX_ID_START,
	chID_CHECK_INDEX_ID_CONTINUE,
#endif/*_USE_DIVX6_TEST */
/* <<< @: 5010-xxx.HoJune_Byun 06/01/24 :  Test Purpose for DIVX 6.0 Only */

	chID_CHECK_ID_START,
	chID_CHECK_ID_CONTINUE,
	chID_CHECK_LIST,
	chID_CHECK_LIST_CONTINUE,
	chID_CHECK_SIZE_START,
	chID_CHECK_SIZE_CONTINUE,
	chID_CHECK_DATA_START,
	chID_CHECK_DATA_CONTINUE,
#if _USE_FAKE_START_CODE_FOR_DIVX311
	chID_CHECK_FAKE_START_CODE_START,
#endif/* _USE_FAKE_START_CODE_FOR_DIVX311 */
#if _USE_FAKE_START_CODE_EVERY_CHUNK
	chID_CHECK_FAKE_START_CODE_EVERY_CHUNK,
#endif/* _USE_FAKE_START_CODE_EVERY_CHUNK */

	chID_CHECK_DRM_START,
	chID_CHECK_DRM_CONTINUE
} DEMUX_STATUS_et;


typedef enum {
	chID_STREAM_Init=0,
	chID_STREAM_VIDEO,
	chID_STREAM_DRM,
	chID_STREAM_AUDIO,
	chID_STREAM_SUBTITLE,
	chID_STREAM_DISCARD,
	chID_STREAM_INDEX,
	chID_STREAM_ERROR
} DEMUX_StreamInfo_et;



/* <<< @: 5010-xxx.HoJune_Byun 05/11/15 : Inactivate unused code */
#if	0
typedef enum {
	ckID_NONE =0,
	cKID_FOUND,
	cKID_NEXT_SECTOR,
	cKID_FIRST_FOUR,
	ckID_FULL_FOUND,
	cKID_PARTIAL_FOUND
}ID_FIND_STATUS_et;
typedef	enum {
	cKSize_NONE =0,
	cKSize_FOUND,
	cKSize_NEXT_SECTOR,
	cKSize_FIRST_FOUR,
	cKSize_FULL_FOUND,
	cKSize_PARTIAL_FOUND
}SIZE_FIND_STATUS_et;
#endif/* 0 */
/* <<< @: 5010-xxx.HoJune_Byun 05/11/15 : Inactivate unused code */

typedef enum {
	AVI_STATUS_NOT_INITIALIZED,
	AVI_STATUS_INITIALIZED,
	AVI_STATUS_STARTED,
	AVI_STATUS_READY
}AVI_STATUS_et;

typedef enum {
	AVI_EXT_AUD_STATUS_NOT_INITIALIZED,
	AVI_EXT_AUD_STATUS_INITIALIZED,
	AVI_EXT_AUD_STATUS_STARTED,
	AVI_EXT_AUD_STATUS_READY
}AVI_EXT_AUD_STATUS_et;

/* <<< @: 5010-xxx.HoJune_Byun 05/11/15 : Inactivate unused code */
#if	0
typedef enum {
	NONE =0,
	FOUND,
	NEXT_SECTOR,
	FIRST_FOUR,
	FULL_FOUND,
	PARTIAL_FOUND
} FIND_STATUS_et;	
typedef enum {
	COPY_DONE=0,
	COPY_READY,
	COPY_START,
	STOP,
	PAUSED,
	COPY_RESUME,
	NOT_DONE	
}TRANSFER_STATUS_et;
typedef enum {
	FIND_ID =0,
	FIND_SIZE,	
	DUMP
}Parsing_State_et;
#endif/* 0 */
/* <<< @: 5010-xxx.HoJune_Byun 05/11/15 : Inactivate unused code */



/* <<< @: 5010-xxx.HoJune_Byun 05/12/06 :  Optimize & Minimize 'MM_DRM_BUF' buffer size from 128KBytes to 128 Bytes */
typedef	 enum {
	TRANSFER_MODE_1 = 0,			/* transfer undecrypted video data HEAD part in video chunk to vbv buffer */
	TRANSFER_MODE_3 ,				/* transfer Encrypted video data to MM_DRM_BUF */
	TRANSFER_MODE_2 ,				/* transfer undecrypted video data TAIL part in video chunk to vbv buffer */

	DECRYPTION_MODE_1 ,			/* Decrypt  video data(16 Bytes or 64 Bytes each) in MM_DRM_BUF */
//	TRANSFER_MODE_4 ,				/* transfer Decrypted video data(16 Bytes or 64 Bytes each) in MM_DRM_BUF to VBV Buffer */
	
	DECRYPTION_MODE				/* transfer decrypted video data     MAIN part in video chunk to MM_DRM_BUF */
//	DECRYPTION_READY_MODE ,		/* transfer decrypted video data     MAIN part in video chunk to MM_DRM_BUF */
//	DECRYPTION_DO_MODE				/* transfer decrypted video data     MAIN part in video chunk to VBV Buffer */
}AVI_Decrypt_State_et;	
/* <<< @: 5010-xxx.HoJune_Byun 05/12/06 :  Optimize & Minimize 'MM_DRM_BUF' buffer size from 128KBytes to 128 Bytes */
//////////////////////////////////////////////////////////////////


/* <<< @: 5010-xxx.HoJune_Byun 05/11/15 : Inactivate unused code */
// By SISO for Partial DRM buffer
#if 0
typedef struct _SPartialDRM
{
	UCHAR acPartialBuff[2230]; //Greater than 2224 (for some hardware bug !!!)
	UINT ui32OffSet;
	
}SPartialDRMBuff;


typedef struct _SPartialDDChunk
{
	UCHAR acPartialBuff[PARTIAL_DDCHUNK];
	UINT ui32OffSet;
	
}SPartialDDChunkBuff;

#if 0
typedef struct _SPartialEncryFrame
{
	UCHAR* acPartialBuff;
	UINT ui32OffSet;
	
}SPartialEncryptFrame;
#endif

typedef struct _SPartialEncryFrame
{

	UCHAR*	pBuffPartial; 		/* This should point to the malloced buffer */
	UCHAR* 	pCurrPartialPtr;
	UINT 	ui32PreSector;		/* This the bytes remaining which were insufficient */
	UINT 	ui32PostSector;		/* This is the bytes remaining after calculating no. of full sectors */
	UINT	ui32NumFullSectors;	/* This is no. of full sectors which have to be copied 		*/

}SPartialEncryptFrame;
#endif/* 0 */
/* <<< @: 5010-xxx.HoJune_Byun 05/11/15 : Inactivate unused code */



#define	AVIF_HASINDEX 			0x00000010
#define	AVIF_MUSTUSEINDEX 		0x00000020
#define	AVIF_ISINTERLEAVED	 	0x00000100
#define	AVIF_TRUSTCKTYPE		0x00000800
#define	AVIF_WASCAPTUREFILE 	0x00010000
#define	AVIF_COPYRIGHTED 		0x00020000



/* <<< @: 5010-xxx.HoJune_Byun 05/11/15 : Inactivate unused code */
#if 0
/*	avi header setting	*/
//avimainheader
typedef struct{

	UINT	fcc;
	UINT	cb;
	UINT	dwMicroSecPerFrame;
	UINT	dwMaxBytesPerSec;
	UINT	dwPaddingGranularity;
	UINT	dwFlags;
	UINT	dwTotalFrames;
	UINT	dwInitialFrames;
	UINT	dwStreams;
	UINT	dwSuggestedBufferSize;
	UINT	dwWidth;
	UINT	dwHeight;
	UINT	dwReserved[4];
}AVIMAINHEADER_st;


//Video/Audio  StreamHeader (vstrh & astrh)  -> 'strh' chunk
typedef struct {
	UINT	fcc;
	UINT	cb;	
	UINT	fccType;
	UINT	fccHandler;
	UINT	dwFlags;
	BYTE2	wPriority;
	BYTE2	wLanguage;
	UINT	dwInitialFrames;
	UINT	dwScale	;
	UINT	dwRate;
	UINT	dwStart;	
	UINT	dwLength;
	UINT	dwSuggestedBufferSize;
	UINT	dwQuality;
	UINT	dwSampleSize;
	BYTE2	wLeft;
	BYTE2	wTop;
	BYTE2	wRight;
	BYTE2	wBottom;		
}STREAMHEADER_st;


//VideoStreamFormat ( BitMapInfoHeader)  -> 'strf' chunk
typedef struct {
	UINT	vstrf_fcc;
	UINT	vstrf_cb;
	
	UINT	vstrf_size;
	UINT	vstrf_dwWidth;
	UINT	vstrf_dwHeight;
	BYTE2	vstrf_wPlanes;
	BYTE2	vstrf_wBitCount;
	UINT	vstrf_dwCompression;
	UINT	vstrf_dwSizeImage;
	UINT	vstrf_dwXpelsPerMeter;
	UINT	vstrf_dwYpelsPerMeter;
	UINT	vstrf_dwClrUsed;
	UINT	vstrf_dwClrImportant;
}VIDEO_STREAMFORMAT_st;


//VideoStreamData
//VideoStreamName


// AudioStreamFormat (WAVEFORMATEX) -> 'strf' chunk
typedef struct {
	UINT	astrf_fcc;
	UINT	astrf_cb;
	BYTE2	astrf_wFormatTag;
	BYTE2	astrf_wChannels;
	UINT	astrf_nSamplesPerSec;
	UINT	astrf_nAvgBytesPerSec;
	BYTE2	astrf_nBlockAlign;
	BYTE2	astrf_wBitsPerSample;
	BYTE2	astrf_cbSize;	

}AUDIO_STREAMFORMAT_st;
#endif/* 0 */
/* <<< @: 5010-xxx.HoJune_Byun 05/11/15 : Inactivate unused code */

/*
typedef struct tagWAVEFORMATEX{ 
    WORD  wFormatTag; 
    WORD  nChannels; 
    DWORD nSamplesPerSec; 
    DWORD nAvgBytesPerSec; 
    WORD  nBlockAlign; 
    WORD  wBitsPerSample; 

⌨️ 快捷键说明

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