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

📄 vcd_def.h

📁 三星ic 9980的源代码. 718版.
💻 H
字号:
 
#ifndef _VCD_COMMON_H_
#define _VCD_COMMON_H_
#include "..\..\custom\include\fp_data.h"
#include "Basic_typedefs.h"
#include "s5h_types.h"
#include "Sys_call_abstract.h"
#include "All_Event.h"
#include "s5l_memmap.h"
#include "s5h_lowapi.h"
#include "util.h"
#include "psd.h"
#include "iodma_api.h"
#include "avl_types.h"
#include "avloader_api.h"
#include "servo_ram_extern.h"
#include "string.h"
#include "FileSystem.h"
#include "BE_API.h"
#include "viddigest.h"
#include "sysdefine.h"
#include "viddec_api.h"

#define _SUPPORT_INTRO_					1
#define _SUPPORT_REMAIN_TIME_				1
#define _SUPPORT_FREEZE_					1
#define _SUPPORT_SCORE_					1
#define _SUPPORT_GOTO_						1

typedef	unsigned long 		ULONG32;
typedef	unsigned	short	USHORT16;
typedef 	unsigned char		UCHAR8;
typedef	signed long		SLONG32;
typedef	signed short		SSHORT16;
typedef	signed char		SCHAR8;

#define VCD_CHGNULL 255
#define PREVIEW_NUM		9

//PBC state
typedef enum{
	PBC_PBCON=0,
#if	_SUPPORT_PGM_RANDOM
	PBC_RANDOM,
	PBC_PROGRAM,
#endif/* _SUPPORT_PGM_RANDOM */
#if _SUPPORT_INTRO_
	PBC_INTRO,
#endif/* _SUPPORT_INTRO_ */	
	PBC_NORMAL
#if 1//DIGEST_PREVIEW
	,PBC_DIGEST
#endif/*DIGEST_PREVIEW*/
}VcdPbcState;

//main state
typedef enum {
	MAIN_STOP=0,
	MAIN_PAUSE,		//wh: for play/stop
	MAIN_SPI,
//	MAIN_TRICK_9PIC,
	MAIN_PLAY
}VcdMainState;

//sub state
typedef enum{
//STOP 
	SUB1_STOP_STOP=0,
	SUB1_STOP_PAUSE,
	SUB1_STOP_SCREENSAVER,
//PLAY_SPI 
	SUB1_SPI_PLAYING,
	SUB1_SPI_WAITING,
	SUB1_PGM_WAITING,
//VCD_PLAY_TRACK 
	SUB1_TRACK_NORMAL,
	SUB1_TRACK_REPEAT_1,
	SUB1_TRACK_REPEAT_ALL,
	SUB1_TRACK_BOOKMARK
}VcdSub1State;

typedef enum{
	SUB2_NORMAL=0,
#if _SUPPORT_REPEAT_AB
	SUB2_REPEAT_A,		//add
	SUB2_REPEAT_AB,
#endif	

	SUB2_TRICK_STEP,
	
	/*	FF/FR	*/
	SUB2_TRICK_FF2,
	SUB2_TRICK_FF4,
	SUB2_TRICK_FF8,
	SUB2_TRICK_FF16,
	SUB2_TRICK_FR2,
	SUB2_TRICK_FR4,
	SUB2_TRICK_FR8,
	SUB2_TRICK_FR16,
	/*	SF/SR	*/
	SUB2_TRICK_SF2,
	SUB2_TRICK_SF4,
	SUB2_TRICK_SF8,
	SUB2_TRICK_SF16,
	SUB2_TRICK_SR2,
	SUB2_TRICK_SR4,
	SUB2_TRICK_SR8,
	SUB2_TRICK_SR16
}VcdSub2State;

typedef enum{
	SUB3_NORMAL=0,
	SUB3_TRACK_ZOOM,
#if _SUPPORT_FREEZE_
	SUB3_FREEZE
#endif/* _SUPPORT_FREEZE_ */
//	SUB3_TRICK_STEP
}VcdSub3State;

//state struct
typedef struct{
	VcdPbcState 	pbc;
	VcdMainState 	main;
	VcdSub1State sub1;
	VcdSub2State sub2;
	VcdSub3State sub3;
}VCD_STATE_STRUCT;

typedef enum{
	TM_APPL,
	TM_VCD_TIMER,
	TM_FE
}VcdMsgHost;

typedef enum{
	CDDA_TRACK,
	VCD_TRACK,
	DATA_CD_TRACK
}VcdTrackType;

typedef enum{
	VCD_NTSC=0,
	VCD_PAL,
	VCD_SINGLE_MPG_AUDIO,
	VCD_STEREO_MPG_AUTIO,
	VCD_DUAL_MPG_AUDIO,
	VCD_NTSC_STILL,
	VCD_NTSC_HIGH_STILL,
	VCD_PAL_STILL,
	VCD_PAL_HIGH_STILL
}VcdAVMode;

