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

📄 vde_api.h

📁 SAMSUNG 5009的源代码
💻 H
字号:
/******************************************************************************
 *   Filename    : VDE_api.h
 *   Start       : 2005.1.18
 *   By          : Inseo Han
 *   Contact     : ishan@samsung.com
 *   Description : 
 ******************************************************************************
 */ 

#ifndef _VDE_API_H_
#define _VDE_API_H_

#ifdef __cplusplus
extern "C" {
#endif

/*
	Use Task to handle mi_data_req 
*/
#define _VDE_USE_DATA_TASK		0


/* 
	_VDE_USE_ALL_DATA
		: Use all the available data at once when decodng B pic 
	
	_VDE_B2R_EMPTY_CONCEAL
		: Handle the B2R underflow due to vbv buffer underflow 
		by setting the fake pic_hd at the end of the data
		(20051206, ishan) 
*/
#if _USE_5005 || _USE_5015
#define _VDE_USE_ALL_DATA			1
#define _VDE_B2R_EMPTY_CONCEAL		1
#else
#define _VDE_USE_ALL_DATA			0
#define _VDE_B2R_EMPTY_CONCEAL		0
#endif


/******************************************************
 *       Special VOB ID
 *****************************************************/
#define VDE_VOB_ID_PLAY_MEM		0xffffffff


/******************************************************
 *       B2R block size
 *****************************************************/

/* <<< @: 5008CHN-XXX.cklee 050521 : b2r buffer size change for karaoke support */
#if _REDUCE_HW_MEMORY_V1
#define VDE_B2R_NUM_MB_ROWS			4
#else
#define VDE_B2R_NUM_MB_ROWS			6 //8
#endif
/* >>> @: 5008CHN-XXX.cklee 050521 */
	
#define VDE_B2R_NUM_ROWS			(VDE_B2R_NUM_MB_ROWS<<4)

#define VDE_B2R_NUM_ROWS_MAX		(0x3ff)

#if _USE_NEW_VIDEO_TRICK || _USE_NEW_VIDEO_TRICK_OLD
#define VDE_HIGH_BITRATE_THRESHOULD	3500
#endif
typedef enum {
	VDE_DECODER_DUMMY,
	VDE_DECODER_M2VD,
	VDE_DECODER_SWVD
} VDE_Decoder_et;

typedef enum {
	VDE_CMD_OK,
	VDE_CMD_STILL,	/* Still picture or the last picture */
	VDE_CMD_FAIL,
	VDE_CMD_NO_CMD_RDY,
	VDE_CMD_INVALID_STATE,
	VDE_CMD_INVALID_HD
} VDE_CmdRet_et;

typedef VOID (*DEC_OUT_CALLBACK)(VOID);

/* M2VD commands */
#define M2VD_CMD_STOP				0x00
#define M2VD_CMD_PIPE_INIT			0x01
#define M2VD_CMD_VD_INIT			0x02
#define M2VD_CMD_SWITCH_CONTEXT	0x03
#define M2VD_CMD_RESET_CMBCNT	0x04
#define M2VD_CMD_FLUSH_VLDB		0x05
#define M2VD_CMD_FLUSH_PSPA		0x06
#define M2VD_CMD_FLUSH_BUF		0x07
#define M2VD_CMD_VLDB_RELEASE		0x08
#define M2VD_CMD_PARSE_STREAM	0x09
#define M2VD_CMD_WRITE_UD2MEM	0x0A
#define M2VD_CMD_DATA_AVAIL		0x0B
#define M2VD_CMD_DEC_MB			0x0C
#define M2VD_CMD_DEC_MB_ROW		0x0D
#define M2VD_CMD_DEC_PIC			0x0E
#define M2VD_CMD_DEC_UNTIL_PIC	0x0F

#if _USE_FSMC
/* Identifier of dec_cmd for Stop rewind */
#define M2VD_CMD_FOR_STOP_REWIND	0x10000000
#endif

#if _USE_5005 || _USE_5015
#define M2VD_CMD_PREFIX_FOR_RESTART_REWIND		0x20000000
#define M2VD_CMD_FOR_RESTART_REWIND				(M2VD_CMD_PREFIX_FOR_RESTART_REWIND|0x20F)
#endif


VOID iVDE_PreInit(VOID);
VOID iVDE_DeInit(VOID);
VOID iVDE_Init(VOID);
VOID iVDE_Play(VOID);
BOOL iVDE_IsPlayMemPossible(VOID);	/* 20050908, ishan */
UINT iVDE_PlayMem(VOID);
VOID iVDE_Stop(VOID);
BM_FILLEDLIST * iVDE_GetOutputFilledList(VOID);
BM_FILLEDLIST * iVDE_GetInputFilledList(VOID);
BOOL iVDE_GetBpicPending(VOID);
VOID iVDE_RegisterDecOutCallback(DEC_OUT_CALLBACK func);
VOID iVDE_UnregisterDecOutCallback(VOID);
VOID iVDE_SetDecFrameMode(SH_PlayFrameMode_et frame_mode);
SH_PlayFrameMode_et iVDE_GetDecFrameMode(VOID);
VOID iVDE_GetSeqInfo(SH_SeqInfo_t *pSeq_info);
VOID iVDE_SetSeqInfo(SH_SeqInfo_t *pSeq_backup);
BOOL iVDE_GetDecEnd(VOID);
VOID iVDE_ResetUdExtractPtr(VOID);
VOID iVDE_SetUdExtract(BOOL enable);
VOID iVDE_RefreshUdExtract(VOID);
VOID iVDE_SetNormalFromTrick(VOID);
UINT iVDE_GetBitRateValue(VOID);
VOID iVDE_SetScrambledVcdStream(BOOL is_scrambled_vcd);
UINT iVDE_GetVbvBufferLevel(VOID);

#if _USE_QUICK_HANDLE_CMD_RDY				
BOOL iVDE_NeedQuickHandleDecUntilPic(VOID);
VOID iVDE_PostHandleDecUntilPic(VOID);
#endif

VDE_CmdRet_et iVDE_HandleDecUntilPic(VOID);
VOID iVDE_HandleErrorDecUntilPic(VOID);
VDE_CmdRet_et iVDE_GetLastCmdReturn(VOID);
VOID iVDE_NotifyFirstStillPicDisplayed(VOID);
VOID iVDE_SetCmd(UINT pic_type, UINT cmd);
VOID iVDE_SetFastModeCmd(UINT pic_type, UINT cmd);
#if _USE_M2VD_REWIND_INT
VOID iVDE_StopRewind(VOID);
#else
VOID iVDE_StopRewind(UINT rewind_count);
#endif


#if _USE_B2R_ZOOM_CHANGE
#if _USE_M2VD_REWIND_INT
VOID iVDE_StopRewindForChangeDecRange(VOID);
#else
VOID iVDE_StopRewindForChangeDecRange(UINT rewind_count);
#endif
VOID iVDE_SaveNewDecodeRange(UINT dec_start_row, UINT dec_end_row);
VOID iVDE_ApplyNewDecodeRange(VOID);
#endif

#if (_USE_B2R_ZOOM_CHANGE) || (_USE_HANDLE_B2R_LAST_MB_ERROR)
VOID iVDE_RestartRewind(UINT last_pic_addr);
#endif

#if _USE_B2R_ZOOM_CHANGE_REWIND
VOID iVDE_SetDecodeRange(UINT cur_pic_type, UINT dec_start_row, UINT dec_end_row);
#else
VOID iVDE_SetDecodeRange(BOOL disable_slice_skip, UINT dec_start_row, UINT dec_end_row);
#endif

BOOL iVDE_IsPicStructChanged(VOID);
VOID iVDE_SwitchToRefPic(VOID);
UINT iVDE_DisplayNextRefPic(void);

#if _USE_FSMC
VOID iVDE_EnableFsmc(BOOL enable);
BOOL iVDE_IsFsmcEnabled(VOID);
#endif

BOOL iVDE_IsEndWithSeqEndCode(VOID);

#if _USE_FIX_B2R_REW_POINT_BUG
BOOL iVDE_ChangeVbvAreaStart(UINT start_addr);
#endif

#if _SH_SUPPORT_BAT_VIDEO
void iVDE_PutFilledBufferForBAT(BM_NODE * node);
#endif

#ifdef __cplusplus
}
#endif

#endif

⌨️ 快捷键说明

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