亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? play.cc

?? 一個兩碟控制的VCD的代碼,兩碟之間的轉動及連續播放,已大量生產的CODE.
?? CC
?? 第 1 頁 / 共 5 頁
字號:
    /* 2..99 -> play track */
    if ((playitem_number > 1) && (playitem_number < 100)) {
        play_track(playitem_number - 1); /* convert to 1 base */

        cur_track_number = playitem_number - 1; /* for display purpose */
    } else if ((playitem_number > 99) && (playitem_number < 600)) {
        play_entry(playitem_number - 99); /* 100..599 -> play entry */
    } else if ((playitem_number > 999) && (playitem_number < 2980)) {
        play_segment(playitem_number - 999); /* 1000..2979 -> play segment */
    } else {
        /* wrong item number. We go to the PLAY_WAIT_TIME_STATE and
	   hopefully, we will get good play item next time after
	   time expired or user inputs.*/
	play_state = PLAY_WAIT_TIME_STATE;
    }
}

/*------------------------------------------------------------------------
  Function:

  Parameters:

  Description: This function checks if we need to adjust the
               play_item_end_time.
------------------------------------------------------------------------*/
void check_playing_time()
{
    int mmssff;

    /* if we are playing item from play list, we need to check the */
    /* playing time.                                               */
    if ((cur_list_state ==  PLAY_LIST_STATE) &&
        (play_list_playing_time > 0)) {
        mmssff = logical2physical(5*(play_list_playing_time));
        play_item_end_time =
            adjCDtime(play_item_start_time, mmssff, 1);
    }
}

/*------------------------------------------------------------------------
  Function: play_track
  Parameters:
      track_number: The track number to be played. The track number is
          1 base. For VideoCD, the mpeg track number starts at 2 is
          converted to 1 base. Fox example: If we want to play track 2
          on video CD, the track_number should be 1.
  Description:
      It plays an MPEG audio/video track.
------------------------------------------------------------------------*/
static void play_track(int track_number)
{
    int mmssff;

    /* reset bad audio frame counter to zero at the beginning */
       bad_track_len = 0;

    /* reset picture_type to normal */
    picture_type = 0xe0;
    /* update panel */
    panel_play_track(track_number);

    /* 15-08-96 Alger */
    getTrackTime(track_number, &CurrentTrackTime);
    dsa_reset();

    /* get track info */
    get_track_info(track_number, &play_item_begin_time,
                   &play_item_real_end_time,
                   &play_item_type);
    play_item_start_time = play_item_begin_time;
    play_item_end_time = play_item_real_end_time;


    /* find out whether the track contains entries */
     if ((CDinfo.type == CD_VCD) && (!PBC_on) &&
	 (PLAY_vcd_type & (VCD_TYPE_11|VCD_TYPE_20)) &&
         (play_item_type == DATA_TRACK)) {
         track_entry_number = get_track_entries(track_number,
                                                &track_entry_beg,
                                                &track_entry_end);

         track_current_entry = track_entry_beg;

         if (!intro_mode && track_entry_number > 1) {
             play_state = PLAY_ENTRY_LIST_STATE;
             return;
         }
    }

    PRINTF(("track %d, start time %x, end time %x\n", track_number,
       play_item_start_time, play_item_end_time));

    /* if we are playing item from play list, we need to check the */
    /* playing time.                                               */
    check_playing_time();

    /* set the play_end time to INTRO_TIME_MMSSFF */
    if (intro_mode) {
        mmssff = adjCDtime(play_item_start_time, INTRO_TIME_MMSSFF, 1);
        if (play_item_end_time >= mmssff) {
	    second_endCDtime = mmssff;
        }
    }

    play_item_mode = PLAY_INFO_STOP_MODE;

    /* go to play */
    play_state = PLAY_NORMAL_STATE;
    return;
}

