当前位置: 首页>>代码示例>>C++>>正文


C++ mm_io_c::read方法代码示例

本文整理汇总了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;
  }
}
开发者ID:RicardFonseca,项目名称:mkvtoolnix,代码行数:28,代码来源:r_truehd.cpp

示例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();
    }
}
开发者ID:jaya-divx,项目名称:mkvtoolnix,代码行数:32,代码来源:r_mpeg_es.cpp

示例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;
  }
}
开发者ID:Trottel,项目名称:mkvtoolnix,代码行数:15,代码来源:r_aac.cpp

示例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;
  }
}
开发者ID:DonghuiLi-81,项目名称:mkvtoolnix,代码行数:22,代码来源:r_ac3.cpp

示例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;
}
开发者ID:Azpidatziak,项目名称:mkvtoolnix,代码行数:38,代码来源:r_mpeg_es.cpp


注:本文中的mm_io_c::read方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。