tsdemuxer.h

来自「Sun公司Dream项目」· C头文件 代码 · 共 82 行

H
82
字号
/*
 * 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]
 */ 

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

#include "Filter.h"
#include "PsiFilter.h"

#include <fstream>
#include <vector>


namespace mpeg2ts {

typedef std::auto_ptr<std::fstream> FstreamPtr;

class ProgramInfo;

/**
 * TsDemuxer simplifies the usage of all the other mpeg2ts filters in this package.
 * It installs the PAT and PMT filters and Callbacks, so the user can focus
 * on handling the elementary streams.
 */
 
class TsDemuxer
{
public:
    TsDemuxer( std::string filename, Filter::Logging log=Filter::LOG_NONE );
    
    virtual ~TsDemuxer(){};
    
    PmtList getProgramList();
    std::pair<Pat, PmtList> getPatProgramList();
    
    Filter *selectStream( unsigned long pid, FilterPtr streamProcessor );
    
    int processAllData();
    
    /*
     * The following methods are used by the PAT and PMT callbacks. 
     * TODO: Hide them from other users by making these methods friends of
     * the PAT and PMT callbacks.
     */
    void setPatParsingDone(bool);
    void setPmtParsingDone(bool);
    
private:
    FstreamPtr m_file;
    bool       m_patParsingDone;
    int        m_numPmtsParsed;
    int        m_numPmts;
    TsFilter   m_tsFilter;
};

}

#endif

⌨️ 快捷键说明

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