bool wav_ac3wav_demuxer_c::probe(mm_io_cptr &io) { io->save_pos(); int len = io->read(m_buf[m_cur_buf]->get_buffer(), AC3WAV_BLOCK_SIZE); io->restore_pos(); if (decode_buffer(len) > 0) return true; m_swap_bytes = true; return decode_buffer(len) > 0; }
bool wav_dts_demuxer_c::probe(mm_io_cptr &io) { io->save_pos(); auto read_buf = memory_c::alloc(DTS_READ_SIZE); read_buf->set_size(io->read(read_buf->get_buffer(), DTS_READ_SIZE)); io->restore_pos(); if (!m_parser.detect(*read_buf, 5)) return false; m_codec.set_specialization(m_parser.get_first_header().get_codec_specialization()); return true; }
bool wav_dts_demuxer_c::probe(mm_io_cptr &io) { io->save_pos(); int len = io->read(m_buf[m_cur_buf]->get_buffer(), DTS_READ_SIZE); io->restore_pos(); if (detect_dts(m_buf[m_cur_buf]->get_buffer(), len, m_pack_14_16, m_swap_bytes)) { len = decode_buffer(len); int pos = find_consecutive_dts_headers(m_buf[m_cur_buf]->get_buffer(), len, 5); if (0 <= pos) { if (0 > find_dts_header(m_buf[m_cur_buf]->get_buffer() + pos, len - pos, &m_dtsheader)) return false; mxverb(3, boost::format("DTSinWAV: 14->16 %1% swap %2%\n") % m_pack_14_16 % m_swap_bytes); return true; } } return false; }
bool wav_ac3acm_demuxer_c::probe(mm_io_cptr &io) { io->save_pos(); int len = io->read(m_buf[m_cur_buf]->get_buffer(), AC3ACM_READ_SIZE); io->restore_pos(); ac3::parser_c parser; int pos = parser.find_consecutive_frames(m_buf[m_cur_buf]->get_buffer(), len, 4); if (-1 == pos) { m_swap_bytes = true; decode_buffer(len); pos = parser.find_consecutive_frames(m_buf[m_cur_buf]->get_buffer(), len, 4); } if (-1 == pos) return false; return m_ac3header.decode_header(m_buf[m_cur_buf]->get_buffer() + pos, len - pos); }