本文整理汇总了C++中mm_io_c::save_pos方法的典型用法代码示例。如果您正苦于以下问题:C++ mm_io_c::save_pos方法的具体用法?C++ mm_io_c::save_pos怎么用?C++ mm_io_c::save_pos使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类mm_io_c
的用法示例。
在下文中一共展示了mm_io_c::save_pos方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: sort
void
cues_c::write(mm_io_c &out,
KaxSeekHead &seek_head) {
if (!m_points.size() || !g_cue_writing_requested)
return;
// auto start = get_current_time_millis();
sort();
// auto end_sort = get_current_time_millis();
// Need to write the (empty) cues element so that its position will
// be set for indexing in g_kax_sh_main. Necessary because there's
// no API function to force the position to a certain value; nor is
// there a different API function in KaxSeekHead for adding anything
// by ID and position manually.
out.save_pos();
kax_cues_position_dummy_c cues_dummy;
cues_dummy.Render(out);
out.restore_pos();
// Write meta seek information if it is not disabled.
seek_head.IndexThis(cues_dummy, *g_kax_segment);
// Forcefully write the correct head and copy its content from the
// temporary storage location.
auto total_size = calculate_total_size();
write_ebml_element_head(out, EBML_ID(KaxCues), total_size);
for (auto &point : m_points) {
KaxCuePoint kc_point;
GetChild<KaxCueTime>(kc_point).SetValue(point.timecode / g_timecode_scale);
auto &positions = GetChild<KaxCueTrackPositions>(kc_point);
GetChild<KaxCueTrack>(positions).SetValue(point.track_num);
GetChild<KaxCueClusterPosition>(positions).SetValue(point.cluster_position);
auto codec_state_position = m_codec_state_position_map.find({ point.track_num, point.timecode });
if (codec_state_position != m_codec_state_position_map.end())
GetChild<KaxCueCodecState>(positions).SetValue(codec_state_position->second);
if (point.relative_position)
GetChild<KaxCueRelativePosition>(positions).SetValue(point.relative_position);
if (point.duration)
GetChild<KaxCueDuration>(positions).SetValue(RND_TIMECODE_SCALE(point.duration) / g_timecode_scale);
kc_point.Render(out);
}
m_points.clear();
m_codec_state_position_map.clear();
m_num_cue_points_postprocessed = 0;
// auto end_all = get_current_time_millis();
// mxinfo(boost::format("dur sort %1% write %2% total %3%\n") % (end_sort - start) % (end_all - end_sort) % (end_all - start));
}