/*------------------------------------------------------------------------
  Function: play_entry
  Parameters:
      entry_number: The entry number that this function will play.
  Description:
      Play an entry in VIDEO CD.
------------------------------------------------------------------------*/
static void play_entry(int entry_number)
{
    unsigned char track_number;

    /* get entry info */
    get_entry_info(entry_number, &track_number,
                   &play_item_start_time,  /* entry start time */
                   &play_item_real_end_time);

    /* update panel & OSD */
    cur_track_number = track_number - 1;
    panel_play_track(cur_track_number);

    /* get track info, since we play entry until track end */
    get_track_info(track_number - 1, /* logical track starts at 1 */
		   &play_item_begin_time,  /* starting time of track */
                   &play_item_real_end_time,
                   &play_item_type);
    play_item_end_time = play_item_real_end_time;

    PRINTF(("entry %d, start time %x, end time %x\n", entry_number,
       play_item_start_time, play_item_end_time));

    /* if we are playing item from play list, we need to check the */
    /* playing time.                                               */
    check_playing_time();

    play_item_mode = PLAY_INFO_STOP_MODE;
    play_item_type = DATA_TRACK;

    /* go to play */
    PRINTF(("Play Entry %d\n", entry_number));
    play_state = PLAY_NORMAL_STATE;

    return;
}

/*------------------------------------------------------------------------
  Function:play_entry_in_track

  Parameters:

  Description:
------------------------------------------------------------------------*/
static void play_entry_in_track(int entry_number)
{
    int mmssff;
    int dummy2;
    unsigned char dummy1;

    PANEL_PLAY_INDEX((entry_number - track_entry_beg + 1));

    /* get the next entry time for updating lcd in the futurte */
    if (!get_entry_info(entry_number + 1, &dummy1, &next_entry_time,
                   &dummy2)) {
        next_entry_time = x00999999;    /* no next entry */
    }

    /* since the beg_time will be modified to entry beg_time by
       play_entry function, we have to store it. */

    mmssff = play_item_begin_time;

    /* play entry */
    play_entry(entry_number);
    play_item_begin_time = mmssff;
}

/*------------------------------------------------------------------------
  Function: play_segment
  Parameters:
      segment_number
  Description:
------------------------------------------------------------------------*/
static void play_segment(int segment_number)
{
    unsigned char content;
    int           len;  /* # of segment */
    int           seconds;
    int		video_type;

    /* get segment content and play length */
    get_segment_info(segment_number, &content, &len);

    /* compute the start and end time */
    if (first_seg_ad == 0)      /* in case we do not have value. */
        first_seg_ad = 0x0500;

    seconds = bcd2hex[((first_seg_ad >> 16) & 0xff)] * 60; /* min -> sec */
    seconds += bcd2hex[(first_seg_ad >> 8) & 0xff] + (segment_number -1) * 2;
    play_item_begin_time =
        logical2physical(seconds * 75); /* Sec->Frm */
    play_item_start_time = play_item_begin_time;
    play_item_end_time =
        logical2physical((seconds + len * 2) * 75);
    play_item_real_end_time = play_item_end_time;
    play_item_type = DATA_TRACK;

    /* if we are playing item from play list, we need to check the */
    /* playing time.                                               */
    check_playing_time();

    play_item_mode = PLAY_INFO_STOP_MODE;
    PRINTF(("seg %d, start 0x%x, end 0x%x\n",
            segment_number,
            play_item_start_time,
            play_item_end_time));

    /* check play type */
    video_type = content & 0xC;        /* bit 2..3 */
    play_still_retry = 3;		/* Retry still 3 times if error	*/
    play_state = PLAY_STILL_STATE;	/* Assume it is still		*/

    if (video_type == 4) {
        seg_sel = 1;
        PRINTF(("E1\n"));
    } else
    if (video_type == 8) {
        seg_sel = 2;
        PRINTF(("E2\n"));
    } else {
    /* if the zoom level != 1, reset it */
#ifdef ZOOM
	if (zoom_level) {
	    zoom_reset();
	}
#endif
        seg_sel = 0;
	play_still_retry = 0;
        play_state = PLAY_NORMAL_STATE;
        PRINTF((" Motion\n"));
    }

    picture_type = 0xe0 | seg_sel;

    panel_play_track(0);
    cur_track_number = 0; /* Set for OSD */

    return;
}


