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 + -
显示快捷键?