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

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

?? psifilter.h

?? Sun公司Dream項目
?? H
字號:
/*
 * The contents of this file are subject to the terms
 * of the Common Development and Distribution License
 * (the "License").  You may not use this file except
 * in compliance with the License.
 *
 * You can obtain a copy of the license at
 * http://www.opensource.org/licenses/cddl1.php
 * See the License for the specific language governing
 * permissions and limitations under the License.
 *
 * When distributing Covered Code, include this CDDL
 * HEADER in each file and include the License file at
 * http://www.opensource.org/licenses/cddl1.php.  If 
 * applicable, add the following below this CDDL HEADER, 
 * with the fields enclosed by brackets "[]" replaced 
 * with your own identifying information: 
 * Portions Copyright [yyyy]
 * [name of copyright owner]
 */ 

/*
 * $(@)PsiFilter.h $Revision: 1.2 $ $Date: 2006/07/15 00:02:42 $
 * 
 * Copyright 2006 Sun Microsystems, Inc. All Rights Reserved.
 */

#ifndef MPEG2TS_PSI_FILTER_H
#define MPEG2TS_PSI_FILTER_H


#include "Filter.h"
#include "Descriptors.h"
#include <string>
#include <vector>
#include <bitset>
#include <functional>

namespace mpeg2ts {


struct PatEntry 
{
    std::bitset<16> programNumber;
    std::bitset<3>  reserved;
    std::bitset<13> programMapPid;
    int sizeInBytes(){
    return (programNumber.size() + reserved.size() + programMapPid.size())/8;
    }
};


struct PmtEntry 
{
    PmtEntry(){}
    
    PmtEntry( uint8_t streamtype, uint16_t elementarypid )
    :streamType( streamtype ), elementaryPid(elementarypid), reserved3(0xff),
    reserved4(0xff), esInfoLength(0)
    {}
    
    std::bitset<8> streamType;
    std::bitset<3> reserved3;
    std::bitset<13> elementaryPid;
    std::bitset<4> reserved4;
    std::bitset<12> esInfoLength;
    std::vector<DescriptorPtr>  descriptors;

    int sizeInBytes();

};

struct PsiBase
{
    std::bitset<8> tableId;
    std::bitset<1> sectionSyntaxIndicator;
    std::bitset<1> privateIndicator;
    std::bitset<2> reserved2a;
    std::bitset<12> sectionLength;
    std::bitset<16> transportStreamId;
    std::bitset<2> reserved2b;
    std::bitset<5> versionNumber;
    std::bitset<1> currentNextIndicator;
    std::bitset<8> sectionNumber;
    std::bitset<8> lastSectionNumber;
    int sizeInBytes(){ 
    return (tableId.size() + sectionSyntaxIndicator.size() + privateIndicator.size()
            + reserved2a.size() + sectionLength.size() + transportStreamId.size()
            + reserved2b.size() + versionNumber.size() + currentNextIndicator.size()
            + sectionNumber.size() + lastSectionNumber.size() )/8;
    }
            
};

class Pmt;

typedef std::vector<PatEntry> PatEntryList;
typedef std::vector<PmtEntry> PmtEntryList;
typedef std::vector<Pmt>      PmtList;

struct Pmt
{
    Pmt(){}
    
    Pmt( int programNumbr, int pcrPID )
    :tableId( Filter::PmtTid ), programNumber(programNumbr),
    sectionSyntaxIndicator(1), privateIndicator(0), sectionNumber(0),
    lastSectionNumber(0), reserved2a(0xff), reserved2b(0xff), versionNumber(1),
    currentNextIndicator(1), reserved3(0xff), reserved4(0xff),
    programInfoLength(0), pcrPid(pcrPID)
    {}
    
