📄 vde_api.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 + -