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

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

?? top.c

?? 一個兩碟控制的VCD的代碼,兩碟之間的轉動及連續播放,已大量生產的CODE.
?? C
?? 第 1 頁 / 共 3 頁
字號:
 Audio decoding task.
 ***************************************************************************/
#ifndef SUB_PICTURE
static void	TSK_decode_audio(void)
{
    if (vcx_playvideo_only
#ifdef FIXEFM
	|| TDM_skip_sectors
#endif
    ) {
        ABV_rdptr = ABV_wrptr;
    	if (!ABV_filling) ABV_start_filling();
    } else {
	int status;
        DBG_mark_current_time(1);
	wait_huffman_idle();
	switch_huffman_to_audio();
	status = AUD_decode();
        DBG_check_elapsed(1);

	/* We might not need this. Should think it thru carefully. */
	if (status) {
	    KEYDEBUGINC(1, bad_audio);
	    oh_my(2);
	    /* hardware_reset(0); */
	}
	DBG_dump_pcm_when_full();
    }
}
#endif

#ifdef KARAOKE
/***************************************************************************
 key shifting task.
 ***************************************************************************/
static void	TSK_karaoke(void)
{
    int status;
    DBG_mark_current_time(3);
    status = karaoke_shift(&KARAvcd);
#ifndef ZERO_BUFFER
#ifndef ECHO
	if (PCM_starved) {
	    PRINTF(("Manual PCM take out\n"));
	    PCM_take_out();
	}
#endif
#endif
    DBG_check_elapsed(3);
    if (status) {
	KEYDEBUGINC(1, bad_kara);
	oh_my(3);
	hardware_reset(0);
    }
    DBG_dump_pcm_when_full();
}
#endif

#ifdef ECHO
/***************************************************************************
 ECHO task.
 ***************************************************************************/
static void	TSK_echo(void)
{
    DBG_mark_current_time(6);
    ECHO_main(1);
    DBG_check_elapsed(6);
}
#endif

/***************************************************************************
 CDDA task.
 ***************************************************************************/
static void	TSK_cdda(void)
{
    int tmp;

#ifdef DVD_VCD
    ABV_check_underflow();
#endif

#ifdef MPEG1
    DBG_mark_current_time(4);

    VP_load_ucode(rcdda);
    VP_cmdq_wait(6+4+4+6);	/* For the worst case */

    VP_xfer(0, VPCMD_W_DP, 0, 0, ABV_rdptr, CDDA_chunk, 1);
    VP_block_twice(0, UCODE_IDLE);
    VP_cmdq_wait_empty;
    mvd[riface_irqsuppress] = 0;
    ABV_rdptr_advance(CDDA_chunk);

    if (vcx_audio_channel < 2) {
	VP_cmdq_wait(NCMDQ_VP_data + NCMDQ_VP_ucode + NCMDQ_VP_block_twice);
    	vp_data_only(vcx_audio_channel);
    	VP_ucode(0, VPCMD_WAIT + cdda_mono);
    	VP_block_twice(0, UCODE_IDLE);
    }
    /*
     * If we are not in the middle of audio fade (i.e. vcx_fade_audio_volume
     * is 0x1010, then use vcx_audio_volume to determine volume; otherwise,
     * vcx_fade_audio_volume has the required volume value.
     */
    tmp = (vcx_fade_audio_volume == 0x1010) ? vcx_audio_volume
					    : vcx_fade_audio_volume;
    vp_data_only(tmp);
    VP_ucode(0, VPCMD_WAIT + cdda_volume_control);
    VP_block_twice(0, UCODE_IDLE);

    VP_xfer(0, VPCMD_R_DP, 0, 0, PCM_raw_wrptr, CDDA_chunk, 1);
    VP_block_twice(0, UCODE_IDLE);
    VP_cmdq_wait_empty;
    PCM_raw_wrptr_advance(CDDA_chunk);
    PCM_fake_data = 0;
    AUD_n_frames++;
#ifndef KARAOKE
#ifndef ZERO_BUFFER
#ifndef ECHO
    if (PCM_starved) PCM_take_out();
#endif
#endif
#endif

    DBG_check_elapsed(4);
#endif
}