    std::bitset<8> tableId;
    std::bitset<1> sectionSyntaxIndicator;
    std::bitset<1> privateIndicator;
    std::bitset<2> reserved2a;
    std::bitset<12> sectionLength;
    std::bitset<16> programNumber;
    std::bitset<2> reserved2b;
    std::bitset<5> versionNumber;
    std::bitset<1> currentNextIndicator;
    std::bitset<8> sectionNumber;
    std::bitset<8> lastSectionNumber;
    std::bitset<3> reserved3;
    std::bitset<13> pcrPid;
    std::bitset<4> reserved4;
    std::bitset<12> programInfoLength;
    std::vector<DescriptorPtr>  descriptors;
    PmtEntryList    entries;
    std::bitset<32> crc32;
    int sizeInBytes();
};

struct Pat : public PsiBase
{
    PatEntryList entries;
};

struct ConditionalAccessSection
{
    std::bitset<8> tableId;
    std::bitset<1> sectionSyntaxIndicator;
    std::bitset<1> privateIndicator;
    std::bitset<2> reserved2;
    std::bitset<12> sectionLength;
    std::bitset<18> reserved18;
    std::bitset<5> versionNumber;
    std::bitset<1> currentNextIndicator;
    std::bitset<8> sectionNumber;
    std::bitset<8> lastSectionNumber;
    int sizeInBytes(){ 
    return (tableId.size() + sectionSyntaxIndicator.size() + privateIndicator.size()
            + reserved2.size() + sectionLength.size() + reserved18.size()
            + versionNumber.size() + currentNextIndicator.size()
            + sectionNumber.size() + lastSectionNumber.size() )/8;
    }
};

class OutputBitBuffer;
OutputBitBuffer& operator<<( OutputBitBuffer& dest, Pmt& pmt );
OutputBitBuffer& operator<<( OutputBitBuffer& dest, PmtEntry& pmtEntry );

std::ostream& operator<<(std::ostream& out, const Pat& pat);
std::ostream& operator<<(std::ostream& out, const PatEntry& patEntry);
std::ostream& operator<<(std::ostream& out, const Pmt& pmt);
std::ostream& operator<<(std::ostream& out, const PmtEntry& pmtEntry);


template<typename ARG1>
class Callback
{
public:
    virtual void operator()(ARG1 arg, unsigned int pid /*PAT or PMT Pid*/) = 0;
};

typedef Callback< Pat > PatCallback;
typedef Callback< Pmt > PmtCallback;


class PatFilter : public Filter
{
 public:
    PatFilter() : m_patCallback(NULL), m_filter(NULL){}
    virtual int process(Buffer buffer);
    void setCallback( PatCallback *cb );
 
 private:
    std::string m_buffer;
    PatCallback *m_patCallback;
    Filter      *m_filter;
};

class PmtFilter : public Filter
{
public:
    enum StreamType { MPEG1_VIDEO=0x01, MPEG2_VIDEO=0x02, MPEG1_AUDIO=0x03,
              MPEG2_AUDIO=0x04, PRIVATE_SECTIONS=0x05,
              PES_PRIVATE_SECTIONS=0x06, 
              USER_PRIVATE_START=0x80, USER_PRIVATE_END=0xFF };
public:
    PmtFilter(){} 
    virtual int process( Buffer pmtBytes );
    void setCallback(PmtCallback *cb);

private:
    std::string m_buffer;
    PmtCallback *m_pmtCallback;
};

typedef boost::shared_ptr<mpeg2ts::PatFilter> PatFilterPtr;
typedef boost::shared_ptr<mpeg2ts::PmtFilter> PmtFilterPtr;

}

