XIRef<XMemory> H264Encoder::GetExtraData() const { XIRef<XMemory> ed = new XMemory( DEFAULT_EXTRADATA_BUFFER_SIZE ); memcpy( &ed->Extend( _extraData.GetDataSize() ), _extraData.Map(), _extraData.GetDataSize() ); return ed; }
XIRef<XMemory> H264Encoder::EncodeYUV420P( XIRef<XMemory> pic, FrameType type ) { XIRef<XMemory> frame = new XMemory( DEFAULT_ENCODE_BUFFER_SIZE + DEFAULT_PADDING ); uint8_t* p = &frame->Extend( DEFAULT_ENCODE_BUFFER_SIZE ); size_t outputSize = EncodeYUV420P( pic->Map(), frame->Map(), frame->GetDataSize(), type ); frame->ResizeData( outputSize ); return frame; }
XIRef<XMemory> AVDeMuxer::LoadFile( const XSDK::XString& fileName ) { XIRef<XMemory> buffer = new XMemory; struct x_file_info fileInfo; if( x_stat( fileName, &fileInfo ) < 0 ) X_THROW(("Unable to stat specified file.")); FILE* inFile = fopen( fileName.c_str(), "rb" ); if( !inFile ) X_THROW(("Unable to open specified file.")); uint8_t* d = &buffer->Extend( fileInfo._fileSize ); int itemsRead = fread( d, 1, fileInfo._fileSize, inFile ); fclose( inFile ); if( itemsRead != fileInfo._fileSize ) X_THROW(("Failed to read all of the data from the file.")); return buffer; }