/***************************************************************************
 High priority background house-keeping.
 ***************************************************************************/
extern void CUST_background();
extern int microKeyPending();
extern char wait_pause;
void	TSK_background_high_priority()
{
    static int count = 0;

    /* No need to do it so frequently. Do it every other 4 times */
    if (count++ != 4)
	return;
    count = 0;

#if (KARAOKE && SPATIAL && VSCALE)
    VBV_alarm = (vcx_karaokey && SPA_level && (vcx_scn_vscale != 0x10))
                ? 1536 : 1024;
#endif
    if (vcx_pause && (vcx_pause_ack == 0)) {
#ifdef PLAY20
/*	system_reset();*/
#endif

#if (P1O || P2O || P3O || P4O)
	if (!vcx_digest) {
	    /* I.e. Stop decoding during fast forward */
	    vcx_playvideo_only = 1;
	    vcx_playaudio_only = 1;
	}
#endif
	vcx_pause_ack = 1;
    }

#ifdef MPEG1
    {
      extern int picture_done;
      if (picture_done) end_of_still = 0;
      else if (end_of_still == 2) {
	processEndOfStill();
	end_of_still = 1;
      }
      if (picture_type == 0xe0) {
	  if (end_of_sequence && !b7_already_flushed) {
	      processEndOfStill();
	      b7_already_flushed = 1;
	  }
      }
    }
#endif

#ifdef DIGEST
    if (vcx_digest)
	decideDigestVideoOrAudio();
#endif	

#ifndef CUST4 /* For CUST4, change TV mode even in digest */
    if (!vcx_digest) 
#endif
    {
      	if ((vcx_scn_height != DISP_scn_height) || do_blank) {
	    /*
	     * Only start the mode changing process if we are showing
	     * blank screen to minimize garbage on screen.
	     */
	    if (!do_blank) {
		done_blank = 0;
		do_blank = 1;
	    } else {
		if ((!VID_decoding_in_progress || vcx_playaudio_only) &&
		    done_blank) {
		    DISP_change_TV();
		    do_blank = 0;
#ifdef PLAY20
		    tv_changed = 1;
#endif
		}
	    }
      	}
    }

#ifdef FRACTINT
    if (FRACT_display_on) FRACT_set_palette();
#endif

#ifndef S215
#if (MKROM && PLAY20)
    receive_dsa();	/* to prevent losing key/CD info */
#endif
#endif

#ifdef SERVO
    SERVO_service();
    SERVO_mode_handle();
#endif

#if defined(DSC_ENABLE_C2PO) && defined(ERROR_CONCEALMENT)
    /* Check the last 1 second for video error info, */
    /* then set the concealment_mode on the fly    */
    if ((glbTimer - last_check_time) >= ONE_SECOND) {
	static int jerky_start_time;
        if ((C2PO_video_error > VID_error_threshold) &&  
            (C2PO_video_error <= 30) && (picture_type == 0xe0)) {
	    /* Record the time we switch to JERKY mode */
	    if (concealment_mode == BLOCKY)
	    	jerky_start_time = glbTimer;
            concealment_mode = JERKY;
	    /* In case of continuous incoming C2PO, *
	     * move checking window by half length  */
	    last_check_time = glbTimer - HALF_SECOND;
            C2PO_video_error = VID_error_threshold / 2;
	} else {
	    last_check_time = glbTimer;
	    concealment_mode = BLOCKY;
	    C2PO_video_error =0;
	}
	/* Do not hold in jerky mode too long, let it show something */
	if (glbTimer > jerky_start_time + THREE_SECOND) {
	    last_check_time = glbTimer;
	    concealment_mode = BLOCKY;
	    C2PO_video_error =0;
	}
    }
#endif

#ifdef MPEG1
    /*
     * When there is a voltage spike, our TDM may get out of sync and
     * start to latch the wrong data. In which case, there will be
     * no valid incoming data and the system will hang.
     *
     * The following check looks for this condition and restarts TDM to
     * recover from this situation.
     */
    if (XPORT_active && !TDM_isCDDA) {
	PRIVATE unsigned int next_tdm_check_timer;
	PRIVATE int last_tdm_int_counter;

	if (glbTimer > next_tdm_check_timer) {
	    if (TDM_cntInterrupt == last_tdm_int_counter) {
		/* This is BAD! TDM may be out of sync. */
		if (vcx_xfer_mode == 5) TDM_turn_on();
	    }
	    next_tdm_check_timer = glbTimer + 10;	/* ~.2 second */
	    last_tdm_int_counter = TDM_cntInterrupt;
	}
    }
#endif

#ifdef NO_MICRO
    /* If we have key pending, we should process it ASAP. */
    if (microKeyPending()||wait_pause)
	CUST_background();
#endif
#if   defined(DVD_VCD) && defined ( I2C_E2PROM )
    i2c_e2prom_process();
#endif

#ifdef CUST6
    Servo_main();
#endif

    VCX_service();
}

