kax_info_c: output timestamps/durations as formatted ns

This commit is contained in:
Moritz Bunkus 2017-12-31 22:56:50 +01:00
parent 43bdff83df
commit 7e7ea12b23
3 changed files with 40 additions and 53 deletions

View File

@ -93,8 +93,6 @@ unsigned int kax_info_c::ms_bf_format_binary_1 = 0;
unsigned int kax_info_c::ms_bf_format_binary_2 = 0;
unsigned int kax_info_c::ms_bf_block_group_block_summary = 0;
unsigned int kax_info_c::ms_bf_block_group_block_frame = 0;
unsigned int kax_info_c::ms_bf_block_group_reference_1 = 0;
unsigned int kax_info_c::ms_bf_block_group_reference_2 = 0;
unsigned int kax_info_c::ms_bf_block_group_summary_position = 0;
unsigned int kax_info_c::ms_bf_block_group_summary_with_duration = 0;
unsigned int kax_info_c::ms_bf_block_group_summary_no_duration = 0;
@ -182,17 +180,15 @@ kax_info_c::init_common_formats() {
BF_ADD(ms_bf_show_unknown_element, Y("(Unknown element: %1%; ID: 0x%2% size: %3%)"));
BF_ADD(ms_bf_format_binary_1, Y("length %1%, data: %2%"));
BF_ADD(ms_bf_format_binary_2, Y(" (adler: 0x%|1$08x|)"));
BF_ADD(ms_bf_block_group_block_summary, Y("track number %1%, %2% frame(s), timestamp %|3$.3f|s = %4%"));
BF_ADD(ms_bf_block_group_block_summary, Y("track number %1%, %2% frame(s), timestamp %3%"));
BF_ADD(ms_bf_block_group_block_frame, Y("Frame with size %1%%2%%3%"));
BF_ADD(ms_bf_block_group_reference_1, "-%1%.%|2$06d|ms");
BF_ADD(ms_bf_block_group_reference_2, "%1%.%|2$06d|ms");
BF_ADD(ms_bf_block_group_summary_position, Y(", position %1%"));
BF_ADD(ms_bf_block_group_summary_with_duration, Y("%1% frame, track %2%, timestamp %3% (%4%), duration %|5$.3f|, size %6%, adler 0x%|7$08x|%8%%9%\n"));
BF_ADD(ms_bf_block_group_summary_no_duration, Y("%1% frame, track %2%, timestamp %3% (%4%), size %5%, adler 0x%|6$08x|%7%%8%\n"));
BF_ADD(ms_bf_block_group_summary_with_duration, Y("%1% frame, track %2%, timestamp %3%, duration %4%, size %5%, adler 0x%|6$08x|%7%%8%\n"));
BF_ADD(ms_bf_block_group_summary_no_duration, Y("%1% frame, track %2%, timestamp %3%, size %4%, adler 0x%|5$08x|%6%%7%\n"));
BF_ADD(ms_bf_block_group_summary_v2, Y("[%1% frame for track %2%, timestamp %3%]"));
BF_ADD(ms_bf_simple_block_basics, Y("%1%track number %2%, %3% frame(s), timestamp %|4$.3f|s = %5%"));
BF_ADD(ms_bf_simple_block_basics, Y("%1%track number %2%, %3% frame(s), timestamp %4%"));
BF_ADD(ms_bf_simple_block_frame, Y("Frame with size %1%%2%%3%"));
BF_ADD(ms_bf_simple_block_summary, Y("%1% frame, track %2%, timestamp %3% (%4%), size %5%, adler 0x%|6$08x|%7%\n"));
BF_ADD(ms_bf_simple_block_summary, Y("%1% frame, track %2%, timestamp %3%, size %4%, adler 0x%|5$08x|%6%\n"));
BF_ADD(ms_bf_simple_block_summary_v2, Y("[%1% frame for track %2%, timestamp %3%]"));
BF_ADD(ms_bf_at, Y(" at %1%"));
BF_ADD(ms_bf_size, Y(" size %1%"));
@ -508,6 +504,11 @@ kax_info_c::format_signed_integer_as_timestamp(EbmlElement &e) {
return format_timestamp(static_cast<EbmlSInteger &>(e).GetValue());
}
std::string
kax_info_c::format_signed_integer_as_scaled_timestamp(EbmlElement &e) {
return format_timestamp(m_ts_scale * static_cast<EbmlSInteger &>(e).GetValue());
}
#define PRE( Class, Processor) m_custom_element_pre_processors.insert( { Class::ClassInfos.GlobalId.GetValue(), Processor });
#define POST( Class, Processor) m_custom_element_post_processors.insert( { Class::ClassInfos.GlobalId.GetValue(), Processor });
#define FMT( Class, Formatter) m_custom_element_value_formatters.insert({ Class::ClassInfos.GlobalId.GetValue(), Formatter });
@ -619,7 +620,7 @@ kax_info_c::init_custom_element_value_formatters_and_processors() {
POST(KaxVideoPixelCropRight, [this](EbmlElement &e) { m_summary.push_back((boost::format(Y("pixel crop right: %1%")) % static_cast<KaxVideoPixelCropRight &>(e).GetValue()).str()); });
POST(KaxVideoPixelCropBottom, [this](EbmlElement &e) { m_summary.push_back((boost::format(Y("pixel crop bottom: %1%")) % static_cast<KaxVideoPixelCropBottom &>(e).GetValue()).str()); });
POST(KaxTrackLanguage, [this](EbmlElement &e) { m_summary.push_back((boost::format(Y("language: %1%")) % static_cast<KaxTrackLanguage &>(e).GetValue()).str()); });
POST(KaxBlockDuration, [this](EbmlElement &e) { m_block_duration = static_cast<double>(static_cast<KaxBlockDuration &>(e).GetValue()) * m_ts_scale / 1000000.0; });
POST(KaxBlockDuration, [this](EbmlElement &e) { m_block_duration = static_cast<double>(static_cast<KaxBlockDuration &>(e).GetValue()) * m_ts_scale; });
POST(KaxReferenceBlock, [this](EbmlElement &) { ++m_num_references; });
POSTM(KaxSimpleBlock, post_simple_block);
@ -671,13 +672,11 @@ kax_info_c::init_custom_element_value_formatters_and_processors() {
FMTM(KaxSimpleBlock, format_simple_block);
FMTM(KaxBlock, format_block);
FMTM(KaxBlockDuration, format_unsigned_integer_as_scaled_timestamp);
FMTM(KaxReferenceBlock, format_signed_integer_as_scaled_timestamp);
FMT(KaxDuration, [this](EbmlElement &e) { return format_timestamp(static_cast<int64_t>(static_cast<EbmlFloat &>(e).GetValue() * m_ts_scale)); });
// More complex formatters:
FMT(KaxDuration, [this](EbmlElement &e) -> std::string {
auto duration = static_cast<KaxDuration &>(e).GetValue();
return (boost::format("%|1$.3f|s (%2%)") % (duration * m_ts_scale / 1000000000.0) % format_timestamp(duration * m_ts_scale, 3)).str();
});
FMT(KaxSeekID, [](EbmlElement &e) -> std::string {
auto &seek_id = static_cast<KaxSeekID &>(e);
EbmlId id(seek_id.GetBuffer(), seek_id.GetSize());
@ -805,7 +804,7 @@ kax_info_c::init_custom_element_value_formatters_and_processors() {
FMT(KaxContentSigHashAlgo, [](EbmlElement &e) -> std::string {
auto s_halgo = static_cast<KaxContentSigHashAlgo &>(e).GetValue();
return (boost::format(Y("Signature hash algorithm: %1% (%2%)"))
return (boost::format("%1% (%2%)")
% s_halgo
% ( 0 == s_halgo ? Y("no signature hash algorithm")
: 1 == s_halgo ? Y("SHA1-160")
@ -824,21 +823,14 @@ kax_info_c::init_custom_element_value_formatters_and_processors() {
});
FMT(KaxCodecPrivate, [this](EbmlElement &e) -> std::string {
return (boost::format(Y("size %1%")) % e.GetSize()).str() + m_track->fourcc;
return (ms_common_formats[ms_bf_element_size] % e.GetSize()).str() + m_track->fourcc;
});
FMT(KaxTrackDefaultDuration, [this](EbmlElement &) -> std::string {
return (boost::format(Y("%|1$.3f|ms (%|2$.3f| frames/fields per second for a video track)"))
% (static_cast<double>(m_track->default_duration) / 1000000.0)
return (boost::format(Y("%1% (%|2$.3f| frames/fields per second for a video track)"))
% format_timestamp(m_track->default_duration)
% (1000000000.0 / static_cast<double>(m_track->default_duration))).str();
});
FMT(KaxReferenceBlock, [this](EbmlElement &e) -> std::string {
auto reference = static_cast<int64_t>(static_cast<KaxReferenceBlock &>(e).GetValue() * m_ts_scale);
return 0 >= reference ? (ms_common_formats[ms_bf_block_group_reference_1] % (std::abs(reference) / 1000000) % (std::abs(reference) % 1000000)).str()
: 0 < reference ? (ms_common_formats[ms_bf_block_group_reference_2] % ( reference / 1000000) % ( reference % 1000000)).str()
: std::string{};
});
}
#undef FMT
@ -856,7 +848,7 @@ kax_info_c::pre_block(EbmlElement &e) {
m_lf_timestamp = block.GlobalTimecode();
m_lf_tnum = block.TrackNum();
m_block_duration = -1.0;
m_block_duration = boost::none;
return true;
}
@ -868,8 +860,7 @@ kax_info_c::format_block(EbmlElement &e) {
return (ms_common_formats[ms_bf_block_group_block_summary]
% block.TrackNum()
% block.NumberFrames()
% (static_cast<double>(m_lf_timestamp) / 1000000000.0)
% format_timestamp(m_lf_timestamp, 3)).str();
% format_timestamp(m_lf_timestamp)).str();
}
void
@ -922,13 +913,12 @@ kax_info_c::post_block_group(EbmlElement &e) {
frame_pos += m_frame_sizes[fidx];
}
if (m_block_duration != -1.0)
if (m_block_duration)
m_out->write((ms_common_formats[ms_bf_block_group_summary_with_duration]
% (m_num_references >= 2 ? 'B' : m_num_references == 1 ? 'P' : 'I')
% m_lf_tnum
% std::llround(m_lf_timestamp / 1000000.0)
% format_timestamp(m_lf_timestamp, 3)
% m_block_duration
% format_timestamp(m_lf_timestamp)
% format_timestamp(*m_block_duration)
% m_frame_sizes[fidx]
% m_frame_adlers[fidx]
% m_frame_hexdumps[fidx]
@ -937,8 +927,7 @@ kax_info_c::post_block_group(EbmlElement &e) {
m_out->write((ms_common_formats[ms_bf_block_group_summary_no_duration]
% (m_num_references >= 2 ? 'B' : m_num_references == 1 ? 'P' : 'I')
% m_lf_tnum
% std::llround(m_lf_timestamp / 1000000.0)
% format_timestamp(m_lf_timestamp, 3)
% format_timestamp(m_lf_timestamp)
% m_frame_sizes[fidx]
% m_frame_adlers[fidx]
% m_frame_hexdumps[fidx]
@ -950,7 +939,7 @@ kax_info_c::post_block_group(EbmlElement &e) {
ms_common_formats[ms_bf_block_group_summary_v2]
% (m_num_references >= 2 ? 'B' : m_num_references == 1 ? 'P' : 'I')
% m_lf_tnum
% std::llround(m_lf_timestamp / 1000000.0));
% format_timestamp(m_lf_timestamp));
auto &tinfo = m_track_info[m_lf_tnum];
@ -964,10 +953,10 @@ kax_info_c::post_block_group(EbmlElement &e) {
tinfo.m_max_timestamp = m_lf_timestamp;
if (-1 == m_block_duration)
if (!m_block_duration)
tinfo.m_add_duration_for_n_packets = m_frame_sizes.size();
else {
*tinfo.m_max_timestamp += m_block_duration * 1000000.0;
*tinfo.m_max_timestamp += *m_block_duration;
tinfo.m_add_duration_for_n_packets = 0;
}
}
@ -998,8 +987,7 @@ kax_info_c::format_simple_block(EbmlElement &e) {
% info
% block.TrackNum()
% block.NumberFrames()
% (timestamp_ns / 1000000000.0)
% format_timestamp(timestamp_ns, 3)).str();
% format_timestamp(timestamp_ns)).str();
}
void
@ -1007,7 +995,6 @@ kax_info_c::post_simple_block(EbmlElement &e) {
auto &block = static_cast<KaxSimpleBlock &>(e);
auto &tinfo = m_track_info[block.TrackNum()];
auto timestamp_ns = mtx::math::to_signed(block.GlobalTimecode());
auto timestamp_ms = std::llround(static_cast<double>(timestamp_ns) / 1000000.0);
int num_frames = block.NumberFrames();
int64_t frame_pos = block.GetElementPosition() + block.ElementSize();
@ -1042,8 +1029,7 @@ kax_info_c::post_simple_block(EbmlElement &e) {
m_out->write((ms_common_formats[ms_bf_simple_block_summary]
% (block.IsKeyframe() ? 'I' : block.IsDiscardable() ? 'B' : 'P')
% block.TrackNum()
% timestamp_ms
% format_timestamp(timestamp_ns, 3)
% format_timestamp(timestamp_ns)
% m_frame_sizes[idx]
% m_frame_adlers[idx]
% position).str());
@ -1054,7 +1040,7 @@ kax_info_c::post_simple_block(EbmlElement &e) {
ms_common_formats[ms_bf_simple_block_summary_v2]
% (block.IsKeyframe() ? 'I' : block.IsDiscardable() ? 'B' : 'P')
% block.TrackNum()
% timestamp_ms);
% timestamp_ns);
tinfo.m_blocks += block.NumberFrames();
tinfo.m_blocks_by_ref_num[block.IsKeyframe() ? 0 : block.IsDiscardable() ? 2 : 1] += block.NumberFrames();

View File

@ -59,7 +59,7 @@ protected:
protected:
static std::vector<boost::format> ms_common_formats;
static unsigned int ms_bf_show_unknown_element, ms_bf_format_binary_1, ms_bf_format_binary_2, ms_bf_block_group_block_summary, ms_bf_block_group_block_frame, ms_bf_block_group_reference_1, ms_bf_block_group_reference_2,
static unsigned int ms_bf_show_unknown_element, ms_bf_format_binary_1, ms_bf_format_binary_2, ms_bf_block_group_block_summary, ms_bf_block_group_block_frame,
ms_bf_block_group_summary_position, ms_bf_block_group_summary_with_duration, ms_bf_block_group_summary_no_duration, ms_bf_block_group_summary_v2, ms_bf_simple_block_basics, ms_bf_simple_block_frame,
ms_bf_simple_block_summary, ms_bf_simple_block_summary_v2, ms_bf_at, ms_bf_size, ms_bf_at_hex, ms_bf_block_group_block_adler, ms_bf_simple_block_adler, ms_bf_simple_block_position, ms_bf_crc32_value, ms_bf_element_size;
@ -80,7 +80,7 @@ protected:
std::vector<uint32_t> m_frame_adlers;
std::vector<std::string> m_frame_hexdumps;
int64_t m_num_references{}, m_lf_timestamp{}, m_lf_tnum{};
double m_block_duration{};
boost::optional<int64_t> m_block_duration;
bool m_use_gui{}, m_calc_checksums{}, m_show_summary{}, m_show_hexdump{}, m_show_size{}, m_show_track_info{}, m_hex_positions{};
int m_hexdump_max_size{}, m_verbose{};
@ -126,6 +126,7 @@ public:
std::string format_unsigned_integer_as_timestamp(EbmlElement &e);
std::string format_unsigned_integer_as_scaled_timestamp(EbmlElement &e);
std::string format_signed_integer_as_timestamp(EbmlElement &e);
std::string format_signed_integer_as_scaled_timestamp(EbmlElement &e);
std::string format_block(EbmlElement &e);
std::string format_simple_block(EbmlElement &e);

View File

@ -110,7 +110,7 @@ T_261line_endings_in_text_files:849271156b2f7aa8c46ac38a43495138-849271156b2f7aa
T_262level1_with_size_0:f6e6e8837f59d4f3dd0e546eb67cba59:passed:20100407-131350:0.043549684
T_263ass_missing_text_in_format:2640dcc0b1ae1e80baf05e17abfab5ca-273e8eb33584686874e52a94a0304cf7:passed:20100411-181436:0.133828607
T_264avc_es_from_lavf_with_native_codecid:3a7f8b0c3bd0dedf8501db86ac9496fd:passed:20100427-123025:0.163914551
T_265mkvinfo_clusters_with_unknown_size:6b0a9063ef569425b7536ef6f2b91660:passed:20100522-213708:0.127393107
T_265mkvinfo_clusters_with_unknown_size:864a5c81d78882b240d50b860314f0c1:passed:20100522-213708:0.127393107
T_266mkvmerge_clusters_with_unknown_size:16c8843afe2d1d75172118fe618e4728:passed:20100523-154308:0.04514363
T_267mkvextract_clusters_with_unknown_size:b994ef83db70b5193696121cf1399adf:passed:20100523-154920:0.056976575
T_268X_vp8:c53158209dbc17baa518129377d74edd:passed:20100527-140446:0.041033789
@ -176,7 +176,7 @@ T_327vp8_frame_type:67f09745027c31fbbd7838df6c94163b:passed:20111207-233304:0.08
T_328dts_detected_as_ac3:4347fcb56eb22be08b08b5a25974f511:passed:20111229-192324:0.090561076
T_329X_timecodes_v2:51d1e61178c7fa2b654d1be71576113c-473bb854441388700e42ee8b4d21c61c-f531fa64a457eb3204e8f09235b039ed-646b73b730d4bd09d13a56bc861ee659-409743510ede469f8d2bf1a098ff36f8-473bb854441388700e42ee8b4d21c61c-4473fffbc0dec00c3955f861a6880b22-3b3c2e7c2470ca550acb1e913311daef-a80f23069cd692e2e8700a6729d6d290-c04e13b7e74a8d6ee694ea2cfba79009:passed:20120105-202451:1.08041896
T_330dts_detection:dd6c70a09fb62a0a7a5f3271a2d71b12:passed:20120107-210130:1.935366715
T_331read_buffer_underflow:300d676c78644310847c07a31bca384e:passed:20120125-232902:0.322029153
T_331read_buffer_underflow:d6cf667deec3ba08b0a79d98c1e369df:passed:20120125-232902:0.322029153
T_332eac3_misdetected_as_avc:b2c9f1f1d4c7a4e08dd052b0f7c68dba:passed:20120131-145550:0.208997135
T_333wavpack_with_correction:14daaaf34210bdf3655c418164cf1afb-e33897409384ca5fd8ed5e497f8c3883+37f802510b43b2ab4bd7d8356a7ac606-ok:passed:20120131-164845:0.221105789
T_334mp4_audio_encoder_delay:e64d19eaeb4437a3453b5a6f4cb50322:passed:20120206-100443:0.085778798
@ -291,13 +291,13 @@ T_442ui_locale_ca_ES:b8b1ebb4a729cd34bac943b4a7eec4d5-efc218c7d73104f27e852a4d6b
T_443hevc_keep_user_data:12ba5291fea7247f64acbf02fa357385:passed:20141105-202533:1.308417598
T_444pcm_statistics_from_packaged_sources:7fbfcd5dae796951c461de5aec60e3a9-7fbfcd5dae796951c461de5aec60e3a9-ffdebcc03419e30af6426dcb9310282b-833f726aa92853b669032182bc3fe56f-+++:passed:20141205-220805:0.604375231
T_445teletext_subs_missing_second_line:2905a956d904d14fc4abd387237c1ca7:passed:20141210-224823:5.420908642
T_446mkvinfo_output:971eada3a36b4360bdad8a5ea7c69b95-a4b49ffe0dd3ca5791213cc1e9c4339e-0d81582748f17ea4b9ad519f8a378f6e-9a2153cce8a21ce8d622288d6f749860-290d60bee99f7e026739240d190702b6-27d32b0075b8a3cdf85656a13ffe3679-a0b64654592143f561d64cd73c80088a-5f4502fe1bb2e28fabff49199e4e858b-8d510cc4e11696a7212a7fdc2e881277-d149c92ff330acda86603efd96643ed6-c6f4f64af265b93f8040e1eb71e9738d-7d956c3e3ab39ef24f60afb3f83b5429-fa6292eda70224403f52dd30421ace66-ee9729758386d0c30fcc62e53955bc8d-3ac30e2bb2e385cd8336334d763e96d4-baa6bee1355f80fabd2ccb13bf5172a6-60c8cf38c61775bc97675ae3e98a33fb-3d108ef48b15ed6eadffd7d1c4e425e2-348c10dce8a34da6fa92bc2780922b19-cac0e5957dd779b7c4648b328c1d2de6-f13e1405fe773f9a0eaffdb105b4453f-7d987f120302740a498a0208274c1940-f3c6f16e9ca4efa7c02a3dcdc8b1de21-b87655a7fb8b260b7e0b0ec2230d2081:passed:20141216-165433:1.564089101
T_447mkvinfo_rounded_timecodes:ac529df3e4a1b52e47a80444d00471da-ebf8dbee37c031a18e031bd79013a764-449245d7458cc8f085eb72aae71e0f80:passed:20141216-172642:1.712081143
T_446mkvinfo_output:679910ac4cacbf61267623715e376662-e6ab3475101843d9e1ccd540de64cc61-5ccf8d3b47979bfa5cdb3830569813fa-602b7a1dd9a3ee6fef3b15cd7033ac10-592afe5c007531caa842afe1b981d7fa-935704bcf3fe3716d01ec57bd9a294f2-f173b2de31671ec8ff186477ba825ecc-434e3c8801f16aa583d7e069ad8c5f19-7da967266addf514d98c75bff12bbffe-155ca5aa07d33b20abc94294bcd1adda-65e054efd9aa22609e64bd7439bf8b95-5f819634820ab513c690f54e5ca49dfa-2b06fb46390f755c3003393df314317e-727ef871feec1654010bb026a360e73e-fa310f4893321e5de7e07810e929e6d3-4e20175eb71d1cba1b038add1ffc9ea2-579ba3dc315fb8b67bd69c5260aa3583-c139af96e553b570b79eb6cc514f392f-77cb97bf13ec07227c36f400c3629bd4-5c63548bdbf21725bf6372e77f0fad13-d39b820a409c8d2270f7cf4f8af1f45e-f8dec143a888b472d7a23dfea61f5d1c-5c83039a10f10571e78ba059fcdfa04f-470c4c0f93a5e92408e490d2a941c61f:passed:20141216-165433:1.564089101
T_447mkvinfo_rounded_timecodes:ac529df3e4a1b52e47a80444d00471da-90c50241a6ae5f1a9501b0a2f547893b-6135e4f80135868978559bf679caf950:passed:20141216-172642:1.712081143
T_448mpeg_ts_with_hevc:9de20597912046a874fea3baff0b98d2:passed:20141216-181650:1.133097273
T_449segfaults_assertions:error-error-ok-e5484c528a96c5f3fd678ea6bd99a8f2-97291ab0ad9168ef33cd90aa6c4fd918-dea21321ee05fbd8896f38c2db4befef-error-error-ok-efb4e996cf72156f6dd9378394d758d3-2e7700ee082c34a5a0301b2207ed9a0f-e5484c528a96c5f3fd678ea6bd99a8f2-e5484c528a96c5f3fd678ea6bd99a8f2-e89ec43ba0e50e05116fc35b7d850b06-f6498791fdf982a10d40b4e0149ddd3e-e89ec43ba0e50e05116fc35b7d850b06:passed:20141219-195127:0.830949441
T_449segfaults_assertions:error-error-ok-e5484c528a96c5f3fd678ea6bd99a8f2-b526471aa15744d03fe9665a196fa25e-bde7dcf99103daa65b439850e473c2b2-error-error-ok-efb4e996cf72156f6dd9378394d758d3-2e7700ee082c34a5a0301b2207ed9a0f-e5484c528a96c5f3fd678ea6bd99a8f2-e5484c528a96c5f3fd678ea6bd99a8f2-1f8853bf46b9114b1270cef0816e2e8c-fe4582879f536528ca7df446d8dbf16b-1f8853bf46b9114b1270cef0816e2e8c:passed:20141219-195127:0.830949441
T_450aac_loas_latm_in_mpeg_ts:1451cec5b51034d78e81bfa561205f63:passed:20141229-210738:0.515183095
T_451aac_loas_latm_raw:5a2db12f6eea0bcd37a5d524d8c4c91c:passed:20141230-155351:0.589778873
T_452mkvinfo_track_statistics_frame_order:1b1b5d14958f2b869572842ff8efd39b-70839a7ba34350108a1c8fe830a165eb:passed:20141230-182428:1.579605124
T_452mkvinfo_track_statistics_frame_order:1b1b5d14958f2b869572842ff8efd39b-290e77662b1dc198005d551c3c8c3eb7:passed:20141230-182428:1.579605124
T_453mp4_with_hevc:1249facae773a277010f907a94282eb4:passed:20141231-125834:0.046223562
T_454mp4_dash:83d89ede8a370f640b832e39f3152ef8-054255e9f3ca05a108719d501defd173:passed:20141231-214733:0.429881173
T_455he_aacv2_ps:2fbfac35fa7785f8e500f1708da4ec4f:passed:20150101-152553:0.075964546
@ -350,7 +350,7 @@ T_501mpeg_ts_pat_and_pmt_crc_errors:1a042dec9ef1546a365b0a20cf41fc54:passed:2015
T_502ui_locale_sr_RS:650e05c9c091234882980f4c1da05dc4-25fa402006e7971d8e5a2b1139a4c4d8:failed:20150829-213708:0.062939538
T_503pcm_in_mkv_varying_samples_per_packet:091442963a5879e8e1d8fca62458a06a:passed:20151004-215848:0.430291421
T_504dts_96_24_identification:714be08304c623a79718bd4b32e5dc60-5ff730d8c7bf5f6497773257065ae316-af15fa6318a9384ccfee94e1351ef81b:passed:20151006-223804:2.278995107
T_505cisco_talos_can_0036:3da3d88523c55f6ef389d2275d9a1f74-dc81bc3628aad4db426dcd1c8c94101d:passed:20151020-161153:0.071686357
T_505cisco_talos_can_0036:3da3d88523c55f6ef389d2275d9a1f74-9e16370b5219b10d36653bf6ba9da889:passed:20151020-161153:0.071686357
T_506cisco_talos_can_0037:54399680b58f12b413f0f6bad1fe19f0-cb44407e3d07c58d8bb2ff4529db80d6-78582dc40dadcab1b74f309f8afc0fc8-5fdbf203870a3a0d10f606ced148937d-68a1629a3e422cf9c912d7ad36b596bf-49c908b1ce81040889192314e1b64692-7efe15e3a1e5d67f5a58e0aa3430da21-9c54bf25d2c55485bb0387ccd518cdd8:passed:20151020-161234:0.319298931
T_507rerender_track_headers:d08bce971fd84d78fe3ee6865f682fc1-008168c17d73c02eab05d1c2e2213197:passed:20151022-104930:2.573204876
T_508splitting_by_parts_with_segment_linking:existence0-true-true-true-existence1-true-true-true-existence2-true-true-true-equality_previous-true-true-equality_next-true-true:passed:20151103-204257:0.111807853