typedef enum{
	TRK_ELAPSE_TIME = 0,
	TRK_REMAIN_TIME,
	DISC_REMAIN_TIME,
}VcdDisplayTime;

#define	UOP_POWER 			KEY_POWER_ON
#define	UOP_OPENCLOSE		KEY_OPEN_CLOSE

  #if SEPERATE_PLAY_PAUSE
#define	UOP_PLAY			KEY_PLAY
#define	UOP_PAUSE			KEY_PAUSE
#else
#define	UOP_PLAY			0xFE
#define	UOP_PAUSE			0xFF				/* Seprarate Pause key */
  #endif

#define	UOP_STOP			KEY_STOP
//#define	UOP_STEP		
//#define	UOP_TVCHANGE 	/* TV type change (NTSC, PAL) */
	//for vcd
//#define	UOP_VCD_TRACK_PLAY 	
#define	UOP_VCD_TIME_SEARCH  	KEY_SEARCH
#define  	UOP_VCD_PREV			KEY_SKIP_BACK
#define	UOP_VCD_NEXT 			KEY_SKIP_NEXT
#define	UOP_VCD_FORWARD_SCAN 	KEY_SCAN_FWD
#define	UOP_VCD_BACKWARD_SCAN	KEY_SCAN_REV
#define	UOP_VCD_MENU 				KEY_PBC			//KEY_MENU
#define	UOP_VCD_BTN_SEL_ACT 		1000
#define	UOP_VCD_RETURN			KEY_RETURN
#define	UOP_VCD_AUDIO				KEY_AUDIO
#define	UOP_VCD_REPEAT 			KEY_REPEAT
#define 	UOP_VCD_REPEAT_AB		KEY_REPEAT_AB
#define   UOP_VCD_SLOW				KEY_SLOW
#define   UOP_VCD_STEP				KEY_STEP
#define   UOP_VCD_ZOOM				KEY_ZOOM
#define   UOP_VCD_UP				KEY_UP
#define	UOP_VCD_DOWN				KEY_DOWN
#define	UOP_VCD_LEFT				KEY_LEFT
#define  	UOP_VCD_RIGHT				KEY_RIGHT
#if _SUPPORT_PGM_RANDOM
#define   UOP_VCD_ENTER				KEY_ENTER
  #if SEPERATE_PGM_RAN
  #define	UOP_VCD_PROG				KEY_PROGRAM
  #define UOP_VCD_RAN				KEY_RANDOM
  #else
  #define   UOP_VCD_PLAYMODE			KEY_PROGRAM
  #endif/*SEPERATE_PGM_RAN */
#endif/* _SUPPORT_PGM_RANDOM */
#define 	END_OF_PLAY	250
#define	TIME_OUT		251
#define 	NOTHING		255
#define	NUMBER_KEY	252
#if _SUPPORT_INTRO_
#define	UOP_VCD_INTRO				KEY_INTRO
#define 	VCD_INTRO_LENGTH	11//7
#endif/* _SUPPORT_INTRO_ */
#if DIGEST_PREVIEW
#define 	UOP_VCD_DIGEST			KEY_DIGEST
#endif/* DIGEST_PREVIEW*/
#if _SUPPORT_REMAIN_TIME_
#define	UOP_VCD_REMTIME				KEY_REM
#endif/* _SUPPORT_REMAIN_TIME_ */

#if _SUPPORT_FREEZE_
#define 	UOP_VCD_FREEZE			KEY_FREEZE
#endif/* _SUPPORT_FREEZE_ */
#if _SUPPORT_SCORE_
#define 	UOP_VCD_SCORE				KEY_SCORE
#endif/* _SUPPORT_SCORE_ */
#if _SUPPORT_GOTO_
#define 	UOP_VCD_GOTO				KEY_GOTO
#endif/* _SUPPORT_GOTO_ */

#define 	VCD_2X_STEP	375//750   //maytest 050815
#define 	VCD_4X_STEP				(2*VCD_2X_STEP)
#define 	VCD_8X_STEP				(2*VCD_4X_STEP)
#define 	VCD_16X_STEP				(2*VCD_8X_STEP)

#define 	VCD_FFFR_LENGTH	75	//150

#if 0
typedef struct{
	VcdMsgHost 	sender;
	VcdMsgHost	receiver;
	keylist		key;
	ULONG32		value;
}VCD_Msg;
#else
#if 0
typedef struct {
	UCHAR8	sender;
	UCHAR8	param;
	UCHAR8	ext1;
	ULONG32	ext2;
} VCD_Msg ;
#else
typedef Event_t VCD_Msg;
//#define VCD_Msg Event_t
#endif
#endif

