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

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

?? dvbinput.cpp

?? 很好的流媒體服務器程序,linux或window下做流媒體的可以參考很不錯哦
?? CPP
字號:
/******************************************************************************** dvbinput.cpp: DVB streams*-------------------------------------------------------------------------------* (c)1999-2002 VideoLAN* $Id: dvbinput.cpp,v 1.21.4.6 2004/01/10 21:54:57 alexis Exp $** Authors: Arnaud de Bossoreille de Ribou <bozo@via.ecp.fr>*          Damien Lucas <nitrox@videolan.org>** 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., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.**-------------------------------------------------------------------------------********************************************************************************///------------------------------------------------------------------------------// Preamble//------------------------------------------------------------------------------#include "../../core/defs.h"#include "../../core/core.h"#include <fcntl.h>#include <sys/ioctl.h>#ifdef HAVE_DVBPSI_DVBPSI_H#   include <dvbpsi/dvbpsi.h>#   include <dvbpsi/descriptor.h>#   include <dvbpsi/pat.h>#   include <dvbpsi/pmt.h>#else#   include "src/dvbpsi.h"#   include "src/descriptor.h"#   include "src/tables/pat.h"#   include "src/tables/pmt.h"#endif#include <DVB.hh>#include "../../mpeg/mpeg.h"#include "../../mpeg/ts.h"#include "../../mpeg/rtp.h"#include "../../server/program.h"#include "../../server/buffer.h"#include "../../server/output.h"#include "../../server/channel.h"#include "../../server/broadcast.h"#include "../../server/request.h"#include "../../server/input.h"#include "../../server/tsstreamer.h"#include "../../mpeg/reader.h"#include "../../mpeg/converter.h"#include "../../mpeg/tsdemux.h"#include "../../mpeg/dvbpsi.h"#include "../../mpeg/tsmux.h"#include "dvbinput.h"#define FILELEN 256//------------------------------------------------------------------------------// Library declaration//------------------------------------------------------------------------------#ifdef __PLUGIN__GENERATE_LIB_ARGS(C_DvbInputModule, handle);#endif//------------------------------------------------------------------------------// Builtin declaration//------------------------------------------------------------------------------#ifdef __BUILTIN__C_Module* NewBuiltin_dvbinput(handle hLog){  return new C_DvbInputModule(hLog);}#endif/******************************************************************************** C_DvbInput class****************************************************************************************************************************************************************///------------------------------------------------------------------------------// Constructor//------------------------------------------------------------------------------C_DvbInput::C_DvbInput(C_Module* pModule,                       const C_String& strName) :                                C_Input(pModule, strName),                                C_TsDemux(&m_cTsProvider),                                m_cTsProvider(500),                                m_cInputProgram(/*0,*/ "Input DVB " + strName),                                m_cInputBroadcast(&m_cInputProgram, this, NULL),                                m_cPatDecoder(&m_cTsProvider, this),                                m_cCurrentPat(0, 0, true){  dvb = new DVB;  m_iGotTpid = 0;            // Did not set the transponder yet  m_iDemuxUsageCount = 0;    // Nothing using the demux yet  m_bIgnoreTimeout = false;  m_pConverter = NULL;  for(int i =0; i < 512; i++)    m_iDemuxes[i] = -1;}//------------------------------------------------------------------------------// Destructor//------------------------------------------------------------------------------C_DvbInput::~C_DvbInput(){}//------------------------------------------------------------------------------// Initialization//------------------------------------------------------------------------------void C_DvbInput::OnInit(){  int iNumber;  C_String strType;  C_String dvbrc;  char filen[FILELEN];  char devname[80];  // Retrieve config  C_Application* pApp = C_Application::GetApp();  ASSERT(pApp);  iNumber = pApp->GetSetting(GetName() + ".DeviceNumber", "0").ToInt();  m_iSendMethod = pApp->GetSetting(GetName() + ".SendMethod", "0").ToInt();  m_bIgnoreTimeout = pApp->GetSetting(GetName()+".IgnoreTimeout", "0").ToInt();  dvbrc = pApp->GetSetting(GetName()+ ".Dvbrc", "");  if(dvbrc.Length() != 0)  {    strncpy(filen, dvbrc.GetString(), dvbrc.Length()+1);  }  dvb->init("", "", 0, iNumber);  sprintf(devname, DVR_DEV,   iNumber, 0); m_strDVR   = C_String(devname);  sprintf(devname, DEMUX_DEV, iNumber, 0); m_strDEMUX = C_String(devname);  sprintf(devname, VIDEO_DEV, iNumber, 0); m_strVIDEO = C_String(devname);  //Check whether card has a decoder:  //When opening the video device, we should get an error  int iDummy=open(m_strVIDEO.GetString(), O_RDWR|O_NONBLOCK);  m_bHasDecoder=(iDummy<0) ? false : true;  close(iDummy);  switch(dvb->front_type)  {    case FE_QPSK:      strType = "DVB-S";      break;    case FE_QAM:      strType= "DVB-C";      break;    case FE_OFDM:      strType = "DVB_T";      break;    default:      throw E_Exception(GEN_ERR, "No DVB card found");      break;  }  Log(m_hLog, LOG_NOTE, strType + " Card registered "+                  (m_bHasDecoder ? "with decoder\n" : "without decoder\n"));  // Enable DVR (sets the DMX_OUT_TS_TAP in the lib)  dvb->enable_DVR();  dvb->enable_DVR_other();  //Get the .dvbrc file  if (!get_dvbrc(filen,*dvb,iNumber,FILELEN))    throw E_Exception(GEN_ERR, "Unable to find any dvbrc file");  for(int i=0; i<dvb->NumChannel(); i++)  {    C_String* pStr=new C_String(dvb->chans[i].name);    /* Let's replace all spaces by '_' */    pStr->Replace(' ', '_');    m_vProgramNames.Add(pStr);    Log(m_hLog, LOG_NOTE, "Added program '" + *pStr+"'");  }  // PAT decoder initialization  m_cPatDecoder.Attach();  // Reader  C_MpegReaderModule* pReaderModule = (C_MpegReaderModule*)                                C_Application::GetModuleManager()                                        ->GetModule("mpegreader",                                                    "dvb");  ASSERT(pReaderModule);  m_cInputBroadcast.SetOption("device", m_strDVR);  m_cInputBroadcast.SetOption("IgnoreTimeout", m_bIgnoreTimeout);  m_pReader = pReaderModule->NewMpegReader(&m_cInputBroadcast);  ASSERT(m_pReader);  // Converter  C_MpegConverterModule* pConverterModule = (C_MpegConverterModule*)                                C_Application::GetModuleManager()                                        ->GetModule("mpegconverter",                                                    "ts2ts");  ASSERT(pConverterModule);  C_MpegConverterConfig cConfig;  cConfig.m_hLog = m_hLog;  cConfig.m_pBroadcast = &m_cInputBroadcast;  cConfig.m_pReader = m_pReader;  cConfig.m_pTsProvider = m_pTsProvider;  cConfig.m_pHandler = this;  cConfig.m_iInitFill = 0;  cConfig.m_pEventHandler = this;  m_pConverter = pConverterModule->NewMpegConverter(cConfig);  ASSERT(m_pConverter);}//------------------------------------------------------------------------------// Destruction//------------------------------------------------------------------------------void C_DvbInput::OnDestroy(){  // PAT Decoder destruction  m_cPatDecoder.Detach();  if(m_pConverter)  {    // Stop the input converter if necessary    if(m_pConverter->IsRunning())    {      try      {        m_pConverter->Stop();      }      catch(E_Exception e)      {        m_cEndInit.Release();        delete m_pConverter;        throw e;      }    }    delete m_pConverter;  }  m_cEndInit.Release();}//------------------------------------------------------------------------------// Return the programs read in the dvbrc file//------------------------------------------------------------------------------C_List<C_Program> C_DvbInput::OnGetAvailablePgrms(){  C_List<C_Program> cPgrmList;  m_cLock.Lock();  for(int i=0; i<dvb->NumChannel(); i++)  {     C_String pStr=dvb->chans[i].name;    /* Let's replace all spaces by '_' */    pStr.Replace(' ', '_');    C_Program* pProgram = new C_Program(pStr, dvb->chans[i].pnr);    ASSERT(pProgram);    cPgrmList.PushEnd(pProgram);  }  m_cLock.UnLock();  return cPgrmList;}//------------------------------------------------------------------------------// Hardware PID selection//------------------------------------------------------------------------------void C_DvbInput::OnSelectPid(u16 iPid, u8 iType){  int i;  int iRc;  // Look for the first available demux  for(i = 0; (i < 256) && (m_iDemuxes[2 * i] != -1); i++);  // Check for the 256 Pid filters hardware limitation  // note that dvb->init open 4 demuxes  if(i < 256 - 4)  {    // TODO: test if it is not a required pid (PCR for example)    if((m_iSendMethod == 0) || (iType < TS_TYPE_MPEG2_PRIVATE))    {      int iFd = open(m_strDEMUX.GetString(), O_RDWR|O_NONBLOCK);      if(iFd < 0)      {        Log(m_hLog, LOG_ERROR, "Unable to open demux");      }      else      {        switch(iType)        {          case TS_TYPE_MPEG1_VIDEO:          case TS_TYPE_MPEG2_VIDEO:            iRc = dvb->set_vpid_fd(iPid, iFd);            break;          case TS_TYPE_MPEG1_AUDIO:            iRc = dvb->set_apid_fd(iPid, iFd);            break;          default:            iRc = dvb->set_otherpid_fd(iPid, iFd);            break;        }      }      if(iRc < 0)      {        Log(m_hLog, LOG_ERROR, C_String("Unable to set demux filter for PID ")                  + iPid + C_String("type : ") + iType);        close(iFd);      }      else      {        LogDbg(m_hLog, C_String("Demux filter n

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕亚洲区| 最新日韩在线视频| 欧美视频在线一区二区三区| 波多野结衣亚洲| 国产成人自拍在线| 成人性生交大片免费| 成人在线综合网| 色综合天天天天做夜夜夜夜做| 成人av资源下载| 91麻豆免费观看| 色哟哟一区二区在线观看| 91美女片黄在线观看91美女| av在线这里只有精品| 91麻豆国产福利在线观看| 91论坛在线播放| 欧美美女激情18p| 日韩美女主播在线视频一区二区三区| 日韩一区二区免费视频| 欧美精品一区二区三区在线| 国产精品福利在线播放| 国产精品久久久久久久久免费樱桃 | 久99久精品视频免费观看| 久久99最新地址| 波多野结衣91| 欧美日韩国产综合久久| 精品久久久久久亚洲综合网| 国产精品色在线观看| 亚洲一二三区在线观看| 麻豆精品久久久| 91看片淫黄大片一级在线观看| 欧美性猛交xxxx黑人交| 久久综合色鬼综合色| 亚洲精品免费视频| 毛片一区二区三区| 91美女在线观看| 久久综合一区二区| 一区二区三区在线不卡| 久久99精品国产91久久来源| 97久久人人超碰| 日韩一区二区三区观看| 亚洲欧美日韩中文播放 | 精品免费一区二区三区| 亚洲天堂福利av| 国内精品视频一区二区三区八戒| 成人av电影观看| 精品成a人在线观看| 夜夜嗨av一区二区三区四季av| 蜜桃视频一区二区三区| 在线观看精品一区| 国产精品丝袜久久久久久app| 亚洲成人午夜电影| 91婷婷韩国欧美一区二区| 337p日本欧洲亚洲大胆精品| 亚洲成人免费av| 色悠悠亚洲一区二区| 国产日产精品一区| 韩国成人在线视频| 在线成人av网站| 一区二区三区不卡视频| 国产精品高清亚洲| 国产精品久久久久毛片软件| 亚洲一区二区视频在线观看| 成人av免费观看| 国产人久久人人人人爽| 捆绑调教一区二区三区| 51精品视频一区二区三区| 亚洲免费观看在线视频| 国产91丝袜在线播放| 久久美女艺术照精彩视频福利播放| 日本大胆欧美人术艺术动态| 欧美另类变人与禽xxxxx| 樱桃视频在线观看一区| 91在线无精精品入口| 日韩理论片网站| 一本久久精品一区二区| 亚洲手机成人高清视频| 99久久国产免费看| 最新日韩av在线| 色噜噜偷拍精品综合在线| 亚洲视频在线一区观看| 色国产综合视频| 亚洲成人免费视频| 日韩小视频在线观看专区| 免费不卡在线视频| 久久久蜜桃精品| www.色精品| 亚洲综合久久久| 91.麻豆视频| 久久精品国产精品青草| 久久综合九色欧美综合狠狠| 国产一区二区日韩精品| 国产精品久久看| 在线免费观看日本欧美| 日本中文字幕一区二区视频 | 日本美女一区二区三区视频| 欧美电影在哪看比较好| 另类人妖一区二区av| 国产日本欧洲亚洲| 91福利社在线观看| 青娱乐精品在线视频| 久久精品一区二区三区不卡| eeuss鲁一区二区三区| 亚洲成人黄色影院| 久久久亚洲午夜电影| 99精品视频中文字幕| 丝袜美腿成人在线| 国产女主播一区| 欧美三片在线视频观看| 国产麻豆欧美日韩一区| 亚洲日穴在线视频| 日韩一级完整毛片| av在线不卡电影| 日本亚洲视频在线| 中文字幕制服丝袜成人av| 欧美日韩免费不卡视频一区二区三区| 美女一区二区久久| 亚洲最新视频在线观看| xnxx国产精品| 欧美精品粉嫩高潮一区二区| 国产成人av资源| 美女脱光内衣内裤视频久久影院| 亚洲视频你懂的| 亚洲视频 欧洲视频| 欧美剧情片在线观看| 9l国产精品久久久久麻豆| 美女被吸乳得到大胸91| 亚洲国产色一区| 综合精品久久久| 国产亚洲综合在线| 91麻豆精品国产综合久久久久久| 成人av高清在线| 国产99久久久久| 青青草精品视频| 亚洲一区二区三区中文字幕| 国产精品久久久久国产精品日日| 精品国产乱子伦一区| 在线不卡免费欧美| 欧美日韩国产在线播放网站| 91玉足脚交白嫩脚丫在线播放| 国产综合久久久久影院| 麻豆成人91精品二区三区| 午夜不卡av免费| 亚洲国产一区二区三区青草影视| 成人欧美一区二区三区1314| 久久久99精品久久| 国产午夜精品一区二区三区四区 | 日韩精品一区二区三区三区免费| 91国模大尺度私拍在线视频| 成人激情黄色小说| 丁香一区二区三区| 懂色一区二区三区免费观看| 国产成人综合亚洲91猫咪| 国产在线精品免费| 国产精品亚洲第一区在线暖暖韩国| 精品一区二区三区免费毛片爱| 免费在线看成人av| 精品一区二区久久| 黄色精品一二区| 国产91在线看| 99免费精品在线| 在线观看视频欧美| 欧美精品乱人伦久久久久久| 欧美在线观看视频一区二区三区 | 欧美高清视频不卡网| 在线播放中文字幕一区| 欧美一级久久久| 久久综合九色欧美综合狠狠| 国产午夜亚洲精品不卡| 国产精品毛片高清在线完整版| 日韩一区在线播放| 亚洲亚洲人成综合网络| 青娱乐精品视频在线| 精品一区二区在线免费观看| 国产成人在线电影| 日本精品免费观看高清观看| 欧美日韩亚洲不卡| 精品福利一区二区三区| 中文字幕在线一区二区三区| 亚洲激情在线播放| 美洲天堂一区二卡三卡四卡视频 | 国产精品素人一区二区| 亚洲女同ⅹxx女同tv| 视频一区视频二区中文| 国产一区二区三区在线观看免费 | 亚洲综合在线五月| 成人av在线观| 欧美视频你懂的| 2022国产精品视频| 亚洲精选视频在线| 国产制服丝袜一区| 在线精品视频一区二区| 精品对白一区国产伦| 亚洲人成精品久久久久久| 日本va欧美va欧美va精品| 成人在线视频一区| 欧美一级爆毛片| 亚洲免费大片在线观看| 国产麻豆精品在线| 欧美三级电影在线观看| 欧美经典一区二区三区|