/***************************************************************************
 Background tasks.
 ***************************************************************************/
void TSK_background()
{
    {
    	static int fullness_time = 0;
    	if ((glbTimer - fullness_time) > 10) {
    	    VBV_update_occupancy(VBV_fullness);
    	    spoolkeyvar(&VBV_fullness);
    	    ABV_update_occupancy(ABV_fullness);
    	    spoolkeyvar(&ABV_fullness);
    	    PCM_update_occupancy(PCM_fullness);
    	    spoolkeyvar(&PCM_fullness);
	    fullness_time = glbTimer;
	}
    }

    if (PTS_xsit>0) process_pts();

#ifdef FRACTINT
    if (FRACT_process_on) FRACT_paint_a_block();
#endif

#if (PLAYONLY || PLAY20 || CUST3)
    CUST_background();
#endif

#ifdef ECHO
    /*
     * If we have not successfully turn on MIC, then do it now. Only
     * do this for 3207's. 3881's have a different rule!
     */
    if (!DSC_version && !MIC_is_turned_on) MIC_turn_on();
#endif

#ifdef IR
#ifndef NO_MICRO
    processKeycode();
#endif
#endif

#ifdef DEBUG
    if (dbg_console) {
	DBG_console();
	dbg_console = 0;
    }
#endif

#ifdef DIGEST_MVD
    if (digest_go == 1) {
	if (!VID_decoding_in_progress) {
	    digestPage(0);
	    digest_go = 0;
	}
    }
    if (digest_go == 2) {
	resetDigest();
	system_start();
	XPORT_restart_at(XPORT_OFFSET_FUZZY_PLAY, 0);
	XFER_start(xfer_mode);
	digest_go = 0;
    }
#endif

#ifdef ZOOM_MVD
    if (zoom_go_in) {
	zoom_in();
	zoom_go_in = 0;
    }
    if (zoom_go_out) {
	zoom_out();
	zoom_go_out = 0;
    }
    if (zoom_go_up) {
	zoom_move_up();
	zoom_go_up = 0;
    }
    if (zoom_go_down) {
	zoom_move_down();
	zoom_go_down = 0;
    }
    if (zoom_go_right) {
	zoom_move_right();
	zoom_go_right = 0;
    }
    if (zoom_go_left) {
	zoom_move_left();
	zoom_go_left = 0;
    }
#endif

#ifdef FADE_MVD
    switch (fade_go) {
	int logo_time;
	case 1:	/* Fade out to black. */
	    FADE_start(FADE_OUT, 8, 0x8000 + 15); /* Fade to solid black */
	    fade_go = 2;
	    break;
	case 2:	/* Actively fading out to black. */
	    if (!FADE_in_process) {	/* OK we're done */
    		system_reset();
    		show_mpeg_still(0xe1, powerupScreen, T_powerupScreen_SZ>>2);
		FADE_start(FADE_IN, 8, 0x8000 + 15); /* Fade from solid black */
	    	fade_go = 3;
	    }
	    break;
	case 3:	/* Actively fading into the logo. */
	    if (!FADE_in_process) {	/* OK we're done */
		FADE_stop(); /* So that you can have OSD if you want */
	    	fade_go = 4;
		logo_time = glbTimer;
	    }
	    break;
	case 4:	/* We are showing logo. */
	    if (glbTimer - logo_time > 10*60) {
	    	FADE_start(FADE_OUT, 10, 0xd430 + 15); /* Fade to magenta */
		fade_go = 5;
	    }
	    break;
	case 5:	/* Actively fading out to magenta. */
	    if (!FADE_in_process) {	/* OK we're done */
		system_reset();
		system_start();
		XPORT_restart_at(XPORT_OFFSET_FUZZY_PLAY, 0);
		XFER_start(xfer_mode);
		fade_go = 6;
	    }
	    break;
	case 6:	/* Showing magenta, now fade in to normal video. */
	    FADE_start(FADE_IN, 8, 0xd430 + 15); /* Fade from magenta */
	    fade_go = 7;
	    break;
	case 7:	/* Actively fading to normal video. */
	    if (!FADE_in_process) {	/* OK we're done */
	    	FADE_stop();	/* back to normal OSD */
	    	fade_go = 0;
	    }
	    break;
    }
#endif
#ifdef FADE
    if (FADE_in_process) Fade();
#endif
}

