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

📄 cardbase.c

📁 linux TV 源码
💻 C
字号:
/*     cardbase.c    Copyright (C) Christian Wolff for convergence integrated media.    This program is free software; you can redistribute it and/or modify    it under the terms of the GNU General Public License as published by    the Free Software Foundation; either version 2 of the License, or    (at your option) any later version.    This program is distributed in the hope that it will be useful,    but WITHOUT ANY WARRANTY; without even the implied warranty of    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the    GNU General Public License for more details.    You should have received a copy of the GNU General Public License    along with this program; if not, write to the Free Software    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.*/#define __NO_VERSION__#include "cardbase.h"// List of pci cards in the systemstruct cvdv_cards *first_card = NULL;u8 FlushPacket[32] = {	0x00, 0x00, 0x01, 0xE0,	// video stream start code	0x00, 0x1a,		// 26 more bytes	0x81, 0xC1,		// flags: copy=1, PTS_DTS=11, PES_extension=1	0x0D,			// 13 more header bytes	0x31, 0x00, 0x03, 0x5F, 0xEB,	// PTS	0x11, 0x00, 0x03, 0x48, 0x75,	// DTS	0x1E,			// flags: P-STD_buffer=1, 	0x60, 0xE8,		// P-STD_buffer_scale=1, P-STD_buffer_size=232(kByte)	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};void DecoderStreamReset(struct cvdv_cards *card){	card->stream.valid = 0;	card->stream.sh.valid = 0;	card->stream.se.valid = 0;	card->stream.gop.valid = 0;	card->stream.MPEG2 = 0;	card->stream.audio.valid = 0;	memset(&card->stream.audio.mpeg,0,sizeof(struct AudioMPEG));	memset(&card->stream.audio.ac3,0,sizeof(struct AudioAC3));	memset(&card->stream.audio.pcm,0,sizeof(struct AudioPCM));	card->AuxFifoExt = 0;	card->AuxFifoLayer = -1;}void PTSStoreInit(PTSStorage * store, int size){	int i;	if (size > MAX_PTS)		size = MAX_PTS;	store->size = size;	store->begin = 0;	store->end = 0;	store->LastAddr = 0;	for (i = 0; i < store->size; i++) {		store->AddrB[i] = 0;		store->AddrE[i] = 0;		store->PTS[i] = 0;	}}void DecoderCSSReset(struct cvdv_cards *card){	card->css.status = 0;	card->css.ChallengeReady = 0;	card->css.ResponseReady = 0;	card->css.DiskKey = 0;	card->css.TitleKey = 0;	card->css.Error = 0;	card->css.TitleKeyDiff = 0;	card->LastAddr = 0;	// last used address in PES buffer	card->VPTS = 0;	card->oldVPTS = 0;	card->VSCR = 0;	card->APTS = 0;	card->oldAPTS = 0;	card->ASCR = 0;	card->SyncTime = 0;	card->paused = 0;	// pause status	card->lastvattr = 0;	// last set dvd video attribute	card->lastaattr = 0;	// last set dvd audio attribute	card->nonblock = 0;}void DecoderSetupReset(struct cvdv_cards *card){	card->DecoderOpen = 0;	card->closing = 0;	card->channelrun = 0;	card->setup.streamtype = stream_none;	card->setup.audioselect = audio_none;	card->setup.videoID = 0;	card->setup.audioID = 0;	card->setup.audioIDext = -1;	card->setup.SPDIFmode = 0;	card->startingV = 0;	card->startingA = 0;	card->startingDVDV = 0;	card->startingDVDA = 0;	card->videodelay = 0;	card->videodelay_last = 0;	card->videoslow_last = 0;	card->videoslow = 0;	card->videoffwd = 0;	card->videoffwd_last = 0;	card->videoskip = 0;	card->videoskip_last = 0;	card->videosync = 0; 	card->paused = 0;	PTSStoreInit(&card->VideoPTSStore, MAX_PTS);	PTSStoreInit(&card->AudioPTSStore, MAX_PTS);        card->audiostate.AV_sync_state=1;}void card_init(struct cvdv_cards *card){	card->DRAMFirstBlock = NULL;	card->DRAMSize = 0;	card->OSD.open = 0;	card->DMAABusy = 0;	card->DMABBusy = 0;	card->IntInstalled = 0;	card->ChannelBuffersAllocated = 0;	card->VideoES = BLANK;	card->AudioES = BLANK;	card->VideoPES = BLANK;	card->DataDump = BLANK;	card->AudioPES = BLANK;	card->NaviBank = BLANK;	card->FrameBuffersAllocated = 0;	card->FrameStoreLuma1 = BLANK;	card->FrameStoreChroma1 = BLANK;	card->FrameStoreLuma2 = BLANK;	card->FrameStoreChroma2 = BLANK;	card->FrameStoreLumaB = BLANK;	card->FrameStoreChromaB = BLANK;	card->DecoderOpen = 0;	card->AuxFifoHead = 0;	card->AuxFifoTail = 0;	card->DataFifoHead = 0;	card->DataFifoTail = 0;	card->FifoALast = -1;	card->FifoBLast = -1;	//reset_stream(card);	DecoderStreamReset(card);	DecoderSetupReset(card);	card->AudioInitialized = 0;	card->AudioOldMode = -1;	card->closing = 0;	card->startingV = 0;	card->startingA = 0;	card->startingDVDV = 0;	card->startingDVDA = 0;	card->channelrun = 0;	card->fields = 0;	DecoderCSSReset(card);	card->NaviPackAddress = 0;	init_waitqueue_head(&card->wqA);	init_waitqueue_head(&card->wqB);	card->navihead = 0;	// write pointer for navi ring buffer	card->navitail = 0;	// read pointer for navi ring buffer	card->intdecodestatus = 0;	// last status of decode interrupt	card->showvideo = 0;	// show video instead black as soon as picture slice is there	card->videodelay = 0;	// slow counter	card->videodelay_last = 0;	// slow counter	card->videoffwd = 0;	// fast playback	card->videoffwd_last = 0;	// fast playback	card->videoskip = 0;	// fast counter	card->videoskip_last = 0;	// fast counter	card->videoslow_last = 0;	card->videoslow = 0;	card->videosync = 0;	// do audio/video sync basen on PTS?	PTSStoreInit(&card->VideoPTSStore, MAX_PTS);	PTSStoreInit(&card->AudioPTSStore, MAX_PTS);	card->LastAddr = 0;	// last used address in PES buffer	card->VPTS = 0;	card->oldVPTS = 0;	card->VSCR = 0;	card->APTS = 0;	card->oldAPTS = 0;	card->ASCR = 0;	card->SyncTime = 0;	card->paused = 0;	// pause status	card->lastvattr = 0;	// last set dvd video attribute	card->lastaattr = 0;	// last set dvd audio attribute	card->reg08F = 0;	// mirror of decoder registers	card->reg090 = 0;	card->reg091 = 0;	card->reg092 = 0;	card->reg093 = 0;	card->highlight_valid = 0;	// SPU highlight info available for next BAV int	card->do_flush = 0;	card->open = 0;	card->VideoESSize = 0;			card->AudioESSize = 0;			card->VideoPESSize = 0;			card->DataDumpSize = 0;			card->AudioPESSize = 0;			card->NaviBankSize = 0;			card->currentType = -1;	card->rbufA.buffy = NULL;	card->rbufB.buffy = NULL;	card->use_ringA = 0;	card->use_ringB = 0;	card->hasZV = 0;#ifdef NOINT	init_timer(&card->timer);	spin_lock_init(&card->timelock);#endif	card->dvb_registered = 0;        card->audiostate.AV_sync_state=1;	card->nonblock = 0;	card->svhs = 0;	card->composite = 0;}

⌨️ 快捷键说明

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