/*  header  */
#define 	PLAY_LIST_HEADER     		0x10
#define 	SELECTION_LIST_HEADER    	0x18
#define	SYNCHEAD_LEN					24
#define	SPI_LEN						150		//150 sector
#define   SPI_MAX_NUM				1980
#define   OFFSET_MULTIPLIER			8
#define   SECTOR_UDATA_LEN			2048

#if 0
typedef struct {
	UCHAR8	min;
	UCHAR8	sec;
	UCHAR8	frame;
} MSF_STRUCT;
#else
typedef  S5H_MSF_t MSF_STRUCT;
#endif

//INFO.VCD
typedef struct{
	UCHAR8		reserved[SYNCHEAD_LEN];
	UCHAR8		system_id[8]; 
	USHORT16	version_no;
	UCHAR8		album_id[16]; 
	USHORT16	volume_no_album; 
	USHORT16	album_set_seq_no;
	UCHAR8		video_type_map_mpeg_track[13]; 
	UCHAR8		status_flag;
	ULONG32		psd_size;
	MSF_STRUCT	first_segment_addr;
	UCHAR8		offset_multiplier;
	USHORT16	max_list_id;
	USHORT16	max_segment_no;
	UCHAR8		spi_contents_table[SPI_MAX_NUM];
//	UCHAR8 		reserved[12];
} VCD_INFO_STRUCT;

typedef struct {
	UCHAR8		reserved[SYNCHEAD_LEN];
	UCHAR8 		file_id[8];		
	USHORT16	version_number; 		
	USHORT16	entries_used;	     
	struct
	{
		UCHAR8		track_no;
		UCHAR8		entry_msf[3];
	} entry_table[500];
//	UCHAR		reserved[36];
} VCD_ENTRY_STRUCT ; 

//PLAY LIST
typedef struct {
	UCHAR8		header;						//	1B
	UCHAR8		noi;							//	1B
	USHORT16	list_id;						//	2B
	USHORT16	previous_list_offset;			//	2B
	USHORT16	next_list_offset;				//	2B
	USHORT16	return_list_offset;			//	2B
	USHORT16	playing_time;				//	2B
	UCHAR8		play_item_wait_time;		//	1B
	UCHAR8		auto_pause_wait_time;		//	1B
} VCD_PLAYLIST_STRUCT;

//SELECTION LIST
typedef struct {
	UCHAR8	 	header;						//	1B
	UCHAR8		reserved;					//	1B
	UCHAR8		nos;						//	1B
	UCHAR8		bsn;						//	1B	base of selection number
	USHORT16	list_id;						//	2B
	USHORT16	previous_list_offset;			//	2B
	USHORT16	next_list_offset;				//	2B
	USHORT16	return_list_offset;			//	2B
	USHORT16	default_list_offset;			//	2B
	USHORT16	timeout_list_offset;			//	2B
	UCHAR8		wait_time_timeout;			//	1B
	UCHAR8		loop_count_jump_timing;		//	1B
	USHORT16	play_item_number;			//	2B

//	USHORT16 	loop_count;
//	USHORT16	jump_timing;
} VCD_SELECTIONLIST_STRUCT;

typedef union{
	VCD_PLAYLIST_STRUCT 		PlayList;
	VCD_SELECTIONLIST_STRUCT 	SelectionList;
}VCD_LIST;

typedef struct {
	UCHAR8		Total_track_cnt;
	UCHAR8		CurrTrack_no;
	VcdTrackType	Type; //for distinguish VCD or CDDA track
	VcdAVMode	VideoMode; //for distinguish PAL or NTSC , still , motion ,etc..
	MSF_STRUCT	Track1_startMSF;
	MSF_STRUCT	LeadOut_MSF;
	
	MSF_STRUCT	CurrTrack_startMSF;
	MSF_STRUCT	CurrTrack_endMSF;
	ULONG32		TrackLBAList[100];
//	ULONG32		CurrCheckPoint;
}VCD_TRACK_INFO;

typedef struct {
	MSF_STRUCT 	start;
//	MSF_STRUCT 	checkpoint;
	USHORT16	step;
}VCD_FF_FR;

typedef struct {
//	MSF_STRUCT	PlayStart;
//	MSF_STRUCT	PlayEnd;
//	ULONG32		consumedLBA;
//	MSF_STRUCT	curentMSF;
	ULONG32 	OldTckSec;
	ULONG32		CurAbsLBA;
	ULONG32		CurTckSec;
	ULONG32		CurCheckLBA;
	ULONG32		AbsRemSec;
	ULONG32		RelRemSec;
}VCD_TIMER;

typedef struct{
	USHORT MinNumberkey;
	USHORT MaxNumberkey;
}VCD_NUMKEY_RANGER;

