vcd_define.h
来自「AMLOGIC DPF source code」· C头文件 代码 · 共 402 行 · 第 1/2 页
H
402 行
INT32U end_time;
INT8U type;
} VCDABINFO;
typedef struct
{
INT8U VcdDiscType;
INT32U VcdTOCFirstTrkTime;
INT32U VcdTOCTotalTime;
INT16U ListOffset;
INT16U ListOffsetSec;
INT16U ListOffsetFrm;
INT8U VcdPlayMode;
INT8U TimeContinue;
INT8U StillPicFlag;
INT8U NoAudioFlag;
INT8U SoftwareTimerFlag;
INT32U SoftwareTimer;
INT32U VcdStartTime;
INT32U VcdEndTime;
INT8U DisPlayMode;
INT8U ResolutionType;
INT8U MpegChannelFlag; // 0-L/R, 1-L/L, 2-R/R, 3-R/L
INT8U ItemPlayStatus;
INT8U PlayStatus;
INT8U BlkCurStatus;
INT8U BlkNextStatus;
INT8U JumpWait;
INT8U VideoID;
INT8U AudioID;
INT8U TimeOut;
INT8U CollectTimeOut;
INT8U WaitTimeOut;
INT8U *SequenceHeader;
INT32U SizeOfSequenceHeader;
INT8U AutoPauseSector;
INT32U SectorCount;
INT32U VideoMaxLevel;
INT32U VideoMinLevel;
INT32U AudioMaxLevel;
INT32U AudioMinLevel;
INT8U AudioChannelNo;
INT16U VideoHeight;
INT16U VideoWidth;
INT32U LastVCDTimer ;
INT32U LastVCDCollectTimer ;
INT32U LastVCDWaitTimer;
INT8U CmdError;
INT8U CmdForbidden;
INT8U PlaySpeed;
INT8U PlayDirection;
INT32U PlayLength;
INT32U LastSectorStart;
INT32U LastSectorCount;
INT8U AlreadyStopped;
INT32U TrackLength;
INT32U FirstPTS;
INT32U iTempD;
INT32U iTTTT;
//SysEvent ID
AVSysEvent_t UICommandEventID;
AVSysEvent_t ReadDoneEventID;
AVSysEvent_t TargetEmptyEventID;
AVSysEvent_t ReadEndEventID;
AVSysEvent_t WaitTimerEndEventID;
AVSysEvent_t VideoPicdisplayEventID;
VCDABINFO ABInfo;
VCDTRACKADDR Start;
VCDTRACKADDR End;
VCDTRACKADDR Now;
// INT8U PlayStatus;
// INT8U SingleStep;
// INT8U fatal_disc_error;
// INT16U ItemPlayStatus;
// INT32U read_disc_error;
// INT32U stop_level;
// INT32U cdda_info[100];
// INT32U time_display_en;
// INT32U DispTimerCount;
// INT32U time_display_req;
// INT32U DiscInfo_Error;
// INT32U SequenceEndSector;
// INT32U TrackPlayBackTime;
// INT32U remote_command_get;
// unsigned char SizeMap[13];
} VCDVAR;
typedef struct
{
INT8U Track;
INT8U FirstTrack;
INT8U LastTrack;
INT8U PbcFlag;
INT8U PsdListHeader;
INT8U PlayStatus;
INT8U PlaySpeed;
INT32U PsdSize;
}VCDINFO;
#pragma Pack()
/***************************** Macro ********************************/
/*
_Macro()
*/
#define M_BCDToHEX(y) ((((y)>>4)&0x0f)*10+((y)&0x0f))
#define M_HEXToBCD(y) (((((y)/10)<<4)|((y)%10)))
#define M_GetHighByte(x) (unsigned char)((x)>>8)
#define M_GetLowByte(x) (unsigned char)(x)
#define M_TOC_TRACK_TIME(x) ((vcd_disk_info->discinfo.cddvdinfo.Track[(x)].Pmin*60+vcd_disk_info->discinfo.cddvdinfo.Track[(x)].Psec)*75+vcd_disk_info->discinfo.cddvdinfo.Track[(x)].Pframe)
#define M_TOC_TOTAL_TIME ((vcd_disk_info->discinfo.cddvdinfo.Total.Pmin*60+vcd_disk_info->discinfo.cddvdinfo.Total.Psec)*75+vcd_disk_info->discinfo.cddvdinfo.Total.Pframe)
#define M_VCD_START_TIME ((uVCDVAR->Start.Min*60+uVCDVAR->Start.Sec)*75+uVCDVAR->Start.Frm)
#define M_VCD_END_TIME ((uVCDVAR->End.Min*60+uVCDVAR->End.Sec)*75+uVCDVAR->End.Frm)
#define M_VCD_NOW_TIME ((uVCDVAR->Now.Min*60+uVCDVAR->Now.Sec)*75+uVCDVAR->Now.Frm)
#define M_SVCD_SEARCH(x) ((uVCDSEARCH->Address[(x)].Min*60+uVCDSEARCH->Address[(x)].Sec)*75+uVCDSEARCH->Address[(x)].Frm)
#define M_INIT_SYNC_BUFF \
for(unsigned int iTemp=0; iTemp<VCD_SYNC_BUFFSIZE; iTemp++) \
vcdbuf_sync[iTemp] = 0 ;
#define M_INSERT_VIDEO_DATA \
unsigned char *v_stuff ; \
v_stuff = (unsigned char *)AVMem_malloc(VCD_VIDEO_GARBAGE_SIZE) ; \
memset(v_stuff, 0xff, VCD_VIDEO_GARBAGE_SIZE) ; \
VCDInsertVideoData(v_stuff, VCD_VIDEO_GARBAGE_SIZE, uVCDVAR->VideoID, vcd_targetfd) ; \
AVMem_free(v_stuff);
#define M_INSERT_AUDIO_DATA \
unsigned char *a_stuff ; \
a_stuff = (unsigned char *)AVMem_malloc(VCD_AUDIO_GARBAGE_SIZE) ; \
memset(a_stuff, 0xff, VCD_AUDIO_GARBAGE_SIZE) ; \
VCDInsertMpegAudioData(a_stuff, VCD_AUDIO_GARBAGE_SIZE, uVCDVAR->AudioID, vcd_targetfd) ; \
AVMem_free(a_stuff);
#define M_CLEAR_CMD_FLAG \
uVCDVAR->CmdError = 0 ; \
uVCDVAR->CmdForbidden = 0;
#define M_STILL_PIC_ONLY \
((uVCDVAR->NoAudioFlag == 1)&&(uVCDVAR->StillPicFlag == 1)&&((M_VCD_END_TIME - M_VCD_START_TIME)>151))
#define M_AUDIO_PAUSE_PLAY \
vcd_audio_msg = (_audio_msg_t *)AVMem_kmalloc(sizeof(_audio_msg_t)) ; \
vcd_audio_msg->cmd = AUDIO_CMD_PAUSE_PLAY ; \
vcd_audio_msg->param1 = 0 ; \
AVQPost(vcd_audio_msgq, vcd_audio_msg) ;
#define M_AUDIO_START_PLAY \
vcd_audio_msg = (_audio_msg_t *)AVMem_kmalloc(sizeof(_audio_msg_t)) ; \
vcd_audio_msg->cmd = AUDIO_CMD_START_PLAY ; \
if(uVCDVAR->StillPicFlag == 0) \
{ \
vcd_audio_msg->param1 = 1 ; \
} \
else \
{ \
vcd_audio_msg->param1 = 0 ; \
} \
AVQPost(vcd_audio_msgq, vcd_audio_msg) ;
#define M_AUDIO_STOP_PLAY \
vcd_audio_msg = (_audio_msg_t *)AVMem_kmalloc(sizeof(_audio_msg_t)) ; \
vcd_audio_msg->cmd = AUDIO_CMD_STOP_PLAY ; \
vcd_audio_msg->param1 = 0 ; \
AVQPost(vcd_audio_msgq, vcd_audio_msg) ;
#define M_AUDIO_NONSEAMLESS_SETUP \
vcd_audio_msg = (_audio_msg_t *)AVMem_kmalloc(sizeof(_audio_msg_t)) ; \
vcd_audio_msg->cmd = AUDIO_CMD_NON_SEAMLESS_SETUP ; \
vcd_audio_msg->param1 = 0 ; \
AVQPost(vcd_audio_msgq, vcd_audio_msg) ;
#define M_VIDEO_PAUSE_PLAY \
ioctl(vcd_video_fd, VIDEOIO_PLAYCTRL, VIDEO_PLAY | 0x0000) ;
#define M_VIDEO_SLOW_FORWARD_PLAY(x) \
if (x > 32) \
{ \
x = 32 ; \
} \
ioctl(vcd_video_fd, VIDEOIO_PLAYCTRL, VIDEO_PLAY | ((x << 2) & 0xffff)) ;
#define M_VIDEO_STEP_PLAY \
ioctl(vcd_video_fd, VIDEOIO_PLAYCTRL, VIDEO_STEP) ;
#define M_VIDEO_START_PLAY \
ioctl(vcd_video_fd, VIDEOIO_PLAYCTRL, VIDEO_PLAY | 0x100) ;
#define M_FF_BACK2NORMAL \
VCDStopPresentation() ; \
vcd_dstreq.stream_id = (((unsigned)uVCDVAR->VideoID << 24) | \
((unsigned)uVCDVAR->AudioID << 16) | \
(0xffL << 8) | \
(0xff)) ; \
ioctl(vcd_targetfd, TARGETIO_DSTCTL, &vcd_dstreq) ; \
VCDReadPretreatment(3) ;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?