本文整理汇总了C++中mm_io_c::read方法的典型用法代码示例。如果您正苦于以下问题:C++ mm_io_c::read方法的具体用法?C++ mm_io_c::read怎么用?C++ mm_io_c::read使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类mm_io_c
的用法示例。
在下文中一共展示了mm_io_c::read方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: 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;
}
}
示例2: while
bool
mpeg_es_reader_c::read_frame(M2VParser &parser,
mm_io_c &in,
int64_t max_size) {
auto af_buffer = memory_c::alloc(READ_SIZE);
auto buffer = af_buffer->get_buffer();
int bytes_probed = 0;
while (true) {
auto state = parser.GetState();
if (MPV_PARSER_STATE_FRAME == state)
return true;
if ((MPV_PARSER_STATE_EOS == state) || (MPV_PARSER_STATE_ERROR == state))
return false;
assert(MPV_PARSER_STATE_NEED_DATA == state);
if ((max_size != -1) && (bytes_probed > max_size))
return false;
int bytes_read = in.read(buffer, std::min<int>(parser.GetFreeBufferSpace(), READ_SIZE));
if (!bytes_read)
return false;
bytes_probed += bytes_read;
parser.WriteData(buffer, bytes_read);
parser.SetEOS();
}
}
示例3: 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;
}
}
示例4: 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;
}
}
示例5: if
bool
mpeg_es_reader_c::read_frame(M2VParser &parser,
mm_io_c &in,
int64_t max_size) {
int bytes_probed;
bytes_probed = 0;
while (true) {
int state;
state = parser.GetState();
if (MPV_PARSER_STATE_NEED_DATA == state) {
if ((max_size != -1) && (bytes_probed > max_size))
return false;
int bytes_to_read = (parser.GetFreeBufferSpace() < READ_SIZE) ? parser.GetFreeBufferSpace() : READ_SIZE;
unsigned char *buffer = new unsigned char[bytes_to_read];
int bytes_read = in.read(buffer, bytes_to_read);
if (0 == bytes_read) {
delete [] buffer;
break;
}
bytes_probed += bytes_read;
parser.WriteData(buffer, bytes_read);
parser.SetEOS();
delete [] buffer;
} else if (MPV_PARSER_STATE_FRAME == state)
return true;
else if ((MPV_PARSER_STATE_EOS == state) || (MPV_PARSER_STATE_ERROR == state))
return false;
}
return false;
}