#ifdef MZOOM
#if 0
int in          = 0,
    out         = 0,
    up          = 0,
    down        = 0,
    right       = 0,
    left        = 0;
#endif
#endif
/***************************************************************************
 The main task.
 ***************************************************************************/
static void TSK_main()
{
    int	xport_type;
    int old_play_clip;

#ifdef DSC
    /* If we are in power down mode, stay here! */
    if (IS_POWER_DOWN) {
	while (1) {
	    TSK_background_high_priority();
	    TSK_background();
#ifdef REAL_CLOCK
	    realClkVFD();
#endif
	}
    } 
#endif
    enable_int(vout);
    enable_int(buscon);
    enable_int(xport);

#if (SERVO2545 || TVM_MODULE)
    RISC_start_timer1();
#endif

    system_reset();
#ifndef CUST4
    /* For CUST4, logo is not shown until we get currrent TV mode */
    /* Show logo */
#if defined(CUST3) && defined(NOLOGO)
    fill_screen(COLOR_BLUE);
#else

#ifdef VCDROM
    if (play_clip) {
#ifdef CUST71
	fill_screen(COLOR_BLUE);
#else
	fill_screen(COLOR_BLACK);
#endif
    } else
      show_mpeg_still(0xe1, powerupScreen, T_powerupScreen_SZ>>2);
#else
    show_mpeg_still(0xe1, powerupScreen, T_powerupScreen_SZ>>2);
#endif

#if (!CUST3 && !CUST4 && DSC)
    /* If power on, send pull low to reset CD */
{
    unsigned int prevtime1, currtime1, timepass1;
    if (power_up) {
        RESET_CD_LOW;
        prevtime1= (unsigned int)mvd[riface_timer2];
        do {
           currtime1= (unsigned int)mvd[riface_timer2];
           timepass1 = currtime1 - prevtime1;
           if (currtime1 < prevtime1)
               timepass1 += -timer2_period;
        } while (timepass1 < (CPUCLK * 1200));
        RESET_CD_HIGH;
    }
}
#endif
#endif

#endif /* CUST4 */

    /* Select and initialise input.
       Rely on vcx_bistream_type and vcx_xfer_mode */
#ifdef DVD_VCD
    vcx_xfer_mode = 0;   
#endif

    xfer_mode = XFER_init(-1);
    xport_type = XPORT_init(-1, xfer_mode);

#if defined(MUSICAM) && defined(MPEG2)
    AUD_set_PES(xport_type == DSS_SIMPLE);
#endif

    DBG_start_tracing();

    VBV_ABV_set_parameters(xfer_mode);

#ifdef ECHO
    MIX_init();
    MIX_start_take_out();
#endif

    /* Start the xport and various buscons. TDM has to be the last to start */
    system_start();

#ifdef ZERO_BUFFER
    /*
     * When zero buffer is used, we only do PCM_start_take_out once
     * at the very beginning.
     */
    PCM_start_take_out();

#ifdef DVD_VCD
    /*
     * This has no reason to be here. It is meant as a temp. fix for
     * a strange "missing audio" bug in DVD_VCD.
     */
    LOW_reset_audio_port();
#endif
#endif

    XPORT_restart_at(XPORT_OFFSET_FUZZY_PLAY, 0);
    XFER_start(xfer_mode);

#ifdef WATCHDOG
    if (setjmp(err_buf)) {
      /*
       * reinitialise registers 
       */
      register int foo = 0xc3;
      int xportpc;

      /* Get XPORT PC early since it changes when we reset XPORT! */
      xportpc = mvd[xport_read_status] & 0x7f;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩高清一区二区三区| 国产欧美日韩另类视频免费观看| 中文字幕一区在线观看视频| 不卡一区二区在线| 亚洲人午夜精品天堂一二香蕉| 91在线国产福利| 亚洲一区二区视频在线| 91精品国产欧美一区二区| 国产毛片精品一区| 亚洲天堂av老司机| 欧美一区二区日韩| 国产精品1024久久| 一区二区三区精品在线观看| 4438亚洲最大| 丁香亚洲综合激情啪啪综合| 国产午夜亚洲精品羞羞网站| 成人小视频免费观看| 国产精品久久久久天堂| 欧洲另类一二三四区| 伦理电影国产精品| 欧美韩国日本一区| 制服丝袜成人动漫| 成人av中文字幕| 日韩有码一区二区三区| 欧美国产一区二区在线观看| 欧美日韩精品电影| 国产成人精品影视| 一区二区三区日韩欧美精品| 日韩精品中午字幕| 色婷婷国产精品| 在线免费观看一区| 一区二区欧美视频| 精品少妇一区二区三区在线视频| 国产成人精品亚洲777人妖 | 精品久久久久久久久久久久包黑料| 国内精品国产成人| 亚洲国产中文字幕| 久久精品一区蜜桃臀影院| 欧美日韩成人综合在线一区二区| 国产成人精品亚洲午夜麻豆| 奇米精品一区二区三区在线观看| 国产精品国产三级国产三级人妇| 日韩欧美一区二区免费| 色婷婷综合激情| 国产成人综合网站| 免费人成黄页网站在线一区二区| 亚洲品质自拍视频| 国产色婷婷亚洲99精品小说| 日韩一区二区三区电影在线观看| 99久久精品免费看国产免费软件| 久久福利视频一区二区| 国产精品久久久久7777按摩| 日韩精品一区二区在线| 色94色欧美sute亚洲13| 日韩精品一区二区在线| 欧美日韩中文精品| 不卡电影一区二区三区| 国产真实精品久久二三区| 日韩精品欧美精品| 亚洲国产精品一区二区www在线| 日韩一区在线播放| 亚洲欧洲av在线| 欧美韩国日本不卡| 国产欧美日韩精品a在线观看| 日韩欧美中文字幕一区| 91精品国产综合久久国产大片| 色爱区综合激月婷婷| 色综合视频在线观看| 99视频热这里只有精品免费| 懂色av中文一区二区三区| 国产精品亚洲第一| 国产乱子伦视频一区二区三区 | 国产精品视频看| 久久亚洲免费视频| www国产精品av| xf在线a精品一区二区视频网站| 日韩欧美色综合| 亚洲自拍另类综合| 亚洲一区二区三区四区在线| 亚洲妇熟xx妇色黄| 天堂在线亚洲视频| 美日韩一区二区三区| 精品一区二区在线播放| 国产精品一二三四区| 丁香一区二区三区| 色综合天天视频在线观看| 欧美丝袜自拍制服另类| 日韩一区二区在线观看视频播放| 欧美不卡视频一区| 欧美激情在线一区二区| 亚洲欧美日韩小说| 婷婷开心久久网| 国精品**一区二区三区在线蜜桃| 国产精品99久久久久久久vr| 成人高清免费观看| 日本韩国精品在线| 91精品国产91久久久久久最新毛片| 337p粉嫩大胆噜噜噜噜噜91av | 1000精品久久久久久久久| 一区二区三区在线免费观看 | 欧美电影免费观看完整版| 久久精品日产第一区二区三区高清版| 国产色产综合产在线视频| 中文字幕一区二区日韩精品绯色| 亚洲国产精品一区二区尤物区| 久久国产欧美日韩精品| 成人h动漫精品| 91精品国产一区二区三区| 久久久精品国产免费观看同学| 亚洲同性同志一二三专区| 青青草97国产精品免费观看无弹窗版| 国产一区在线不卡| 欧美视频一区在线| 欧美国产欧美综合| 午夜精品一区二区三区电影天堂| 国产精品123区| 欧美精品三级在线观看| 国产精品午夜电影| 日韩不卡一区二区| 欧美三级欧美一级| 久久夜色精品国产噜噜av| 亚洲午夜电影网| 国产成人精品一区二| 69久久99精品久久久久婷婷| 中文字幕亚洲视频| 久久99精品国产91久久来源| 色域天天综合网| 亚洲无人区一区| 国产一二精品视频| 欧美日本一区二区| 亚洲男人的天堂av| 国产精品 欧美精品| 91精品国产高清一区二区三区蜜臀 | 日韩在线一区二区三区| 色综合久久综合中文综合网| 久久精品亚洲精品国产欧美kt∨| 亚洲成人综合在线| 91小视频在线| 国产亚洲精久久久久久| 美女www一区二区| 欧美日韩国产高清一区二区| 亚洲免费视频中文字幕| 国产精品一区免费在线观看| 日韩一区二区电影| 三级成人在线视频| 欧美三级日韩三级| 亚洲一区二区五区| 在线影视一区二区三区| 一区精品在线播放| 成人教育av在线| 国产亚洲va综合人人澡精品 | 亚洲精品在线观看视频| 午夜国产不卡在线观看视频| 色噜噜狠狠色综合中国| 国产精品久久久久永久免费观看| 国产精品资源网| 久久久久久99久久久精品网站| 激情偷乱视频一区二区三区| 日韩三级免费观看| 极品美女销魂一区二区三区| 日韩精品一区二区三区在线播放 | 三级欧美在线一区| 在线亚洲+欧美+日本专区| 亚洲欧美国产77777| 91丝袜高跟美女视频| 日韩久久一区二区| 欧美专区在线观看一区| 国产成人免费视频| 欧美激情一区二区| av在线不卡免费看| 亚洲激情图片一区| 一本到不卡免费一区二区| 一区二区三区四区精品在线视频| 色呦呦一区二区三区| 亚洲最新视频在线观看| 在线观看www91| 日本aⅴ亚洲精品中文乱码| 日韩欧美三级在线| 国产精品影视在线| 亚洲视频香蕉人妖| 精品视频999| 久久se精品一区二区| 国产三级欧美三级日产三级99| 国产精品99久| 亚洲精品国产品国语在线app| 欧洲一区在线观看| 老司机一区二区| 欧美国产综合色视频| 日本韩国一区二区| 久久精品国产澳门| 国产欧美在线观看一区| 色婷婷av一区二区三区之一色屋| 偷拍一区二区三区| 久久伊人中文字幕| 在线免费观看不卡av| 精品一区二区三区在线视频| 亚洲国产精品高清| 欧美乱妇23p| 成人美女视频在线观看| 亚洲高清三级视频|