#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品在线免费| 播五月开心婷婷综合| 一区二区三区**美女毛片| 中文字幕欧美日韩一区| 国产欧美一区二区在线观看| 精品日韩欧美一区二区| 欧美成人一区二区三区片免费| 欧美精品免费视频| 欧美一区二区三区婷婷月色| 欧美日韩国产一级二级| 在线看不卡av| 欧美久久一二区| 欧美一区二区成人6969| 日韩精品一区二区三区三区免费| 日韩视频一区在线观看| 欧美大度的电影原声| 国产夜色精品一区二区av| 亚洲欧洲另类国产综合| 日韩美女视频一区| 亚洲成人av福利| 久久精品免费看| 国产精品一区二区果冻传媒| 成人午夜激情影院| 在线观看一区日韩| 日韩精品一区二区三区在线播放| 久久一日本道色综合| 国产精品天天看| 亚洲精品第1页| 免费成人你懂的| 国产91丝袜在线18| 欧美四级电影在线观看| 欧美成人精品3d动漫h| 国产精品午夜电影| 亚洲免费成人av| 伦理电影国产精品| gogo大胆日本视频一区| 欧美午夜电影网| 久久网这里都是精品| 亚洲精品综合在线| 免费在线欧美视频| 色综合天天做天天爱| 日韩一区二区三区精品视频 | 亚洲精品视频免费观看| 日韩和欧美的一区| 高清久久久久久| 91精品国产综合久久精品图片 | 国产精品久久久久久久久图文区| 樱桃国产成人精品视频| 韩日欧美一区二区三区| 欧美日韩综合在线| 中文字幕在线观看不卡| 精品在线播放午夜| 欧美人妇做爰xxxⅹ性高电影| 欧美国产成人在线| 国产乱码一区二区三区| 欧美一区二区精品在线| 一区二区三区波多野结衣在线观看| 国产精品91一区二区| 日韩欧美一级在线播放| 亚洲一线二线三线视频| 成人sese在线| 欧美国产精品一区| 粉嫩一区二区三区性色av| 精品少妇一区二区三区日产乱码| 青青草成人在线观看| 欧美日韩精品欧美日韩精品 | 久久综合狠狠综合久久激情| 视频一区二区不卡| 在线观看视频一区二区| 亚洲女人小视频在线观看| 成人少妇影院yyyy| 久久久.com| 国产在线视频一区二区三区| 精品国产91九色蝌蚪| 韩国成人精品a∨在线观看| 日韩免费看的电影| 久久精品99国产国产精| 欧美大片拔萝卜| 国产精品中文有码| 国产日韩欧美精品电影三级在线| 国产在线视频一区二区三区| 国产欧美精品国产国产专区 | 666欧美在线视频| 日韩高清国产一区在线| 欧美日本在线播放| 久久精品免费看| 日本一区二区三区dvd视频在线| 成人一区二区三区| 亚洲欧美成人一区二区三区| 欧美伊人久久久久久久久影院 | 欧美不卡123| 狠狠色丁香久久婷婷综合丁香| 久久久蜜臀国产一区二区| 国产91精品入口| 亚洲视频免费观看| 欧洲一区在线观看| 男人的天堂久久精品| 国产欧美日本一区视频| 91亚洲国产成人精品一区二区三 | 99免费精品在线| 亚洲自拍偷拍图区| 精品日韩一区二区| 91福利在线导航| 国产在线精品一区二区夜色 | 精品制服美女丁香| 18欧美乱大交hd1984| 欧美人伦禁忌dvd放荡欲情| 国产精品小仙女| 亚洲地区一二三色| 久久久久亚洲蜜桃| 欧美在线一二三四区| 国产中文字幕精品| 午夜不卡在线视频| 久久精品日韩一区二区三区| 色狠狠av一区二区三区| 国产在线精品免费av| 亚洲午夜av在线| 中文字幕不卡的av| 91精品国产欧美一区二区18| aa级大片欧美| 国产伦精品一区二区三区视频青涩| 亚洲乱码国产乱码精品精可以看| 日韩欧美国产电影| 在线观看91视频| 91香蕉视频mp4| 国产美女精品一区二区三区| 三级成人在线视频| 一区二区三区欧美在线观看| 国产精品网站在线播放| 欧美成人精精品一区二区频| 欧美日高清视频| 欧美婷婷六月丁香综合色| 国产成人福利片| 久久99国产精品久久99| 五月天久久比比资源色| 亚洲精品久久久久久国产精华液| 久久久91精品国产一区二区精品 | 欧美日韩国产123区| 成人午夜av电影| 国产一区二区三区四区在线观看| 亚洲 欧美综合在线网络| 国产精品久久久久久久久果冻传媒| 在线电影欧美成精品| 在线亚洲免费视频| 色视频成人在线观看免| 北岛玲一区二区三区四区| 国产精品一区二区三区乱码| 黑人巨大精品欧美一区| 日本不卡1234视频| 日本不卡视频在线| 亚洲一区二区三区视频在线播放 | 91麻豆精品91久久久久久清纯| 欧美中文字幕一二三区视频| 在线视频一区二区三区| 91丨porny丨户外露出| 91在线丨porny丨国产| 91欧美一区二区| 在线精品亚洲一区二区不卡| 欧美日韩久久一区二区| 在线播放/欧美激情| 911精品国产一区二区在线| 91精品国产高清一区二区三区蜜臀 | 午夜精品aaa| 青草国产精品久久久久久| 日韩福利电影在线观看| 另类综合日韩欧美亚洲| 国产成人鲁色资源国产91色综 | 成人中文字幕合集| www.亚洲人| 91丨porny丨国产入口| 99国产欧美另类久久久精品| 色94色欧美sute亚洲线路一ni | 日日摸夜夜添夜夜添国产精品 | 人人爽香蕉精品| 精品一区二区精品| 丁香六月久久综合狠狠色| 91热门视频在线观看| 精品1区2区3区| 777色狠狠一区二区三区| 欧美成人性战久久| 综合久久综合久久| 蜜桃视频在线一区| 99亚偷拍自图区亚洲| 欧美一级xxx| 中文字幕在线一区免费| 亚洲影院在线观看| 国产精品 日产精品 欧美精品| 色悠悠亚洲一区二区| 在线综合+亚洲+欧美中文字幕| 久久久综合九色合综国产精品| 亚洲精品日韩专区silk | 色偷偷88欧美精品久久久| 成人免费视频视频| av高清久久久| 亚洲一区二区三区四区不卡| 丝袜美腿亚洲综合| 宅男在线国产精品| 久久久久国产精品麻豆ai换脸 | 综合久久综合久久| 丝袜亚洲另类丝袜在线|