本文整理汇总了C++中XRef::WriteVideoPacket方法的典型用法代码示例。如果您正苦于以下问题:C++ XRef::WriteVideoPacket方法的具体用法?C++ XRef::WriteVideoPacket怎么用?C++ XRef::WriteVideoPacket使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类XRef
的用法示例。
在下文中一共展示了XRef::WriteVideoPacket方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: TestBuffer
void AVMuxerTest::TestBuffer()
{
XRef<H264Decoder> d = new H264Decoder( GetFastH264DecoderOptions() );
d->SetOutputWidth( 640 );
d->SetOutputHeight( 360 );
XRef<H264Encoder> e = new H264Encoder( GetFastH264EncoderOptions( 250000, 640, 360, 15, 1, 15 ) );
XRef<AVMuxer> c = new AVMuxer( e->GetOptions(),
"foo.mp4",
AVMuxer::OUTPUT_LOCATION_BUFFER );
c->SetExtraData( e->GetExtraData() );
for( int i = 0; i < NUM_FRAMES_IN_GOP; i++ )
{
int index = i % NUM_FRAMES_IN_GOP;
XIRef<Packet> pkt = new Packet( gop[index].frame, gop[index].frameSize, false );
d->Decode( pkt );
e->EncodeYUV420P( d->Get() );
c->WriteVideoPacket( e->Get(), ((i % 15) == 0) ? true : false );
}
XIRef<XMemory> buffer = new XMemory;
c->FinalizeBuffer( buffer );
}
示例2: TSLeak
void AVMuxerTest::TSLeak()
{
// avformat_write_trailer() isn't called on every file for .ts files. This caused
// a leak. The solution is to call it in dtor after file/buffer is done.
XRef<H264Decoder> d = new H264Decoder( GetFastH264DecoderOptions() );
d->SetOutputWidth( 640 );
d->SetOutputHeight( 360 );
XRef<H264Encoder> e = new H264Encoder( GetHLSH264EncoderOptions( 250000, 640, 360, 15, 1, 15 ) );
XRef<AVMuxer> c = new AVMuxer( e->GetOptions(),
"foo.ts",
AVMuxer::OUTPUT_LOCATION_BUFFER );
c->SetExtraData( e->GetExtraData() );
for( int i = 0; i < NUM_FRAMES_IN_GOP; i++ )
{
int index = i % NUM_FRAMES_IN_GOP;
XIRef<Packet> pkt = new Packet( gop[index].frame, gop[index].frameSize, false );
d->Decode( pkt );
e->EncodeYUV420P( d->Get() );
c->WriteVideoPacket( e->Get(), ((i % 15) == 0) ? true : false );
}
XIRef<XMemory> buffer = new XMemory;
c->FinalizeBuffer(buffer);
}
示例3: TestRecontainerize
void AVMuxerTest::TestRecontainerize()
{
struct CodecOptions options;
options.gop_size = 15;
options.bit_rate = 1424400; // size of gop * 8 == bit_rate
options.width = 1280;
options.height = 720;
options.time_base_num = 1;
options.time_base_den = 30;
XRef<AVMuxer> c = new AVMuxer( options,
"bar.mp4",
AVMuxer::OUTPUT_LOCATION_FILE );
for( int i = 0; i < NUM_FRAMES_IN_GOP; i++ )
{
int index = i % NUM_FRAMES_IN_GOP;
XIRef<Packet> pkt = new Packet( gop[index].frame, gop[index].frameSize, false );
c->WriteVideoPacket( pkt, ((i % 15) == 0) ? true : false );
}
c->FinalizeFile();
}