filewritertest.c

来自「Sun公司Dream项目」· C语言 代码 · 共 78 行

C
78
字号

/*
 * 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]
 */ 

/*
 * $(@)FileWriterTest.cc $Revision: 1.2 $ $Date: 2006/07/15 00:18:06 $
 * 
 * Copyright 2006 Sun Microsystems, Inc. All Rights Reserved.
 */
#include "mpeg2/FileWriter.h"
#include "mpeg2/TsDemuxer.h"

using namespace mpeg2ts;

int main(int argc, char *argv[])
{
    if( argc != 3 ) {
        std::cout << "Usage: fileWriterTest <mpeg ts filename> <dest file>\n";
        return 1;
    }
    
    try
    {
        std::pair<Pat, PmtList> patPmts;
        
        {
            TsDemuxer demuxer( argv[1] );
        
            patPmts = demuxer.getPatProgramList();
        }
        
        TsDemuxer demuxer( argv[1] );
        
        FileWriterPtr writer(new FileWriter(argv[2]));
        
        // Set filewriter as the output filter for handling all PIDs.
        
        demuxer.selectStream( TsFilter::NullPid, writer );
        demuxer.selectStream( TsFilter::PatPid, writer );
        
        for( PatEntryList::iterator it=patPmts.first.entries.begin(); it!=patPmts.first.entries.end(); ++it )
            demuxer.selectStream( (*it).programMapPid.to_ulong(), writer );
        
        for( PmtList::iterator it=patPmts.second.begin(); it!=patPmts.second.end(); ++it )
            for( PmtEntryList::iterator ites=(*it).entries.begin(); 
                    ites!=(*it).entries.end(); ++ites )
            {
                demuxer.selectStream( (*ites).elementaryPid.to_ulong(), writer );
            }
        
        demuxer.processAllData();
        
    }catch(std::exception& e){
        std::cout << "Exception: " << e.what() << std::endl;
        return 1;
    }
    
    return 0;
}

⌨️ 快捷键说明

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