stream_t parser_c::parse_stream() { auto str = stream_t(); auto length = m_bc->get_bits(8); auto position = m_bc->get_bit_position() / 8u; str.stream_type = m_bc->get_bits(8); if (1 == str.stream_type) str.pid = m_bc->get_bits(16); else if ((2 == str.stream_type) || (4 == str.stream_type)) { str.sub_path_id = m_bc->get_bits(8); str.sub_clip_id = m_bc->get_bits(8); str.pid = m_bc->get_bits(16); } else if (3 == str.stream_type) { str.sub_path_id = m_bc->get_bits(8); str.pid = m_bc->get_bits(16); } else if (m_debug) mxdebug(boost::format("Unknown stream type %1%\n") % str.stream_type); m_bc->set_bit_position((length + position) * 8); length = m_bc->get_bits(8); position = m_bc->get_bit_position() / 8u; str.coding_type = m_bc->get_bits(8); if ((0x01 == str.coding_type) || (0x02 == str.coding_type) || (0x1b == str.coding_type) || (0xea == str.coding_type)) { str.format = m_bc->get_bits(4); str.rate = m_bc->get_bits(4); } else if ( (0x03 == str.coding_type) || (0x04 == str.coding_type) || (0x80 == str.coding_type) || (0x81 == str.coding_type) || (0x82 == str.coding_type) || (0x83 == str.coding_type) || (0x84 == str.coding_type) || (0x85 == str.coding_type) || (0x86 == str.coding_type)) { str.format = m_bc->get_bits(4); str.rate = m_bc->get_bits(4); str.language = read_string(3); } else if ((0x90 == str.coding_type) || (0x91 == str.coding_type)) str.language = read_string(3); else if (0x92 == str.coding_type) { str.char_code = m_bc->get_bits(8); str.language = read_string(3); } else mxdebug_if(m_debug, boost::format("Unrecognized coding type %|1$02x|\n") % str.coding_type); m_bc->set_bit_position((position + length) * 8); return str; }
void TrackModel::trackUpdated(Track *track) { if (!m_tracks) { mxdebug_if(m_debug, boost::format("trackUpdated() called but !m_tracks!?\n")); return; } int row = rowForTrack(*m_tracks, track); mxdebug(boost::format("trackUpdated(): row is %1%\n") % row); if (-1 == row) return; emit dataChanged(createIndex(row, 0, track), createIndex(row, NumberOfColumns - 1, track)); }
void mm_write_buffer_io_c::setFilePointer(int64 offset, seek_mode mode) { int64_t new_pos = seek_beginning == mode ? offset : seek_end == mode ? m_proxy_io->get_size() - offset : getFilePointer() + offset; if (new_pos == static_cast<int64_t>(getFilePointer())) return; flush_buffer(); if (m_debug_seek) { int64_t previous_pos = mm_proxy_io_c::getFilePointer(); mxdebug(boost::format("seek from %1% to %2% diff %3%\n") % previous_pos % new_pos % (new_pos - previous_pos)); } mm_proxy_io_c::setFilePointer(offset, mode); }
mtx_release_version_t get_latest_release_version() { bool debug = debugging_requested("version_check|curl"); std::string url = MTX_VERSION_CHECK_URL; debugging_requested("version_check_url", &url); mxdebug_if(debug, boost::format("Update check started with URL %1%\n") % url); mtx_release_version_t release; auto doc = retrieve_and_parse_xml(url + ".gz"); #if defined(HAVE_BZLIB_H) if (!doc) doc = retrieve_and_parse_xml(url + ".bz2"); #endif // HAVE_BZLIB_H if (!doc) doc = retrieve_and_parse_xml(url); if (!doc) return release; release.latest_source = version_number_t(doc->select_single_node("/mkvtoolnix-releases/latest-source/version").node().child_value()); release.latest_windows_build = version_number_t((boost::format("%1% build %2%") % doc->select_single_node("/mkvtoolnix-releases/latest-windows-pre/version").node().child_value() % doc->select_single_node("/mkvtoolnix-releases/latest-windows-pre/build").node().child_value()).str()); release.valid = release.latest_source.valid; release.urls["general"] = doc->select_single_node("/mkvtoolnix-releases/latest-source/url").node().child_value(); release.urls["source_code"] = doc->select_single_node("/mkvtoolnix-releases/latest-source/source-code-url").node().child_value(); release.urls["windows_pre_build"] = doc->select_single_node("/mkvtoolnix-releases/latest-windows-pre/url").node().child_value(); for (auto arch : std::vector<std::string>{ "x86", "amd64" }) for (auto package : std::vector<std::string>{ "installer", "portable" }) release.urls[std::string{"windows_"} + arch + "_" + package] = doc->select_single_node((std::string{"/mkvtoolnix-releases/latest-windows-binary/"} + package + "-url/" + arch).c_str()).node().child_value(); if (debug) { std::stringstream urls; brng::for_each(release.urls, [&](std::pair<std::string, std::string> const &kv) { urls << " " << kv.first << ":" << kv.second; }); mxdebug(boost::format("update check: current %1% latest source %2% latest winpre %3% URLs%4%\n") % release.current_version.to_string() % release.latest_source.to_string() % release.latest_windows_build.to_string() % urls); } return release; }