本文整理汇总了C++中mm_io_c::setFilePointer方法的典型用法代码示例。如果您正苦于以下问题:C++ mm_io_c::setFilePointer方法的具体用法?C++ mm_io_c::setFilePointer怎么用?C++ mm_io_c::setFilePointer使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类mm_io_c
的用法示例。
在下文中一共展示了mm_io_c::setFilePointer方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: find_consecutive_aac_headers
int
aac_reader_c::find_valid_headers(mm_io_c &in,
int64_t probe_range,
int num_headers) {
try {
in.setFilePointer(0, seek_beginning);
memory_cptr buf = memory_c::alloc(probe_range);
int num_read = in.read(buf->get_buffer(), probe_range);
in.setFilePointer(0, seek_beginning);
return find_consecutive_aac_headers(buf->get_buffer(), num_read, num_headers);
} catch (...) {
return -1;
}
}
示例2: buf
bool
truehd_reader_c::find_valid_headers(mm_io_c &in,
int64_t probe_range,
int num_headers) {
try {
memory_cptr buf(memory_c::alloc(probe_range));
in.setFilePointer(0, seek_beginning);
skip_id3v2_tag(in);
int num_read = in.read(buf->get_buffer(), probe_range);
truehd_parser_c parser;
parser.add_data(buf->get_buffer(), num_read);
int num_sync_frames = 0;
while (parser.frame_available()) {
truehd_frame_cptr frame = parser.get_next_frame();
if (frame->is_sync())
++num_sync_frames;
}
return num_sync_frames >= num_headers;
} catch (...) {
return false;
}
}
示例3: buf
int
ac3_reader_c::find_valid_headers(mm_io_c &in,
int64_t probe_range,
int num_headers) {
try {
memory_cptr buf(memory_c::alloc(probe_range));
in.setFilePointer(0, seek_beginning);
skip_id3v2_tag(in);
ac3::parser_c parser;
int num_read = in.read(buf->get_buffer(), probe_range);
int pos = parser.find_consecutive_frames(buf->get_buffer(), num_read, num_headers);
in.setFilePointer(0, seek_beginning);
return pos;
} catch (...) {
return -1;
}
}
示例4: while
dts_reader_c::chunks_t
dts_reader_c::scan_chunks(mm_io_c &in) {
static auto s_debug = debugging_option_c{"dts_reader|dts_reader_chunks"};
auto chunks = chunks_t{};
try {
auto const file_size = static_cast<uint64_t>(in.get_size());
in.setFilePointer(0, seek_beginning);
auto type = static_cast<chunk_type_e>(in.read_uint64_be());
if (type != chunk_type_e::dtshdhdr) {
chunks.emplace_back(chunk_type_e::strmdata, 0ull, file_size);
return chunks;
}
auto next_chunk_start = 0ull;
while (next_chunk_start < (file_size - 16)) {
in.setFilePointer(next_chunk_start);
type = static_cast<chunk_type_e>(in.read_uint64_be());
auto data_size = std::min<uint64_t>(in.read_uint64_be(), file_size - next_chunk_start - 16);
chunks.emplace_back(type, next_chunk_start + 16, data_size);
next_chunk_start = chunks.back().data_end;
}
} catch (mtx::mm_io::exception &) {
}
if (s_debug)
for (auto const &chunk : chunks)
mxinfo(boost::format("DTS chunk type %|1$16x| at %2% data size %3% data end %4%\n") % static_cast<uint64_t>(chunk.type) % (chunk.data_start - 16) % chunk.data_size % chunk.data_end);
return chunks;
}