#ifdef MDC_GAME
static void play_mdc_game(int segment_number)
{
    int           seconds;
#ifndef NEW_OSD
    OSD_clear_region(6);
    OUTOSD(1,"PLEASE WAITING ...","PLEASE WAITING ...",1);
#endif

#ifdef FU_HUASHENG
    VFD_icon(VFDICON_game_on);
#endif

    /* compute the start time */
    if (first_seg_ad == 0)      /* in case we do not have value. */
        first_seg_ad = 0x0500;  /* assume set to 00:05:00 */

    seconds = bcd2hex[((first_seg_ad >> 16) & 0xff)] * 60; /* min -> sec */
    seconds += bcd2hex[(first_seg_ad >> 8)] + (segment_number -1000) * 2;
    play_item_begin_time =
        logical2physical(seconds * 75); /* Sec->Frm */
    play_item_start_time = play_item_begin_time;

    MDC_play_game(play_item_start_time,mdc_game_list_buffer_size);

    PRINTF(("seg %d, st art 0x%x\n",
            segment_number,
            play_item_start_time));

    panel_play_track(0);
    cur_track_number = 0; /* Set for OSD */
    play_state = PLAY_WAIT_GAME_STATE;
    return;
}
#endif



/*------------------------------------------------------------------------
  Function:assign_selection_list
  Parameters:
      scratch: Is a pointer to the selection list data.
  Description:
      Assign selection data to a selection_list structure.
------------------------------------------------------------------------*/
static void assign_selection_list(unsigned char *scratch_buf)
{
    selection_list_number_of_selections = scratch_buf[2];
    selection_list_base_of_selection_number = scratch_buf[3];
    list_previous_list_offset = *((short *)(scratch_buf+6));
    list_next_list_offset = *((short *)(scratch_buf+8));
    selection_list_default_list_offset = *((short *)(scratch_buf+12));
    list_return_list_offset = *((short *)(scratch_buf+10));
    selection_list_time_out_list_offset = *((short *)(scratch_buf+14));
    selection_list_wait_time_for_timeout = scratch_buf[16];
    selection_list_loop_count_and_jump_timing = scratch_buf[17];
    selection_list_play_item_number = *((short *)(scratch_buf+18));

    selection_list_loop_count =
        (selection_list_loop_count_and_jump_timing & 0x7f); /* bit 0-6 */

    if (selection_list_play_item_number <= MAX_TRACK_NUMBER) {
        /* HACK: We ignore the jump time for track, since track might
           take a long time and user will think that the player is
           dead since the player is not accepting any new key. */
        selection_list_jump_time  = 0;
    } else {
        selection_list_jump_time =
            selection_list_loop_count_and_jump_timing & 0x80;
    }
}

/*------------------------------------------------------------------------
  Function:assign_play_list
  Parameters:
      scratch: Is a pointer to a play list data.
  Description:
      Assign selection data to a play_list structure.
------------------------------------------------------------------------*/
static void assign_play_list(unsigned char *scratch_buf)
{
    play_list_number_of_items = scratch_buf[1];
    list_previous_list_offset = *((short *)(scratch_buf+4));
    list_next_list_offset = *((short *)(scratch_buf+6));
    list_return_list_offset = *((short *)(scratch_buf+8));
    play_list_playing_time = *((short *)(scratch_buf+10));
    play_list_play_item_wait_time = scratch_buf[12];
    play_list_auto_pause_wait_time = scratch_buf[13];
    play_list_play_item_number = 1;     /* default play item */
}


#ifdef MDC_GAME
static void assign_mdc_game_list(unsigned char *scratch_buf)
{
    play_list_number_of_items = 1;
    list_previous_list_offset = *((short *)(scratch_buf+4));
    list_next_list_offset = *((short *)(scratch_buf+6));
    list_return_list_offset = list_next_list_offset;
    play_list_playing_time = 0xff;
    play_list_play_item_wait_time = 0xff;
    play_list_auto_pause_wait_time = 0xff;
    play_list_play_item_number = 1;     /* default play item */

    mdc_game_list_buffer_size = * ((short *)(scratch_buf + 10));
}
#endif

