void mp3_reader_c::read_headers() { try { int pos = find_valid_headers(*m_in, 2 * 1024 * 1024, 5); if (0 > pos) throw mtx::input::header_parsing_x(); m_in->setFilePointer(pos, seek_beginning); m_in->read(m_chunk->get_buffer(), 4); decode_mp3_header(m_chunk->get_buffer(), &m_mp3header); m_in->setFilePointer(pos, seek_beginning); show_demuxer_info(); if ((0 < pos) && verbose) mxwarn_fn(m_ti.m_fname, boost::format(Y("Skipping %1% bytes at the beginning (no valid MP3 header found).\n")) % pos); m_ti.m_id = 0; // ID for this track. } catch (mtx::mm_io::exception &) { throw mtx::input::open_x(); } }
int mpeg_ts_track_c::new_stream_a_mpeg() { add_pes_payload_to_probe_data(); mp3_header_t header; int offset = find_mp3_header(m_probe_data->get_buffer(), m_probe_data->get_size()); if (-1 == offset) return FILE_STATUS_MOREDATA; decode_mp3_header(m_probe_data->get_buffer() + offset, &header); a_channels = header.channels; a_sample_rate = header.sampling_frequency; fourcc = FOURCC('M', 'P', '0' + header.layer, ' '); mxverb(3, boost::format("new_stream_a_mpeg: Channels: %1%, sample rate: %2%\n") %a_channels % a_sample_rate); return 0; }