void ogm_reader_c::identify() { std::vector<std::string> verbose_info; size_t i; // Check if a video track has a TITLE comment. If yes we use this as the // new segment title / global file title. for (i = 0; i < sdemuxers.size(); i++) if ((sdemuxers[i]->title != "") && (sdemuxers[i]->stype == OGM_STREAM_TYPE_V_MSCOMP)) { verbose_info.push_back(std::string("title:") + escape(sdemuxers[i]->title)); break; } id_result_container(join(" ", verbose_info)); for (i = 0; i < sdemuxers.size(); i++) { verbose_info.clear(); if (sdemuxers[i]->language != "") verbose_info.push_back(std::string("language:") + escape(sdemuxers[i]->language)); if ((sdemuxers[i]->title != "") && (sdemuxers[i]->stype != OGM_STREAM_TYPE_V_MSCOMP)) verbose_info.push_back(std::string("track_name:") + escape(sdemuxers[i]->title)); if ((0 != sdemuxers[i]->display_width) && (0 != sdemuxers[i]->display_height)) verbose_info.push_back((boost::format("display_dimensions:%1%x%2%") % sdemuxers[i]->display_width % sdemuxers[i]->display_height).str()); id_result_track(i, sdemuxers[i]->get_type(), sdemuxers[i]->get_codec(), verbose_info); } if (m_chapters.get()) id_result_chapters(count_chapter_atoms(*m_chapters)); }
void mpeg_ts_reader_c::identify() { std::vector<std::string> verbose_info; auto mpls_in = dynamic_cast<mm_mpls_multi_file_io_c *>(get_underlying_input_as_multi_file_io()); if (mpls_in) mpls_in->create_verbose_identification_info(verbose_info); id_result_container(verbose_info); size_t i; for (i = 0; i < tracks.size(); i++) { mpeg_ts_track_ptr &track = tracks[i]; if (!track->probed_ok) continue; const char *fourcc = FOURCC('M', 'P', 'G', '1') == track->fourcc ? "MPEG-1" : FOURCC('M', 'P', 'G', '2') == track->fourcc ? "MPEG-2" : FOURCC('A', 'V', 'C', '1') == track->fourcc ? "AVC/h.264" : FOURCC('W', 'V', 'C', '1') == track->fourcc ? "VC1" : FOURCC('M', 'P', '1', ' ') == track->fourcc ? "MPEG-1 layer 1" : FOURCC('M', 'P', '2', ' ') == track->fourcc ? "MPEG-1 layer 2" : FOURCC('M', 'P', '3', ' ') == track->fourcc ? "MPEG-1 layer 3" : FOURCC('A', 'A', 'C', ' ') == track->fourcc ? "AAC" : FOURCC('A', 'C', '3', ' ') == track->fourcc ? "AC3" : FOURCC('D', 'T', 'S', ' ') == track->fourcc ? "DTS" : FOURCC('T', 'R', 'H', 'D') == track->fourcc ? "TrueHD" : FOURCC('P', 'G', 'S', ' ') == track->fourcc ? "HDMV PGS" // : FOURCC('P', 'C', 'M', ' ') == track->fourcc ? "PCM" // : FOURCC('L', 'P', 'C', 'M') == track->fourcc ? "LPCM" : nullptr; if (!fourcc) continue; verbose_info.clear(); if (!track->language.empty()) verbose_info.push_back((boost::format("language:%1%") % escape(track->language)).str()); verbose_info.push_back((boost::format("ts_pid:%1%") % track->pid).str()); std::string type = ES_AUDIO_TYPE == track->type ? ID_RESULT_TRACK_AUDIO : ES_VIDEO_TYPE == track->type ? ID_RESULT_TRACK_VIDEO : ID_RESULT_TRACK_SUBTITLES; id_result_track(i, type, fourcc, verbose_info); } if (!m_chapter_timecodes.empty()) id_result_chapters(m_chapter_timecodes.size()); }