/*--------------------------------------------------------------------
   Parameters:
   begin_time   is the time in 1/64 unit when timer is set.
   expire_time  is the wait time in VIDEO CD represetation.

   Return value:
       Return 1 when time expired. Otherwise return 0.
----------------------------------------------------------------------*/
static int is_time_expired(unsigned int begin_time, short expire_time)
{
    int expire_seconds;
    int expire_time_period;     /* in 1/64 second unit */
    int time_pass;

    /* no wait */
    if (expire_time == 0)
        return (1);

    /* infinite */
    if (expire_time == 0xff)
        return (0);

    expire_seconds =
        (expire_time <= 60) ? expire_time : (expire_time - 60)*10 + 60;
    expire_time_period = expire_seconds * ONE_SECOND;

    time_pass = glbTimer - begin_time;
    if (time_pass < 0) time_pass -= 1;

    if (time_pass >= expire_time_period) {
        return (1);
    }
    return (0);
}

/*------------------------------------------------------------------------
  Function: get_random_number

  Description:
     This function returns a random value between 1 and mode_number
     (included) .

  NOTE: This function only works for mode_number <= 256
------------------------------------------------------------------------*/
#define MASK    0x57
unsigned int SeedSeed = 0xbadface;
int get_random_number(unsigned char mod_number)
{
    int number;

    if (SeedSeed & x80000000)
        SeedSeed = ((SeedSeed ^ MASK) << 1) | 1;
    else
        SeedSeed <<= 1;

    number = SeedSeed >> 24;

    while (number >= mod_number)
        number -= mod_number;

    number++;   /* get number from 1 to mod_number */

    return (number);
}

