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