本文整理汇总了C++中shared_ptr::AddSequence方法的典型用法代码示例。如果您正苦于以下问题:C++ shared_ptr::AddSequence方法的具体用法?C++ shared_ptr::AddSequence怎么用?C++ shared_ptr::AddSequence使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类shared_ptr
的用法示例。
在下文中一共展示了shared_ptr::AddSequence方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: reader
/*virtual*/ void MLFBinaryIndexBuilder::Populate(shared_ptr<Index>& index) /*override*/
{
m_input.CheckIsOpenOrDie();
index->Reserve(filesize(m_input.File()));
BufferedFileReader reader(m_bufferSize, m_input);
if (reader.Empty())
RuntimeError("Input file is empty");
if (!m_corpus)
RuntimeError("MLFBinaryIndexBuilder: corpus descriptor was not specified.");
vector<char> buffer(MAX_UTTERANCE_LABEL_LENGTH);
// Validate file label
reader.TryReadBinarySegment(3, buffer.data());
std::string mlfLabel(buffer.data(),3);
if (mlfLabel != MLF_BIN_LABEL)
RuntimeError("MLFBinaryIndexBuilder: MLF binary file is malformed.");
//Validate MLF format version
reader.TryReadBinarySegment(sizeof(short), buffer.data());
short modelVersion = *(short*)buffer.data();
// Iterate over the bin MLF
string uttrKey;
while (readUtteranceLabel(modelVersion, reader, buffer, uttrKey))
{
auto uttrId = m_corpus->KeyToId(uttrKey);
reader.TryReadBinarySegment(sizeof(uint), buffer.data());
uint uttrFrameCount = *(uint*)buffer.data();
auto sequenceStartOffset = reader.GetFileOffset();
// Read size of this uttrs
reader.TryReadBinarySegment(sizeof(ushort), buffer.data());
ushort uttrSamplesCount = *(ushort*)buffer.data();
// sample count, senone/count pairs
size_t uttrSize =sizeof(ushort) + uttrSamplesCount * 2 * sizeof(ushort);
IndexedSequence sequence;
sequence.SetKey(uttrId)
.SetNumberOfSamples(uttrFrameCount)
.SetOffset(sequenceStartOffset)
.SetSize(uttrSize);
index->AddSequence(sequence);
reader.SetFileOffset(reader.GetFileOffset() + uttrSamplesCount * 2 * sizeof(ushort));
}
}