static void fill_track_list()
{
    int track_num;
    int i;

    track_list_max = 0; /* do not remove, since find_track_number
			   needs it. */

    for (i  = 0; i < CDinfo.lasttrack; i++) {
	if (shuffle_on) {
	    do {
		track_num = get_random_number(CDinfo.lasttrack);
	    } while (find_track_number(track_num));

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品国产aⅴ一区二区| 不卡av免费在线观看| 欧美一级精品大片| 日韩精品乱码免费| 2023国产精品视频| 国产成人一区二区精品非洲| 国产精品毛片大码女人| 91精品福利视频| 日韩不卡一区二区三区| 久久亚洲一区二区三区四区| 风间由美一区二区三区在线观看| 国产精品第13页| 欧美日韩一卡二卡三卡| 久久国产成人午夜av影院| 久久精品免视看| 91电影在线观看| 免费日韩伦理电影| 中文乱码免费一区二区| 欧美色图第一页| 国产一区二三区好的| 亚洲欧洲日韩一区二区三区| 欧美日韩三级一区| 国产99精品视频| 亚洲成人动漫精品| 久久夜色精品一区| 欧美午夜免费电影| 国产成人免费在线视频| 亚洲午夜视频在线观看| xnxx国产精品| 欧美日韩精品一区二区三区四区 | 欧美视频在线一区| 激情都市一区二区| 亚洲男人的天堂网| 久久亚洲免费视频| 88在线观看91蜜桃国自产| 国产99久久久国产精品| 日本大胆欧美人术艺术动态| 日本一区二区免费在线观看视频| 欧美午夜电影一区| 成人一区二区在线观看| 日本va欧美va瓶| 亚洲美女精品一区| 国产日韩欧美精品在线| 欧美妇女性影城| 色欧美片视频在线观看 | 国产91高潮流白浆在线麻豆 | 国产一区二区91| 亚洲午夜免费电影| 亚洲欧洲日产国产综合网| 欧美电影免费观看高清完整版在线| 91美女在线看| 国产aⅴ综合色| 国产在线播放一区| 奇米影视在线99精品| 亚洲一区二区视频| 日韩美女精品在线| 国产精品久久久久影视| 久久久精品中文字幕麻豆发布| 欧美日本在线播放| 色婷婷av一区二区三区软件 | 日韩av在线发布| 亚洲免费在线观看视频| 日本伊人精品一区二区三区观看方式| 亚洲午夜免费电影| 欧美日高清视频| 欧洲亚洲精品在线| 91视视频在线观看入口直接观看www | 国产视频一区在线播放| 精品噜噜噜噜久久久久久久久试看| 在线观看亚洲专区| 色噜噜狠狠成人中文综合 | 午夜精品久久久久影视| 一区二区三区欧美日韩| 亚洲欧美日本韩国| 有码一区二区三区| 亚洲尤物视频在线| 亚洲成人激情自拍| 视频一区二区国产| 蜜臀av在线播放一区二区三区| 蜜桃一区二区三区四区| 激情亚洲综合在线| 国产99久久久久久免费看农村| 成人激情小说乱人伦| 99久久精品国产一区| 色综合天天综合在线视频| 91麻豆精品在线观看| 日本精品视频一区二区三区| 色噜噜夜夜夜综合网| 欧美高清视频在线高清观看mv色露露十八| 欧美日本不卡视频| 精品国产一二三区| 国产精品电影一区二区| 一区二区三区中文字幕电影| 午夜久久电影网| 九九视频精品免费| 成人亚洲一区二区一| 色久优优欧美色久优优| 欧美日韩电影在线播放| 欧美v亚洲v综合ⅴ国产v| 国产精品色哟哟| 亚洲第一成年网| 国产麻豆一精品一av一免费| 99国产精品视频免费观看| 欧美日韩视频专区在线播放| 久久综合精品国产一区二区三区| 亚洲欧美在线高清| 日韩av网站免费在线| 粉嫩高潮美女一区二区三区 | 成人a级免费电影| 欧美亚洲国产一卡| 精品日韩一区二区三区免费视频| 国产亚洲一区二区在线观看| 一区二区三区四区乱视频| 美日韩一级片在线观看| 成人高清视频在线| 日韩一级黄色大片| 亚洲女同女同女同女同女同69| 麻豆精品一二三| 99精品国产视频| 26uuu亚洲| 亚洲高清在线视频| 国产91在线看| 欧美一级午夜免费电影| 国产精品久久久久久久岛一牛影视| 婷婷开心激情综合| 99这里都是精品| 久久伊人蜜桃av一区二区| 亚洲午夜三级在线| 91美女视频网站| 中文字幕精品一区二区精品绿巨人| 日韩综合在线视频| 91国产精品成人| 国产精品国产三级国产aⅴ无密码| 日本不卡一区二区| 欧美亚一区二区| 最新不卡av在线| 国产精品一级二级三级| 日韩欧美国产精品| 亚洲va韩国va欧美va| 99国产精品久久| 国产精品嫩草影院av蜜臀| 精品在线播放免费| 777午夜精品免费视频| 一区二区三区加勒比av| av一二三不卡影片| 国产精品视频一二| 风间由美一区二区三区在线观看| 欧美成人性战久久| 蜜桃av噜噜一区二区三区小说| 欧美另类高清zo欧美| 玉足女爽爽91| 欧洲激情一区二区| 亚洲综合在线免费观看| 成人午夜看片网址| 久久精品视频免费观看| 国产最新精品免费| 久久伊人中文字幕| 国产精品一区二区果冻传媒| 久久伊99综合婷婷久久伊| 国内精品久久久久影院薰衣草 | 久久色在线视频| 极品美女销魂一区二区三区| 欧美一区二区三区免费视频| 视频在线观看一区| 日韩一区二区三免费高清| 免费的成人av| 欧美成人video| 国产米奇在线777精品观看| 久久综合色婷婷| 处破女av一区二区| 综合精品久久久| 欧美影视一区二区三区| 亚洲激情网站免费观看| 91福利在线免费观看| 亚洲va欧美va人人爽午夜| 欧美一区二区在线观看| 美女一区二区视频| www亚洲一区| 成人av片在线观看| 亚洲另类中文字| 欧美精品一二三| 激情成人午夜视频| 国产精品对白交换视频| 欧美性极品少妇| 免费的国产精品| 国产精品天美传媒| 欧洲av在线精品| 免费三级欧美电影| 国产精品女人毛片| 欧美色倩网站大全免费| 九九国产精品视频| 亚洲视频在线观看三级| 欧美日韩电影一区| 国产成人精品一区二区三区四区 | 久久国产精品99精品国产 | 欧美成人综合网站| 99久久er热在这里只有精品66| 亚洲韩国精品一区| 久久久天堂av| 欧美亚洲国产一区在线观看网站|