#if 0
typedef struct{
	UCHAR8		ValidFlag;  // 0 - valid changed; 1 - invalid changed; 2 - Nothing changed 
	UCHAR8		Value;
}VCD_OSD_INFO;
#endif

extern 	VCD_STATE_STRUCT			gVcdCurrentState;
//extern	VCD_STATE_STRUCT			gVcdStateBackup;
extern	VCD_INFO_STRUCT* 			gVcdInfo;
extern	VCD_ENTRY_STRUCT*			gVcdEntry;
extern	UCHAR8						gVcdPSDBuffer[2352];
extern	VCD_LIST*					gVcdCurrentList;
extern	USHORT16					gVcd_NOI_NOS[256];
extern	UCHAR8						gVcd_Total_No;
//extern	UCHAR8 						gVcd_KeyInput;
extern	UCHAR8						gVcd_PlaylistCurItemNo;
extern	USHORT16					gVcdPsdCnt;

//extern	MSF_STRUCT					gVcdNextPrev;
extern	MSF_STRUCT 					gVcdPlayStart, gVcdPlayEnd;
extern	MSF_STRUCT					gVcdMark[3];
	
extern	VCD_TRACK_INFO				gVcdTrackInfo;
extern	VCD_FF_FR					gVcdFfFr;
extern 	VCD_TIMER					gVcdTimeInfo;
extern 	SysTimer_t					gVcdSPIWaitTimer;
extern 	SysQueue_t					gQ_VCD;
extern	UCHAR8						loop_count;
extern	UCHAR8						jump_timing;
//extern 	BYTE 						CD_TOC_AREA[100][5];
//extern 	UCHAR 						A0_A1_A2[3][5];
extern 	AVL_QSubInfo_t 				gVcdCurSubQ;
extern 	BufferManager_t				gBM_TrackBuffer;
extern 	VcdDisplayTime				gVcdDisplayTime;

extern 	BOOL						bMixCDDAplay;
extern 	BOOL						bFBEnd_PBCON;

extern 	S5H_BEStatus_t 				gBE_Status;

#if _SUPPORT_PGM_RANDOM
extern 	Program_t					gProgram;
#endif

#if _SUPPORT_GOTO_
extern 	MSF_STRUCT					gVcdGotoAddr;
#endif/* _SUPPORT_GOTO_ */

#if _SUPPORT_GAMECD
extern 	BOOL						gIsGameCD;
#endif
extern 	ULONG	gSearchTime;

extern void S5H_PlayCD ( S5H_MSF_t start,S5H_MSF_t end ,UCHAR type);
extern void S5H_PlayCD_HighStill(S5H_MSF_t start,S5H_MSF_t end);
extern void S5H_PlayCD_Still(S5H_MSF_t start,S5H_MSF_t end);
extern void S5H_Stop(void);
// extern void S5H_Pause( void );
extern void Vcd_SendMsg( void);
extern S5H_ErrType_t S5H_DumpCd( S5H_MSF_t start,S5H_MSF_t end, void *buffer_1, BOOL edc_chk );
extern void S5H_AttachPlayCallback( S5H_PLAYCALLBACK func );
extern void S5H_DetachPlayCallback( void );
//extern ulong  CD_id_dec(ulong data1,BYTE data2);
extern void OsdMsgCtrlTime(/*ULONG  cur_time*/);
extern void AVL_SetEndMSF( ULONG end );
extern void OsdMsgDsp(DspStatus_t	display_status);
extern void Audio_Mute(BOOL enable);
#if VIDEO_LOGO
	extern void VD_PlayLogo ( void );
#endif
extern DiscType_t	GetDiscType(void);
VOID SetTrickMode ( VOID );
VOID EndTrickMode ( VOID );
extern VOID StartPreviewMode ( VOID );
extern VOID EndPreviewMode(VOID);

#define	_VCD_SUPPORT_PROGRAM_RANDOM_ 	0
#if _VCD_SUPPORT_PROGRAM_RANDOM_
#define VCD_PROGRAM_MAXNUM 20
typedef struct{
UCHAR8	Pgm[VCD_PROGRAM_MAXNUM];
UCHAR8	CurPtr;
UCHAR8	PgmNum;
}VCD_PROGRAM_STRUCT;
typedef struct{
UCHAR8	track_left_cnt;
UCHAR8	track_left_list[99];
}VCD_RANDOM_STRUCT;
#endif

//the following maybe need change from ARM to CALM
#define VcdMalloc(x) 			SysMalloc(x)
#define VcdFree(x)			SysFree(x)
//#define VcdDumpCd(x,y,z) 	S5h_DumpCd(x,y,z)

#include "Vcd_PbcOn.h"
#include "Vcd_main.h"
#include "Vcd_PbcOff.h"
#include "Vcd_util.h"

#endif

⌨️ 快捷键说明

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