From 0ad859814bbafa7f4ccf0086f4693648466d8c52 Mon Sep 17 00:00:00 2001 From: Moritz Bunkus Date: Mon, 9 Jan 2012 18:09:19 +0100 Subject: [PATCH] Include information about content encoding algorithms in verbose identification mode --- ChangeLog | 8 ++++++++ src/common/compression.cpp | 13 +++++++++++++ src/common/compression.h | 4 ++++ src/input/r_matroska.cpp | 3 +++ tests/results.txt | 2 +- 5 files changed, 29 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 6945b0ae4..f0e49477a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2012-01-09 Moritz Bunkus + + * mkvmerge: enhancement: Added a field + "content_encoding_algorithms" that contains a comma-separated list + of encoding algorithm IDs used for that track. For example, + "content_encoding_algorithms:3" would indicate that header removal + compression is used. + 2012-01-07 Moritz Bunkus * mkvmerge: enhancement: Added several fields to mkvmerge's diff --git a/src/common/compression.cpp b/src/common/compression.cpp index fb7445b4a..6162e2bf2 100644 --- a/src/common/compression.cpp +++ b/src/common/compression.cpp @@ -13,6 +13,8 @@ #include "common/common_pch.h" +#include + #include #include @@ -23,6 +25,7 @@ #include "common/ebml.h" #include "common/endian.h" #include "common/hacks.h" +#include "common/strings/formatting.h" using namespace libmatroska; @@ -628,3 +631,13 @@ content_decoder_c::reverse(memory_cptr &memory, if (0 != (ce.scope & scope)) ce.compressor->decompress(memory); } + +std::string +content_decoder_c::descriptive_algorithm_list() { + std::string list; + std::vector algorithms; + + boost::for_each(encodings, [&](const kax_content_encoding_t &enc) { algorithms.push_back(to_string(enc.comp_algo)); }); + + return join(",", algorithms); +} diff --git a/src/common/compression.h b/src/common/compression.h index 7ca8dfa4e..bf6addedf 100644 --- a/src/common/compression.h +++ b/src/common/compression.h @@ -232,6 +232,10 @@ public: bool is_ok() { return ok; } + bool has_encodings() { + return !encodings.empty(); + } + std::string descriptive_algorithm_list(); }; #endif // __MTX_COMMON_COMPRESSION_H diff --git a/src/input/r_matroska.cpp b/src/input/r_matroska.cpp index 490f178de..d07a1fe21 100644 --- a/src/input/r_matroska.cpp +++ b/src/input/r_matroska.cpp @@ -2321,6 +2321,9 @@ kax_reader_c::identify() { verbose_info.push_back((boost::format("audio_channels:%1%") % track->a_channels).str()); } + if (track->content_decoder.has_encodings()) + verbose_info.push_back((boost::format("content_encoding_algorithms:%1%") % escape(track->content_decoder.descriptive_algorithm_list())).str()); + std::string info = track->codec_id; if (track->ms_compat) diff --git a/tests/results.txt b/tests/results.txt index 3c1f58724..19b0c1295 100644 --- a/tests/results.txt +++ b/tests/results.txt @@ -63,7 +63,7 @@ T_213mp4_broken_pixel_dimensions:4ab136f8ed75613590de7ded9d4bbb81:passed:2005091 T_214one_frame_avi:8b5003e62e885d084c555f80020f1b30:passed:20051004-192755:0.033334586 T_215X_codec_extradata_avi:3876bc3722144c16d4b1aec484d98c34-3fabc505fdd377c05ce4557b1bc13545:passed:20051004-194707:0.082329916 T_216mp4_editlists:c67d7eda9eda56e99cf4b9a85d2aa0f2:passed:20051118-191453:0.040645125 -T_217file_identification:ef3c502529537c1d3699d0e0487751c3-713a636c5dbc8b6c8da4913f8e74904d-dea3e40864ba359535ddb72fdb23eac3-6dae4d0d5c191dfcc61acdf395611975-a275e9abb3cc154307663d5ca6fce615-3187bcbc4eb44d78f9eab3d4ca6ed787-d7678dc91cba91a946c22e5b96f3b3b6-3f60e3a03129d1e4610ae668459457cc-c170654ad0688c40fc9e2ceeb9ef0b9f-6b44c4e351ac48b7fdb63355c65783eb-d701319c3f77c58adfee92b1186a3993-12aa395d3bc0431c5acb81bc4407b70f-3e7956db47487933b47241fc7bc76359-52dfc8091ce64db9f8ad44aee34748ec-6b7149a5774a37d214b8085c6409aab3-15beba0108723bff77bf8d88876f8f31-72fabb6ff0194c82321db1c317b11c63-96daf75924808e093476fb1a88d1f314-434910cdf5c654f1b864d83f5816905b-3f953cbe9cedd498aff0765315876f86-e592a5d28c92ebb23fe6d7ea901ec0a9-f997737ca7eff867d33ee58af611e741:passed:20051209-180815:0.841701857 +T_217file_identification:ef3c502529537c1d3699d0e0487751c3-713a636c5dbc8b6c8da4913f8e74904d-dea3e40864ba359535ddb72fdb23eac3-d3b28b8809b46d4dc626754e7065b027-a275e9abb3cc154307663d5ca6fce615-3187bcbc4eb44d78f9eab3d4ca6ed787-d7678dc91cba91a946c22e5b96f3b3b6-3f60e3a03129d1e4610ae668459457cc-c170654ad0688c40fc9e2ceeb9ef0b9f-6b44c4e351ac48b7fdb63355c65783eb-d701319c3f77c58adfee92b1186a3993-12aa395d3bc0431c5acb81bc4407b70f-3e7956db47487933b47241fc7bc76359-52dfc8091ce64db9f8ad44aee34748ec-6b7149a5774a37d214b8085c6409aab3-15beba0108723bff77bf8d88876f8f31-72fabb6ff0194c82321db1c317b11c63-96daf75924808e093476fb1a88d1f314-434910cdf5c654f1b864d83f5816905b-3f953cbe9cedd498aff0765315876f86-e592a5d28c92ebb23fe6d7ea901ec0a9-f997737ca7eff867d33ee58af611e741:passed:20051209-180815:0.841701857 T_218theora:59986cbebb1a61762c16ae591ae8c345-88d9297a7f549c68aea49c3b4abf007a:passed:20060428-105054:0.71619861 T_219srt_short_timecodes:1350b59f405cabe1107c752f009f2f2a:passed:20060926-112658:0.213195421 T_220ass_with_comments_at_start:4aad786f675e15a5efd623cb8d822cff:passed:20060926-120101:0.839985533