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

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

?? xport.c

?? 一個兩碟控制的VCD的代碼,兩碟之間的轉動及連續播放,已大量生產的CODE.
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* Copyright 1997, ESS Technology, Inc.					*//* SCCSID @(#)xport.c	1.59 2/25/98 *//* * $Log$ */#include <stdio.h>#include <stdlib.h>#include <ctype.h>#include "buffer.h"#include "const.h"#include "common.h"#include "debug.h"#include "mvd.h"#include "tdm.h"#include "low.h"#include "util.h"#include "vcxi.h"#include "xport.h"#define PRINTF(a)#if 0	/* doing sub-picture */#undef SUB_PICTURE#endif/**************************************************************************** Various defines ****************************************************************************/#define ALTMODE         0x00000013#define DVBMODE         0x00000003#define PS8MODE         DVBMODE#define PS16MODE        0x00000001#define DestVideo       0#define DestAudio       2#define DestAux         4#define DestUser        6#define DestRisc        1#define makepid(pid,CCvalid,CCvalue,dest)	\	((1L<<21L) +				\	((pid    &0x01fffL)<<8L)	+	\	((CCvalid&0x00001L)<<7L)	+	\	((CCvalue&0x0000fL)<<3L)	+	\	(dest & 0x00007L) )/**************************************************************************** Transport mode select. Things like 8 or 16 bit, DVB or DSS. ****************************************************************************/#define select_xport_mode(xport_type) 		\	(xport_type == DSS_SIMPLE)? (PS16MODE | 0x10) : PS16MODE;#define AID_CHECK 0x2d	/* AC3 substream ID patch location */#define PS_BYPASS 0x2c	/* AC3 substream ID check bypass for generic PS */#define SP_BYPASS 0x2f	/* AC3 extra info code bypass for sub-picture */#define CONTINUE  0x32	/* This is where continue is *//**************************************************************************** Local function prototypes ****************************************************************************/#ifdef MPEG2static void patch_xport_ucode(int, int);#endifstatic void load_xport_cam(int *, int);PRIVATE	void		XPORT_adj_match_channel(int);PRIVATE	unsigned int	XPORT_UcodeImmd(int, unsigned int);/**************************************************************************** Local variables ****************************************************************************/#ifdef MPEG2static int xport_video = -1;	/* PID of video packets */static int xport_audio = -1;	/* PID of audio packets */#endifstatic int x07f07fff = 0x07f07fff;#ifdef MPEG2/**************************************************************************** Patch transport ucode. ****************************************************************************/static void patch_xport_ucode(int location, int code){    int  real;    mvd[xport_misc] = XPORT_LDMC | XPORT_RESET;    mvd[xport_microcode_table+location] = code;#ifdef DEBUG    mvd[xport_misc] = XPORT_RESET;    mvd[xport_misc] = XPORT_LDMC | XPORT_RESET;    real = mvd[xport_microcode_table+location];    real = mvd[xport_microcode_table+location] & 0x0fffffffL;    if (real != code) {	FATAL(("Xport ucode patch verification error\n"));    }#endif    mvd[xport_misc] = XPORT_RESET;}#endif/**************************************************************************** XPORT interrupt service routine ****************************************************************************/#ifdef XPORT20#define XPORT_MAX_FIFO	7	/* <00:mm> <ss:ff> <sub:code> <01:ID>	*				 * <junk:d> <d:d> <d:d>			*/#else#define XPORT_MAX_FIFO	8	/* Add <mode:filenumber>		*/#endifunsigned short XPORT_fifo[XPORT_MAX_FIFO]; /* XPORT->RISC FIFO data	*//* * XPORT seq interrupt handler. This routine reads all the XPORT * FIFO data. Due to a bug in XPORT hardware, it is more reliable to  * read the FIFO while nobody is writing to the FIFO. The current * XPORT microcode will make sure that after the last RISC FIFO data * is sent, trigger a seq. interrupt; this interrupt is far away from * the next RISC FIFO data. * * The data will be read out, and it will be process in TDM interrup * just like before. * * Return: *	1:	Equivalent to TDM interrupt (for DVD_VCD) */int XPORT_interrupt_service(void){    int loop, max, cnt;    mvd[xport_clear_stat_bits] = 2;	/* Clear seq. IRQ */    /*      * Counter is usually one less than what is in the FIFO. However,      * if there is nothing in FIFO, the counter is still 0.     */    cnt = (mvd[xport_read_rff_count] & 0x3f) + 1;#ifdef DVD_VCD    /*     * For DVD_VCD, we have the following cases for RISC FIFO     * 1) No data, this is equivalent to TDM interrupt (i.e. all the     *    data are in)     * 2) 2 items, this is currCDtime. This is also equivalent to      *    TDM interrupt     * 3) 3 items. For M2F1 (i.e. getSector), data is not in yet;     *    For M2F2 (playSector), this means we can't find stream ID,     *    so equivalent to TDM interrupt     * 4) 5/7 items. Since there is ID and PTS etc, data is not in yet.     *     * There can be at most 2 XPORT interrupts in a sector, so if      * XPORT_fifo_length is not zero, then we had 1 previous XPORT      * interrupt without calling TDM interrupt handler; in which case,      * don't read the RISC FIFO since it may hold data for the next      * sector if the interrupt latency is too long.     *     * There is one corner case:     * If the number of data bytes in a sector is very small, we may     * get the end-of-data interrupt before we even handle the RISC-FIFO     * data interrupt. As a result, we handle both interrupts in one     * call to XPORT_interrupt_service. In which case, XPORT_fifo_length      * will be 0 and cnt will be non-zero. If cnt is 5, we'll be mislead      * to believe that data is not in yet when it is really in already.     *     * To be on the safe side, we'll do two things:     * 1) When we enter, if XPORT_fifo_length == 0 and XPORT is executing      *    flush_pipe/find_synd2, treat it as a "TDM interrupt."     * 2) When XPORT is in "stop state", force a "TDM interrupt."     */    if (XPORT_fifo_length)      cnt = 0;				/* No real data			*/    else {	int pc;	pc = mvd[xport_read_status] & 0x7f;	XPORT_fifo_length = cnt;	/*	 * Since nobody is writing to the RISC FIFO, reading it now	 * shall give reliable result!	 *	 * Make sure the number of data item makes sense.	 */	if ((max = XPORT_fifo_length) > XPORT_MAX_FIFO)	  max = XPORT_MAX_FIFO;	/* Read the FIFO data into an array */	for (loop = 0; loop < max; loop++)	  XPORT_fifo[loop] = mvd[xport_read_risc_data];	/* If we have more data unexpectly, throw them away */	for (loop; loop < XPORT_fifo_length; loop++)	  reg0 = mvd[xport_read_risc_data];	/*	 * Equivalent to TDM interrupt if we are flushing the pipe or	 * find next SYNC.	 */	if ((pc == XPORT_OFFSET_STOP_STATE) ||	    ((pc >= XPORT_FLUSH_PIPE) && (pc <= XPORT_FIND_SYNC2_END)))	  return(1);			/* Equivalent to TDM interrupt	*/    }    if (cnt >= 5) return(0);		/* Data not in yet		*/    else if (cnt == 3) 			/* Last data is <submode:coding>*/      return(XPORT_fifo[2] & 0x2000);	/* Eq. to TDM int. for M2F2 data*/    else return(1);			/* Equivalent to TDM interrupt	*/#else    /* For VCD 1.1/2.0 */    /*     * If XPORT_fifo_length is not 0, then TDM interrupt has not happened     * yet; in other words, this is the "2nd packet" interrupt. Ignore     * the interrupt. Don't touch the FIFO data because if the interrupt     * latency is long, the next currCDtime may be in!     */    if (XPORT_fifo_length == 0) {	XPORT_fifo_length = cnt;	/*	 * Since nobody is writing to the RISC FIFO, reading it now	 * shall give reliable result!	 *	 * Make sure the number of data item makes sense.	 */	if ((max = XPORT_fifo_length) > XPORT_MAX_FIFO)	  max = XPORT_MAX_FIFO;	/* Read the FIFO data into an array */	for (loop = 0; loop < max; loop++)	  XPORT_fifo[loop] = mvd[xport_read_risc_data];	/* If we have more data unexpectly, throw them away */	for (loop; loop < XPORT_fifo_length; loop++)	  reg0 = mvd[xport_read_risc_data];    }    return(0);#endif /* else of DVD_VCD */}/**************************************************************************** Download transport ucode. ****************************************************************************/void XPORT_load_ucode(uCode_table, size)int 	    *uCode_table; 	/* table address */int 	    size;		/* table size in ints, 0 for user input */ {    int *uCode;    int  i;    PRINTF(("Loading xport ucode.\n"));    assert(size);    uCode = uCode_table;    if (size > 0x80) {	FATAL(("Ucode too long. Download aborted.\n"));    }    mvd[xport_misc] = XPORT_LDMC | XPORT_RESET;    for (i=0; i < size; i++)  	mvd[xport_microcode_table+i] = uCode[i];     for(; i < 0x80; i++)	mvd[xport_microcode_table+i] = 0x3f07f00L; #ifdef DEBUG    mvd[xport_misc] = XPORT_RESET;    mvd[xport_misc] = XPORT_LDMC | XPORT_RESET;    for (i=0; i < size; i++)  {        int tmp;	tmp = mvd[xport_microcode_table+i];	tmp = mvd[xport_microcode_table+i] & 0x0fffffffL;	if( tmp != (uCode[i] & 0x0fffffffL)){	    FATAL(("Xport ucode verify error\n"));	}     }#endif    mvd[xport_misc] = XPORT_RESET;}/**************************************************************************** Load xport PID. ****************************************************************************/static void load_xport_cam(PID_table, size)int 	    *PID_table; 	/* table address */int 	    size;{    int *pid_data;    int	i, data, tmp;    PRINTF(("Load pid table \n"));    assert(size);    pid_data = PID_table;#ifdef DEBUG    if (size > 0x20) {	FATAL(("PID table too long. Download aborted.\n"));    }#endif    /*-write ucode-*/    mvd[xport_misc] = XPORT_FLUSHCAM| XPORT_RESET;    mvd[xport_misc] = XPORT_RESET;    mvd[xport_misc] = XPORT_LDPID | XPORT_RESET;	/* Load all the CAM entries */    for (i = 0; i < 0x20; i++) {	    data = 0;	    if (i < size) data = pid_data[i]; 	    mvd[xport_pid_table+i] = data;    }#ifdef DEBUG	/* Check to make sure loading is successful */    for (i = 0; i < 0x20; i++) {	    data = 0;	    if (i < size) data = pid_data[i];	    	    tmp = mvd[xport_pid_table+i];	    tmp = mvd[xport_pid_table+i];	    if ((unsigned char) tmp != (unsigned char) data)	      break;    }#endif    mvd[xport_misc] = XPORT_RESET;}#if (MPEG1 && MKROM)/* * Routine to restore CAM table. There is report that CAM table * content may change in some situation. */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美国产精品一区二区| 亚洲免费观看高清完整版在线| 久久久久久久久久久久电影 | 欧美疯狂做受xxxx富婆| 精品少妇一区二区三区在线播放 | 日韩午夜在线观看视频| 亚洲精品中文在线| 国模套图日韩精品一区二区| 欧洲视频一区二区| 久久久久青草大香线综合精品| 午夜亚洲国产au精品一区二区| 国产91精品在线观看| 日韩精品一区在线观看| 亚洲自拍偷拍av| 成人av在线播放网站| 精品国产亚洲在线| 秋霞成人午夜伦在线观看| 91久久香蕉国产日韩欧美9色| 国产欧美精品一区二区三区四区| 蜜桃av噜噜一区| 在线综合视频播放| 亚洲午夜激情av| 91黄色在线观看| 亚洲三级小视频| 不卡欧美aaaaa| 欧美国产精品久久| 国产乱人伦精品一区二区在线观看| 这里只有精品99re| 亚洲五码中文字幕| 欧美曰成人黄网| 一区二区三区波多野结衣在线观看 | 国产真实精品久久二三区| 欧美一区二区播放| 三级精品在线观看| 欧美日本精品一区二区三区| 亚洲黄色免费网站| 久久精品网站免费观看| 日本午夜精品一区二区三区电影| 欧美群妇大交群中文字幕| 一区二区免费视频| 色av一区二区| 亚洲夂夂婷婷色拍ww47| 91国内精品野花午夜精品| 一区二区三区日韩欧美| 欧美羞羞免费网站| 婷婷综合在线观看| 日韩欧美一区二区视频| 久久国产尿小便嘘嘘尿| 国产日韩精品久久久| jizzjizzjizz欧美| 亚洲私人黄色宅男| 欧美日韩亚洲综合在线 | 亚洲精品一二三| 欧美日韩久久不卡| 久久99国产乱子伦精品免费| 国产亚洲欧美日韩日本| 成人av网站在线观看免费| 亚洲精品va在线观看| 欧美日韩国产在线播放网站| 久久精品99国产精品| 欧美国产日产图区| 色视频欧美一区二区三区| 亚洲18色成人| 久久在线观看免费| 色婷婷综合五月| 日本欧美肥老太交大片| 国产精品入口麻豆九色| 欧美无乱码久久久免费午夜一区| 久久国产免费看| 一区二区三区四区国产精品| 精品国产乱码久久久久久浪潮| 北条麻妃国产九九精品视频| 日产国产高清一区二区三区| 国产女人aaa级久久久级 | 日本欧美一区二区三区| 中文字幕高清一区| 欧美高清hd18日本| 成熟亚洲日本毛茸茸凸凹| 亚洲综合色区另类av| 久久久噜噜噜久久中文字幕色伊伊| 91原创在线视频| 精品中文字幕一区二区小辣椒| 亚洲日本一区二区| 久久综合九色欧美综合狠狠| 欧美日韩一级二级三级| 暴力调教一区二区三区| 久久99国产精品麻豆| 一区二区日韩电影| 久久精品男人天堂av| 制服.丝袜.亚洲.中文.综合| 色综合久久88色综合天天免费| 韩日欧美一区二区三区| 天天av天天翘天天综合网色鬼国产| 欧美国产一区二区| 欧美xxxxx牲另类人与| 欧美亚一区二区| 色哟哟国产精品| 99精品欧美一区二区三区小说| 狂野欧美性猛交blacked| 亚洲一二三级电影| 一区二区三区四区在线免费观看| 国产精品视频在线看| 久久综合久久综合九色| 欧美一区二区三区免费| 欧美日韩一区二区三区视频| av不卡一区二区三区| 国产一区二区主播在线| 久久99国内精品| 久久黄色级2电影| 日本欧美韩国一区三区| 日本不卡一二三| 日韩高清欧美激情| 五月天精品一区二区三区| 亚洲一区二区三区四区中文字幕| 欧美精品一区二区在线观看| 日本高清成人免费播放| av在线播放一区二区三区| 国产麻豆精品在线| 久久成人免费日本黄色| 精油按摩中文字幕久久| 免费在线看成人av| 首页国产欧美日韩丝袜| 亚洲一区二区三区不卡国产欧美| 1区2区3区精品视频| 亚洲日本乱码在线观看| 国产精品色哟哟| 国产精品欧美一级免费| 国产精品视频观看| 久久亚洲春色中文字幕久久久| 精品处破学生在线二十三| 欧美v亚洲v综合ⅴ国产v| 91精品国产综合久久国产大片 | 国产欧美日韩不卡| 久久久久青草大香线综合精品| 精品国产污污免费网站入口 | 同产精品九九九| 国产欧美视频一区二区三区| 在线成人午夜影院| 成人av网址在线观看| 久久色在线视频| av在线综合网| 91视频在线观看免费| 欧美日韩国产精品自在自线| 欧美日韩一区二区在线观看| 欧美一区永久视频免费观看| 欧美一区二区成人| 欧美xxxxx牲另类人与| 中文字幕五月欧美| 亚洲三级免费电影| 午夜免费久久看| 极品美女销魂一区二区三区| 国产精品综合视频| caoporm超碰国产精品| 在线中文字幕一区| 色哟哟国产精品免费观看| 欧日韩精品视频| 精品三级在线看| 亚洲国产精品自拍| 精品久久久久香蕉网| 欧美一区二区在线不卡| 欧美精品一区二区在线观看| 国产精品欧美久久久久一区二区| 亚洲激情网站免费观看| 午夜免费欧美电影| 麻豆国产精品一区二区三区| 粉嫩av一区二区三区粉嫩| 欧亚洲嫩模精品一区三区| 精品美女在线播放| 26uuu色噜噜精品一区| 一区二区三区免费| 精品一区二区三区av| 99国产一区二区三精品乱码| 91精品国产一区二区| 亚洲国产精品v| 日韩国产在线一| 91丨九色丨国产丨porny| 欧美精品v国产精品v日韩精品| 国产欧美精品一区二区三区四区 | 国产女人18毛片水真多成人如厕 | 狠狠色综合播放一区二区| 在线视频综合导航| 欧美精品一区在线观看| 亚洲国产日韩a在线播放性色| 国产成人在线免费| 91麻豆产精品久久久久久| 国产欧美视频在线观看| 日欧美一区二区| 日本二三区不卡| 国产精品久久久久影院色老大| 狠狠色狠狠色综合系列| 欧美日韩你懂的| 亚洲天堂成人网| 国产精品一区二区三区99| 欧美无人高清视频在线观看| 一区二区在线看| 成人综合激情网| 久久久www免费人成精品| 亚洲天堂av一区| 99国产精品视频免费观看| 国产午夜三级一区二区三|