本文整理汇总了C++中FrameBuffer::Capacity方法的典型用法代码示例。如果您正苦于以下问题:C++ FrameBuffer::Capacity方法的具体用法?C++ FrameBuffer::Capacity怎么用?C++ FrameBuffer::Capacity使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类FrameBuffer
的用法示例。
在下文中一共展示了FrameBuffer::Capacity方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: OpenReadFrame
Result_t OpenReadFrame(const char* filename, FrameBuffer& FB)
{
ASDCP_TEST_NULL_STR(filename);
m_File.Close();
Result_t result = m_File.OpenRead(filename);
if ( ASDCP_SUCCESS(result) )
{
Kumu::fsize_t file_size = m_File.Size();
if ( FB.Capacity() < file_size )
{
DefaultLogSink().Error("FrameBuf.Capacity: %u frame length: %u\n", FB.Capacity(), (ui32_t)file_size);
return RESULT_SMALLBUF;
}
}
ui32_t read_count;
if ( ASDCP_SUCCESS(result) )
result = m_File.Read(FB.Data(), FB.Capacity(), &read_count);
if ( ASDCP_SUCCESS(result) )
FB.Size(read_count);
return result;
}
示例2: assert
ASDCP::Result_t
ASDCP::DCData::SequenceParser::h__SequenceParser::OpenRead()
{
if ( m_FileList.empty() )
return RESULT_ENDOFFILE;
m_CurrentFile = m_FileList.begin();
BytestreamParser Parser;
FrameBuffer TmpBuffer;
Kumu::fsize_t file_size = Kumu::FileSize((*m_CurrentFile).c_str());
if ( file_size == 0 )
return RESULT_NOT_FOUND;
assert(file_size <= 0xFFFFFFFFL);
Result_t result = TmpBuffer.Capacity((ui32_t) file_size);
if ( ASDCP_SUCCESS(result) )
result = Parser.OpenReadFrame((*m_CurrentFile).c_str(), TmpBuffer);
if ( ASDCP_SUCCESS(result) )
result = Parser.FillDCDataDescriptor(m_DDesc);
// how big is it?
if ( ASDCP_SUCCESS(result) )
m_DDesc.ContainerDuration = m_FileList.size();
return result;
}
示例3: EncodeSync
ASDCP::Result_t
ASDCP::PCM::AtmosSyncChannelGenerator::ReadFrame(FrameBuffer& OutFB)
{
if (OutFB.Capacity() < m_numBytesPerFrame)
{
return RESULT_SMALLBUF;
}
/**
* Update frame number and size.
*/
OutFB.FrameNumber(m_currentFrameNumber);
OutFB.Size(m_numBytesPerFrame);
/**
* Get pointer to frame essence.
*/
byte_t* frameEssence = OutFB.Data();
if (m_isSyncEncoderInitialized)
{
/**
* Generate sync signal frame.
*/
int ret = EncodeSync(&m_syncEncoder, m_numSamplesPerFrame, m_syncSignalBuffer, m_currentFrameNumber);
if (ret == SYNC_ENCODER_ERROR_NONE)
{
for (unsigned int i = 0; i < m_numSamplesPerFrame; ++i)
{
/**
* Convert each encoded float sample to a signed 24 bit integer and
* copy into the essence buffer.
*/
i32_t sample = convertSampleFloatToInt24(m_syncSignalBuffer[i]);
memcpy(frameEssence, ((byte_t*)(&sample))+1, NUM_BYTES_PER_INT24);
frameEssence += NUM_BYTES_PER_INT24;
}
}
else
{
/**
* Encoding error, zero out the frame.
*/
memset(frameEssence, 0, m_numBytesPerFrame);
}
}
else
{
/**
* Sync encoder not initialize, zero out the frame.
*/
memset(frameEssence, 0, m_numBytesPerFrame);
}
++m_currentFrameNumber;
return RESULT_OK;
}
示例4: memcpy
ASDCP::Result_t
ASDCP::MPEG2::Parser::h__Parser::ReadFrame(FrameBuffer& FB)
{
Result_t result = RESULT_OK;
ui32_t write_offset = 0;
ui32_t read_count = 0;
FB.Size(0);
if ( m_EOF )
return RESULT_ENDOFFILE;
// Data is read in VESReadSize chunks. Each chunk is parsed, and the
// process is stopped when a Sequence or Picture header is found or when
// the input file is exhausted. The partial next frame is cached for the
// next call.
m_ParserDelegate.Reset();
m_Parser.Reset();
if ( m_TmpBuffer.Size() > 0 )
{
memcpy(FB.Data(), m_TmpBuffer.RoData(), m_TmpBuffer.Size());
result = m_Parser.Parse(FB.RoData(), m_TmpBuffer.Size());
write_offset = m_TmpBuffer.Size();
m_TmpBuffer.Size(0);
}
while ( ! m_ParserDelegate.m_CompletePicture && result == RESULT_OK )
{
if ( FB.Capacity() < ( write_offset + VESReadSize ) )
{
DefaultLogSink().Error("FrameBuf.Capacity: %u FrameLength: %u\n",
FB.Capacity(), ( write_offset + VESReadSize ));
return RESULT_SMALLBUF;
}
result = m_FileReader.Read(FB.Data() + write_offset, VESReadSize, &read_count);
if ( result == RESULT_ENDOFFILE || read_count == 0 )
{
m_EOF = true;
if ( write_offset > 0 )
result = RESULT_OK;
}
if ( ASDCP_SUCCESS(result) )
{
result = m_Parser.Parse(FB.RoData() + write_offset, read_count);
write_offset += read_count;
}
if ( m_EOF )
break;
}
assert(m_ParserDelegate.m_FrameSize <= write_offset);
if ( ASDCP_SUCCESS(result)
&& m_ParserDelegate.m_FrameSize < write_offset )
{
assert(m_TmpBuffer.Size() == 0);
ui32_t diff = write_offset - m_ParserDelegate.m_FrameSize;
assert(diff <= m_TmpBuffer.Capacity());
memcpy(m_TmpBuffer.Data(), FB.RoData() + m_ParserDelegate.m_FrameSize, diff);
m_TmpBuffer.Size(diff);
}
if ( ASDCP_SUCCESS(result) )
{
const byte_t* p = FB.RoData();
if ( p[0] != 0 || p[1] != 0 || p[2] != 1 || ! ( p[3] == SEQ_START || p[3] == PIC_START ) )
{
DefaultLogSink().Error("Frame buffer does not begin with a PIC or SEQ start code.\n");
return RESULT_RAW_FORMAT;
}
}
if ( ASDCP_SUCCESS(result) )
{
FB.Size(m_ParserDelegate.m_FrameSize);
FB.TemporalOffset(m_ParserDelegate.m_TemporalRef);
FB.FrameType(m_ParserDelegate.m_FrameType);
FB.PlaintextOffset(m_ParserDelegate.m_PlaintextOffset);
FB.FrameNumber(m_FrameNumber++);
FB.GOPStart(m_ParserDelegate.m_HasGOP);
FB.ClosedGOP(m_ParserDelegate.m_ClosedGOP);
}
return result;
}