⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 streams.c

📁 linux TV 源码
💻 C
📖 第 1 页 / 共 2 页
字号:
		} else if (AType == 2) {	// PCM			card->reg090 |= 0x01;	// PCM in Transport Private 1 Stream stored in AudioES channel buffer			DecoderWriteByte(card, 0x090, card->reg090);			//DecoderSetByte(card,0x090,0x01);  // PCM in Transport Private 1 Stream stored in AudioES channel buffer			AudioSetMode(card, 4);		} else {	// MPEG			card->reg090 &= ~0x01;	// MPEG Audio stored in AudioES channel buffer			DecoderWriteByte(card, 0x090, card->reg090);			//DecoderDelByte(card,0x090,0x01);  // MPEG Audio stored in AudioES channel buffer			if (AID < 0)				AType = 4;			if (AExt >= 0)				AType = 5;			else				AExt = -1;			AudioSetMode(card, ((IEC956) ? 0 : 2));		}		card->setup.audioID = AID;		card->setup.audioIDext = AExt;		DecoderSelectAudioID(card);		card->reg08F = (card->reg08F & ~0xE0) | ((AType & 0x07) << 5);	// Set Stream Type		DecoderWriteByte(card, 0x08F, card->reg08F);		//DecoderMaskByte(card,0x08F,0xE0,(AType&0x07)<<5);   // Set Stream Type		AudioSetVolume(card, 0xFF);	// Set PCM scale to full volume		//DecoderMaskByte(card,0x093,0xC3,(AHeader&0x03)|0xC0);  // write header select		card->reg093 = (card->reg093 & ~0x03) | (AHeader & 0x03);	// write header select		DecoderWriteByte(card, 0x093, card->reg093);		//  Mute the card and put it in play mode, then wait for the parameters to be parsed and un-mute if successful		//AudioMute(card,1);		if (AType > 0) {			AudioStartDecode(card);			//AudioSetPlayMode(card,MAUDIO_PLAY);			AudioSetPlayMode(card, MAUDIO_PAUSE);		}		//card->startingA=1;	}	card->lastaattr = 0;}// VHeader: -1=disable Video, 0=No Headers, 1=first PTS/DTS header, 2=all headers, 3=All with PTS/DTS// VID: -1=all MPEG, 0..15=Video Stream IDvoid DecoderPrepareVideo(struct cvdv_cards *card){	int VHeader = 3;	int VID = card->setup.videoID;	if (VHeader < 0) {		card->reg091 = 0x00;		DecoderWriteByte(card, 0x091, card->reg091);		//DecoderWriteByte(card,0x091,0x00);	} else {		if (VID < 0) {			card->reg091 = ((VHeader & 0x03) << 6) | (2 << 4);			DecoderWriteByte(card, 0x091, card->reg091);			//DecoderWriteByte(card,0x091,((VHeader&0x03)<<6)|(2<<4));		} else {			card->reg091 =			    ((VHeader & 0x03) << 6) | (1 << 4) | (VID &								  0x0F);			DecoderWriteByte(card, 0x091, card->reg091);			//DecoderWriteByte(card,0x091,((VHeader&0x03)<<6)|(1<<4)|(VID&0x0F));		}	}}// Prepare Decoder for Elementary Streams, Disable Preparserint DecoderPrepareES(struct cvdv_cards *card){	int i;	MDEBUG(1, ": -- PrepareES\n");	//DecoderStopDecode(card);//  DecoderWriteByte(card,0x05,0x00);	DecoderMaskByte(card, 0x007, 0xCE, 0xC2 | (3 << 2));	// Stream Select: A/V Elementary Stream	MDEBUG(3, ": Int - A VideoES w/r addr: %08X %08X\n",	       (DecoderReadByte(card,0x060)|(DecoderReadByte(card,0x061)<<8)|		(DecoderReadByte(card,0x062)<<16))<<2,	       (DecoderReadByte(card,0x06C)|(DecoderReadByte(card,0x06D)<<8)|		(DecoderReadByte(card,0x06E)<<16))<<2);	// set the decoding buffers	card->reg093 = (card->reg093 & ~0xFC);	// write no header	DecoderWriteByte(card, 0x093, card->reg093);	if ((i = DecoderSetChannelBuffers(card, 256000, 4096, 0, 0, 0, 0))) {		MDEBUG(0, ": SetDecoderBuffers failed for buffer at 0x%03X\n", i);		DecoderKillChannelBuffers(card);		return 1;	}	MDEBUG(3, ": Int - B VideoES w/r addr: %08X %08X\n",	       (DecoderReadByte(card,0x060)|(DecoderReadByte(card,0x061)<<8)|		(DecoderReadByte(card,0x062)<<16))<<2,	       (DecoderReadByte(card,0x06C)|(DecoderReadByte(card,0x06D)<<8)|		(DecoderReadByte(card,0x06E)<<16))<<2);	MDEBUG(3, ": Int - C VideoES w/r addr: %08X %08X\n",	       (DecoderReadByte(card,0x060)|(DecoderReadByte(card,0x061)<<8)|		(DecoderReadByte(card,0x062)<<16))<<2,	       (DecoderReadByte(card,0x06C)|(DecoderReadByte(card,0x06D)<<8)|		(DecoderReadByte(card,0x06E)<<16))<<2);//  DecoderStartChannel(card);   //  DecoderStartDecode(card);	MDEBUG(3, ": Int - D VideoES w/r addr: %08X %08X\n",	       (DecoderReadByte(card,0x060)|(DecoderReadByte(card,0x061)<<8)|		(DecoderReadByte(card,0x062)<<16))<<2,	       (DecoderReadByte(card,0x06C)|(DecoderReadByte(card,0x06D)<<8)|		(DecoderReadByte(card,0x06E)<<16))<<2);	DecoderPrepare(card);	return 0;}// Prepare Decoder for Packetised Elementary Streams, set parameters of Preparserint DecoderPreparePES(struct cvdv_cards *card){	// SPUID: -1=No SPU, 0..31=Display SPU of this ID	// DataDump: 0=disable DataDump, 1=process DataDump Substreams	// PackHeader: 0=write no headers, 1=write one header, 2=write all headers	// SysHeader: 0=write no headers, 1=write one header, 2=write all headers	// DSIHeader: 0=write no headers, 3=write PCI and DSI headers and packets	int i;	int SPUID = -1;	int DataDump = 0;	int PackHeader = 0;	int SysHeader = 0;	int DSIHeader = 0;	MDEBUG(1, ": -- PreparePES\n");	DecoderMaskByte(card, 0x007, 0xCE, 0xC2 | (0 << 2));	// Stream Select: A/V PES Packets	if (SPUID < 0)		card->reg092 = 0;	// Do we use SPU?	else		card->reg092 = 0x20 | (SPUID & 0x1F);	if (DataDump)		card->reg092 |= 0x40;	// Do we use DataDump?	DecoderWriteByte(card, 0x092, card->reg092);	//DecoderMaskByte(card,0x093,0xFC,((DSIHeader&0x03)<<6)|((PackHeader&0x03)<<4)|((SysHeader&0x03)<<2));	card->reg093 =	    (card->reg093 & ~0xFC) | (((DSIHeader & 0x03) << 6) |				      ((PackHeader & 0x03) << 4) |				      ((SysHeader & 0x03) << 2));	DecoderWriteByte(card, 0x093, card->reg093);	// set the decoding buffers	if (	    (i =	     DecoderSetChannelBuffers(card, 256000, 4096, 512, 0, 512,				      0))) {		MDEBUG(0,": SetDecoderBuffers failed for buffer at 0x%03X\n", i);		DecoderKillChannelBuffers(card);		return 1;	}	DecoderPrepare(card);	return 0;}// Prepare Decoder for MPEG 1 Systems Streams or MPEG 2 Program Streams// SPUID: -1:ignore, 0...15 SPU Substream ID// DataDump: 0:disable data dump stream, 1:enable data dump stream// PackHeader: 0:write no headers, 1:write one header, 2:write all headers, 3:always discard// SysHeader: 0:always discard, 1:write one header, 2:write all headers, 3:always discard// DSIHeader: 0:write no DSI or PCI headers, 3:write DSI and PCI headers + packets// DVD: 0: normal MPEG-2 data, 1: DVD stream with navi pack dataint DecoderPreparePS(struct cvdv_cards *card,		     int SPUID, int DataDump,		     int PackHeader, int SysHeader, int DSIHeader, int DVD){	int i=0;	MDEBUG(1, ": -- PreparePS %s\n", ((DVD) ? "DVD" : ""));	//DecoderStopDecode(card);	DecoderMaskByte(card, 0x007, 0xCE, 0xC2 | (1 << 2));	// Stream Select: MPEG1 System / MPEG2 Program Stream	if (SPUID < 0)		card->reg092 = 0;	// Do we use SPU?	else		card->reg092 = 0x20 | (SPUID & 0x1F);	if (DataDump)		card->reg092 |= 0x40;	// Do we use DataDump?	DecoderWriteByte(card, 0x092, card->reg092);	//DecoderMaskByte(card,0x093,0xFC,((DSIHeader&0x03)<<6)|((PackHeader&0x03)<<4)|((SysHeader&0x03)<<2));	card->reg093 =	    (card->reg093 & ~0xFC) | (((DSIHeader & 0x03) << 6) |				      ((PackHeader & 0x03) << 4) |				      ((SysHeader & 0x03) << 2));	DecoderWriteByte(card, 0x093, card->reg093);	// set the decoding buffers	if (DVD) {		// do we need SPU-, navi- and datadump-buffers?			  //	  if(card->videomode == NTSC)		i = DecoderSetChannelBuffers(card, 340000, 32768, 32768, 0, 					     512,4096) ;		//else		//		i = DecoderSetChannelBuffers(card, 291878, 16384, 512, 0, 		//   512,0) ;		if (i) {			MDEBUG(0,": SetDecoderBuffers failed for buffer at 0x%03X\n", i);			DecoderKillChannelBuffers(card);			return 1;		}			} else {		// normal PS		if (		    (i =                  DecoderSetChannelBuffers(card, 340000, 32768, 512,                                   0, 512, 0))) { 			MDEBUG(0,": SetDecoderBuffers failed for buffer at 0x%03X\n", i);			DecoderKillChannelBuffers(card);			return 1;		}	}	DecoderPrepare(card);	return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -