From 0bf1e141009c8924dd5e08c763545e8747b0b07b Mon Sep 17 00:00:00 2001 From: Moritz Bunkus Date: Thu, 22 Jun 2017 20:04:40 +0200 Subject: [PATCH] identification: output stream_id & sub_stream_id as integers; drop ts_pid --- NEWS.md | 6 + ...merge-identification-output-schema-v8.json | 440 ++++++++++++++++++ src/common/id_info.h | 1 - src/input/r_mpeg_ps.cpp | 4 +- src/input/r_mpeg_ts.cpp | 6 +- src/merge/id_result.h | 2 +- tests/results.txt | 24 +- tests/test.d/simple_test.rb | 3 +- 8 files changed, 466 insertions(+), 20 deletions(-) create mode 100644 doc/json-schema/mkvmerge-identification-output-schema-v8.json diff --git a/NEWS.md b/NEWS.md index 282e21930..c666ac837 100644 --- a/NEWS.md +++ b/NEWS.md @@ -33,6 +33,12 @@ invalid codec ID (e.g. `V_MPEG7`) in certain cases. Fixes #1995. * mkvmerge: MPEG PS reader: made the file type detection less strict so that garbage at the start of the file doesn't prevent detection. Fixes #2008. +* mkvmerge: JSON identification: the `stream_id` and `sub_stream_id` track + properties were output as hexadecimal strings instead of unsigned + integers. As the `ts_pid` track property was only used for MPEG transport + streams, its value is now output as `stream_id` instead, and the `ts_pid` + property has been removed. The JSON schema version has been bumped to 8 due + to this change. # Version 12.0.0 "Trust / Lust" 2017-05-20 diff --git a/doc/json-schema/mkvmerge-identification-output-schema-v8.json b/doc/json-schema/mkvmerge-identification-output-schema-v8.json new file mode 100644 index 000000000..4436ac923 --- /dev/null +++ b/doc/json-schema/mkvmerge-identification-output-schema-v8.json @@ -0,0 +1,440 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "https://mkvtoolnix.download/doc/mkvmerge-identification-output-schema-v8.json", + "title": "mkvmerge identification output", + "description": "The JSON output produced by mkvmerge's file identification mode", + "additionalProperties": false, + "type": "object", + "properties": { + "attachments": { + "description": "an array describing the attachments found if any", + "type": "array", + "items": { + "additionalProperties": false, + "type": "object", + "properties": { + "content_type": { + "type": "string", + "minLength": 1 + }, + "description": { + "type": "string" + }, + "file_name": { + "type": "string" + }, + "id": { + "type": "integer", + "minimum": 0 + }, + "size": { + "type": "integer", + "minimum": 0 + }, + "properties": { + "additionalProperties": false, + "type": "object", + "properties": { + "uid": { + "type": "integer", + "minimum": 0 + } + }, + "additionalProperties": false + }, + "type": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "file_name", + "id", + "properties", + "size" + ] + } + }, + "chapters": { + "type": "array", + "items": { + "additionalProperties": false, + "type": "object", + "properties": { + "num_entries": { + "type": "integer" + } + }, + "additionalProperties": false, + "required": [ + "num_entries" + ] + } + }, + "container": { + "additionalProperties": false, + "description": "information about the identified container", + "type": "object", + "properties": { + "properties": { + "additionalProperties": false, + "description": "additional properties for the container varying by container format", + "type": "object", + "properties": { + "container_type": { + "description": "A unique number identifying the container type that's supposed to stay constant over all future releases of MKVToolNix", + "type": "integer", + "minLength": 1 + }, + "date_local": { + "description": "The muxing date in ISO 8601 format (in local time zone)", + "type": "string", + "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}([+-][0-9]{2}:[0-9]{2}|Z)$" + }, + "date_utc": { + "description": "The muxing date in ISO 8601 format (in UTC)", + "type": "string", + "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}([+-][0-9]{2}:[0-9]{2}|Z)$" + }, + "duration": { + "description": "The file's/segment's duration in nanoseconds", + "type": "integer", + "minimum": 0 + }, + "is_providing_timecodes": { + "description": "States whether or not the container has timestamps for the packets (e.g. Matroska, MP4) or not (e.g. SRT, MP3)", + "type": "boolean" + }, + "muxing_application": { + "description": "A Unicode string containing the name and possibly version of the low-level library or application that created the file", + "type": "string" + }, + "next_segment_uid": { + "description": "A hexadecimal string of the next segment's UID (only for Matroska files)", + "type": "string", + "minLength": 32, + "maxLength": 32 + }, + "other_file": { + "description": "An array of names of additional files processed as well", + "type": "array", + "items": { + "type": "string" + } + }, + "playlist": { + "description": "States whether or not the identified file is a playlist (e.g. MPLS) referring to several other files", + "type": "boolean" + }, + "playlist_chapters": { + "description": "The number of chapters in a playlist if it is a one", + "type": "integer", + "minimum": 0 + }, + "playlist_duration": { + "description": "The total duration in nanoseconds of all files referenced by the playlist if it is a one", + "type": "integer", + "minimum": 0 + }, + "playlist_file": { + "description": "An array of file names the playlist contains", + "type": "array", + "items": { + "type": "string" + } + }, + "playlist_size": { + "description": "The total size in bytes of all files referenced by the playlist if it is a one", + "type": "integer", + "minimum": 0 + }, + "previous_segment_uid": { + "description": "A hexadecimal string of the previous segment's UID (only for Matroska files)", + "type": "string", + "minLength": 32, + "maxLength": 32 + }, + "programs": { + "description": "A container describing multiple programs multiplexed into the source file, e.g. multiple programs in one DVB transport stream", + "type": "array", + "items": { + "additionalProperties": false, + "description": "Properties describing a single program", + "type": "object", + "properties": { + "program_number": { + "description": "A unique number identifying a set of tracks that belong together; used e.g. in DVB for multiplexing multiple stations within a single transport stream", + "type": "integer", + "minimum": 0 + }, + "service_name": { + "description": "The name of a service provided by this program, e.g. a TV channel name such as 'arte HD'", + "type": "string" + }, + "service_provider": { + "description": "The name of the provider of the service provided by this program, e.g. a TV station name such as 'ARD'", + "type": "string" + } + } + } + }, + "segment_uid": { + "description": "A hexadecimal string of the segment's UID (only for Matroska files)", + "type": "string", + "minLength": 32, + "maxLength": 32 + }, + "title": { + "type": "string" + }, + "writing_application": { + "description": "A Unicode string containing the name and possibly version of the high-level application that created the file", + "type": "string" + } + }, + "additionalProperties": false + }, + "recognized": { + "description": "States whether or not mkvmerge knows about the format", + "type": "boolean" + }, + "supported": { + "description": "States whether or not mkvmerge can read the format", + "type": "boolean" + }, + "type": { + "description": "A human-readable description/name for the container format", + "type": "string", + "minLength": 1 + } + }, + "additionalProperties": false, + "required": [ + "recognized", + "supported" + ] + }, + "errors": { + "type": "array", + "items": { + "type": "string" + } + }, + "file_name": { + "description": "the identified file's name", + "type": "string", + "minLength": 1 + }, + "global_tags": { + "type": "array", + "items": { + "additionalProperties": false, + "type": "object", + "properties": { + "num_entries": { + "type": "integer" + } + }, + "additionalProperties": false, + "required": [ + "num_entries" + ] + } + }, + "identification_format_version": { + "description": "The output format's version", + "type": "integer", + "minimum": 8, + "maximum": 8 + }, + "track_tags": { + "type": "array", + "items": { + "additionalProperties": false, + "type": "object", + "properties": { + "num_entries": { + "type": "integer" + }, + "track_id": { + "type": "integer" + } + }, + "additionalProperties": false, + "required": [ + "num_entries", + "track_id" + ] + } + }, + "tracks": { + "type": "array", + "items": { + "additionalProperties": false, + "type": "object", + "properties": { + "codec": { + "type": "string", + "minLength": 1 + }, + "id": { + "type": "integer", + "minLength": 0 + }, + "type": { + "type": "string" + }, + "properties": { + "additionalProperties": false, + "type": "object", + "properties": { + "aac_is_sbr": { + "type": "string", + "enum": [ + "true", + "false", + "unknown" + ] + }, + "audio_bits_per_sample": { + "type": "integer", + "minimum": 0 + }, + "audio_channels": { + "type": "integer", + "minimum": 0 + }, + "audio_sampling_frequency": { + "type": "integer", + "minimum": 0 + }, + "codec_delay": { + "type": "integer" + }, + "codec_id": { + "type": "string" + }, + "codec_private_data": { + "type": "string" + }, + "codec_private_length": { + "type": "integer", + "minimum": 0 + }, + "content_encoding_algorithms": { + "type": "string", + "minLength": 1 + }, + "default_duration": { + "type": "integer", + "minimum": 0 + }, + "default_track": { + "type": "boolean" + }, + "display_dimensions": { + "type": "string", + "pattern": "^[0-9]+x[0-9]+$" + }, + "enabled_track": { + "type": "boolean" + }, + "forced_track": { + "type": "boolean" + }, + "language": { + "type": "string" + }, + "minimum_timestamp": { + "description": "The minimum timestamp in nanoseconds of all the frames of this track found within the first couple of seconds of the file", + "type": "integer", + "minimum": 0 + }, + "multiplexed_tracks": { + "description": "An array of track IDs indicating which tracks were originally multiplexed within the same track in the source file", + "type": "array", + "items": { + "type": "integer", + "minimum": 0 + } + }, + "number": { + "type": "integer", + "minimum": 0 + }, + "packetizer": { + "type": "string", + "minLength": 1 + }, + "pixel_dimensions": { + "type": "string", + "pattern": "^[0-9]+x[0-9]+$" + }, + "program_number": { + "description": "A unique number identifying a set of tracks that belong together; used e.g. in DVB for multiplexing multiple stations within a single transport stream", + "type": "integer", + "minimum": 0 + }, + "stereo_mode": { + "type": "integer", + "minimum": 0 + }, + "stream_id": { + "description": "A format-specific ID identifying a track, possibly in combination with a 'sub_stream_id' (e.g. the program ID in an MPEG transport stream)", + "type": "integer", + "minimum": 0 + }, + "sub_stream_id": { + "description": "A format-specific ID identifying a track together with a 'stream_id'", + "type": "integer", + "minimum": 0 + }, + "tag_artist": { + "type": "string" + }, + "tag_bitsps": { + "type": "string" + }, + "tag_bps": { + "type": "string" + }, + "tag_fps": { + "type": "string" + }, + "tag_title": { + "type": "string" + }, + "teletext_page": { + "type": "integer", + "minimum": 0 + }, + "text_subtitles": { + "type": "boolean" + }, + "track_name": { + "type": "string" + }, + "uid": { + "type": "integer", + "minimum": 0 + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false, + "required": [ + "codec", + "id", + "type" + ] + } + }, + "warnings": { + "type": "array", + "items": { + "type": "string" + } + } + } +} diff --git a/src/common/id_info.h b/src/common/id_info.h index 462652898..15357806b 100644 --- a/src/common/id_info.h +++ b/src/common/id_info.h @@ -69,7 +69,6 @@ char const * const teletext_page = "teletext_page"; char const * const text_subtitles = "text_subtitles"; // track boolean char const * const title = "title"; // container unicoode-string char const * const track_name = "track_name"; // track unicoode-string -char const * const ts_pid = "ts_pid"; // track unsigned-integer char const * const uid = "uid"; // track attachments unsigned-integer char const * const writing_application = "writing_application"; // container unicode-string diff --git a/src/input/r_mpeg_ps.cpp b/src/input/r_mpeg_ps.cpp index 5f2ced0b4..ab2c8e25a 100644 --- a/src/input/r_mpeg_ps.cpp +++ b/src/input/r_mpeg_ps.cpp @@ -1411,8 +1411,8 @@ mpeg_ps_reader_c::identify() { info.add(mtx::id::packetizer, mtx::id::mpeg4_p10_es_video); info.set(mtx::id::number, (static_cast(track->id.sub_id) << 32) | static_cast(track->id.id)); - info.add(mtx::id::stream_id, boost::format("%|1$02x|") % track->id.id); - info.add(mtx::id::sub_stream_id, boost::format("%|1$02x|") % track->id.sub_id); + info.add(mtx::id::stream_id, track->id.id); + info.add(mtx::id::sub_stream_id, track->id.sub_id); if ((0 != track->v_dwidth) && (0 != track->v_dheight)) info.add(mtx::id::display_dimensions, boost::format("%1%x%2%") % track->v_dwidth % track->v_dheight); diff --git a/src/input/r_mpeg_ts.cpp b/src/input/r_mpeg_ts.cpp index 02ac42a9e..9046a994a 100644 --- a/src/input/r_mpeg_ts.cpp +++ b/src/input/r_mpeg_ts.cpp @@ -1338,9 +1338,9 @@ reader_c::identify() { for (auto const &track : m_tracks) { info = mtx::id::info_c{}; - info.add(mtx::id::language, track->language); - info.set(mtx::id::ts_pid, track->pid); - info.set(mtx::id::number, track->pid); + info.add(mtx::id::language, track->language); + info.set(mtx::id::stream_id, track->pid); + info.set(mtx::id::number, track->pid); if (track->program_number) info.set(mtx::id::program_number, track->program_number.get()); diff --git a/src/merge/id_result.h b/src/merge/id_result.h index aa99980d0..56868880e 100644 --- a/src/merge/id_result.h +++ b/src/merge/id_result.h @@ -27,7 +27,7 @@ #define ID_RESULT_TAGS "tags" #define ID_RESULT_GLOBAL_TAGS_ID -1 -#define ID_JSON_FORMAT_VERSION 7 +#define ID_JSON_FORMAT_VERSION 8 struct id_result_t { int64_t id; diff --git a/tests/results.txt b/tests/results.txt index 79aa3a6e3..2f32587a1 100644 --- a/tests/results.txt +++ b/tests/results.txt @@ -206,7 +206,7 @@ T_357segment_info:c734542adcdeca270db3b6e41fd85ffc-61d4730547bcd79e9a692caa4c214 T_358usf:13cc323a8e690b4e1c236010938e1ee3:passed:20120329-142144:0.051754089 T_359split_parts:be3881a6d90a7d2011c1e74f4ad31664+409aad9a66b8bc221692983eafa21d2f+ok-c62446819af26a351963b51fb7b1d0f6+ok-fd0291d21750277fd9627779207b0292+ok-497448adf872f4050f5e34d9aacf5fa0+4f25451d573042cfdff4809a28638e93+782db07154db9054ff9f0ef3bf1235c6+f129ab41e298b6358fc0197c92c3da5f+ea7605c6da77b5181202d0806191d635+4e8b657d7e371b84a7d89232e5c9fb3f+d8a3056038a13acc3caa11fa8581d085+ok-585946cee0f3e37ab27d7fb09d894081+ok-bbb672ffe01a2f1028aae61551429d8d+ok:passed:20120331-133448:2.321768368 T_360X_chapters_hex_format:87a60c81c05fb0a153a2e041485ae2cb-3853793b0d88fc10efadb146ca948833:passed:20120404-152038:0.047282116 -T_361file_concatenation:VTS_01_2.VOB+VTS_01_3.VOB-5150304df7cc54a8a7ce123fb2139915-5150304df7cc54a8a7ce123fb2139915-18d827a751d6a222faa88f6653217eaa-18d827a751d6a222faa88f6653217eaa-18d827a751d6a222faa88f6653217eaa-16d653d956e995f4703b76b1b49b216a-726778f05af1e64c4369b7bfde052deb-812c9a65bd6f6e0cea9a4bfd55d4e60d-812c9a65bd6f6e0cea9a4bfd55d4e60d-812c9a65bd6f6e0cea9a4bfd55d4e60d-812c9a65bd6f6e0cea9a4bfd55d4e60d-174af56dfde3a6a981c5a1330cdeec9e-35725dd002d6504fdaf74aa10374ba8b-d5c0b1e44d4264a735728989b341766d-d5c0b1e44d4264a735728989b341766d:passed:20120406-144928:18.646532342 +T_361file_concatenation:VTS_01_2.VOB+VTS_01_3.VOB-5150304df7cc54a8a7ce123fb2139915-5150304df7cc54a8a7ce123fb2139915-18d827a751d6a222faa88f6653217eaa-18d827a751d6a222faa88f6653217eaa-18d827a751d6a222faa88f6653217eaa-16d653d956e995f4703b76b1b49b216a-7a9aca3ab76152ba1208edc1f0658ae3-812c9a65bd6f6e0cea9a4bfd55d4e60d-812c9a65bd6f6e0cea9a4bfd55d4e60d-812c9a65bd6f6e0cea9a4bfd55d4e60d-812c9a65bd6f6e0cea9a4bfd55d4e60d-174af56dfde3a6a981c5a1330cdeec9e-35725dd002d6504fdaf74aa10374ba8b-d5c0b1e44d4264a735728989b341766d-d5c0b1e44d4264a735728989b341766d:passed:20120406-144928:18.646532342 T_362xtr_avc:faee8c13c47987ca6e6b7485dede33d1-49ae33bdb1e43de90886bc2ac6410c35:passed:20120416-153515:1.811589633 T_363srt_colon_decimal_separator:d75be97f27797c8b3fc62e5d39a8d7ea:passed:20120520-180625:0.032379535 T_364qtmp4_track_with_empty_chunkmap_table:4ea0286db77d23ffef924eaaaf7df2ff:passed:20120605-223925:0.168392001 @@ -334,7 +334,7 @@ T_485dtshd_file_format:577be0cf2bffc155aacd74a7bc2619dd:passed:20150329-085728:1 T_486m2ts_eac3_with_extension_in_own_packet:269fd88c108c1d75c0786d77bb1d7dfd:passed:20150329-193642:0.518299841 T_487matroska_version_and_read_version_with_opus:4+2-4+2-4+2-4+1-4+2-4+1-4+1-4+1:passed:20150329-213811:0.670610463 T_488hevc_conformance_window_with_cropping:226d979f7f63a760c4f7bd810489e6b9:passed:20150329-220212:0.705828455 -T_489dts_es:e059ff6eeccfa252b2d8800986454344-5dba4ea9e348f9597b1bbff55a196090-5267ba597ef409d504d374cd86184bd5:passed:20150403-115948:1.604769748 +T_489dts_es:e059ff6eeccfa252b2d8800986454344-44e02c8dc1900f2ed5c9db681c8ad2bb-59755653b7606cf26dac1442843fff14:passed:20150403-115948:1.604769748 T_490sequence_numbers_no_0_in_first_gop:a97ae3e07fdf326e81a20ebd0e1501b1:passed:20150411-142423:0.832402022 T_491auto_additional_files_only_with_vts_prefix:18d827a751d6a222faa88f6653217eaa:passed:20150413-202924:0.904251401 T_492truehd_ac3_setting_track_properties:076b157723cf84fa785130f4f87f15ab-cf8baeb632991b669c172fa96278d11a-5eb0ff15ecb155e7828f6724a60b77d1-ec21ebdd433ed1a6f9d25a337323045b-ab9b806b3de4e93c52e767f925111834-c1644709f2dd31bb03e3555e96ad12f3:passed:20150413-211600:9.416716642 @@ -343,13 +343,13 @@ T_494dont_abort_with_aac_error_proection_specific_config:4421368e078a52e327fe599 T_495default_durataion_and_sync:66ee6174221a286f9135c3ac03940123-ed8359ff8091f0e2f988a35d413bcb18-f8a8af8f2f72aa8dd939228c15279937:passed:20150417-213623:0.894261521 T_496segment_size_0:9fd6d5e57b47693a483f9aad112a6a15-fb1ff3f0a28e38e500ad86a6f32102f4:passed:20150530-180226:0.051304978 T_497crash_in_base64_decoder:f6526cfaaef01627c52ee2ba25f03255:passed:20150601-192215:0.02848152 -T_498mp2_misidentification:c754793528a9b6fe8562f192c39b86b1-d817c5eb5a3829feb59b7b29e299d0fa:passed:20150610-111131:0.763502595 +T_498mp2_misidentification:40c0f7e955214249873fdb91389d0a10-8a2e0911844517c6c5c45027bba5faa1:passed:20150610-111131:0.763502595 T_499propedit_tags_and_track_properties:bedbe63bce69a9a25f3fbf559dd6d078:passed:20150621-111029:0.162830224 T_500mp4_eac3_fourcc_ec_3:c8c2e7ac4ec7e97c1c01dcea57741d11:passed:20150621-224248:0.192381554 -T_501mpeg_ts_pat_and_pmt_crc_errors:ef5b71e331cb7117edf016a4ff760a9d:passed:20150704-110859:0.857051787 +T_501mpeg_ts_pat_and_pmt_crc_errors:f257c363c10788fc80a068211e3d7efb:passed:20150704-110859:0.857051787 T_502ui_locale_sr_RS:650e05c9c091234882980f4c1da05dc4-25fa402006e7971d8e5a2b1139a4c4d8:passed:20150829-213708:0.062939538 T_503pcm_in_mkv_varying_samples_per_packet:091442963a5879e8e1d8fca62458a06a:passed:20151004-215848:0.430291421 -T_504dts_96_24_identification:74d0bc39191125f09b9bbc6e0841b6da-630738d0b59fef8a5921f616cffa7bfb-964f7a41cc535975db39657cb8312e1b:passed:20151006-223804:2.278995107 +T_504dts_96_24_identification:74d0bc39191125f09b9bbc6e0841b6da-630738d0b59fef8a5921f616cffa7bfb-1c41005f389e920cc2f964dcf0f174aa:passed:20151006-223804:2.278995107 T_505cisco_talos_can_0036:8699becda57905638be811d04c1e72c7-6d30f4db33789d05862d950157ec3ba1:passed:20151020-161153:0.071686357 T_506cisco_talos_can_0037:5461288548eac976164cd13f01bc9426-799e64fbae89387db0656e204b2d396b-92b7169fc05ddf54c46816869c108f31-54a55a6d87bd4c08269891efb03980b3-fef3d018523c7d1fbed763f6666c1ae2-ac584cc44854f9396739df6e93d78acc-b415b2ef2a6dddf5d89733446fae2970-dd53fee23372c569d35e0b2918d86239:passed:20151020-161234:0.319298931 T_507rerender_track_headers:0572728ed778526af9a0e36c7872fab6-c49848577778e5c5146e5b875e3a07d6:passed:20151022-104930:2.573204876 @@ -357,7 +357,7 @@ T_508splitting_by_parts_with_segment_linking:existence0-true-true-true-existence T_509rerender_track_headers_chapters_attachments:aca9879facd444a739b8ea9ff0c471dc:passed:20151115-230226:0.287840782 T_510propedit_add_attachments_without_meta_seek_present:770103c238a0f502c9ec55f0599d8544:passed:20151121-101043:0.070892905 T_511propedit_ensure_seek_head_exists_at_front:20f53afd94e39f5bbf3f1091eefbe31d:passed:20151129-194025:0.152563199 -T_512json_identification:e2c1bd814ea805d9711a3875e646a51d+ok-d815a6390e25b861d21093ef66f17191+ok-27fd82d5208da05a2ab71d685aac666a+ok-a86b43982a842c6b9c8572534e40dcca+ok-24ca87f294c0ea279f0d3bd79bb11b2b+ok-e6e342718925ef84c9c65288d477ac76+ok-59c47f40f7c35d90a4a8ba0f15aebf5b+ok-92edb5e757f553b344192b8cf9961834+ok-63ac054cbe3d9eee3ac47d41f33186e3+ok-01f6792cb05fb5dd4823a5919a5565b4+ok-3f9fd90d34f591fa205eb235b1efe36c+ok-f7c9d7c612f38a0a2c0548a38008882f+ok-7c6ccc4d705a480fdba2c6c73047cd5c+ok-b137e5af83e68f2c52af9bfe3976a977+ok-c8b2bd3f66486fc47ad98d7b6a06f713+ok-d835b62858d51c2a5c37bc4c445c2968+ok-5b63f461edc27c33172b47e16dd677d5+ok:passed:20151207-223859:1.325386646 +T_512json_identification:e2c1bd814ea805d9711a3875e646a51d+ok-d815a6390e25b861d21093ef66f17191+ok-27fd82d5208da05a2ab71d685aac666a+ok-a86b43982a842c6b9c8572534e40dcca+ok-9167cad47e1f91998e3622e6d3aef1c1+ok-e6e342718925ef84c9c65288d477ac76+ok-59c47f40f7c35d90a4a8ba0f15aebf5b+ok-92edb5e757f553b344192b8cf9961834+ok-63ac054cbe3d9eee3ac47d41f33186e3+ok-01f6792cb05fb5dd4823a5919a5565b4+ok-3f9fd90d34f591fa205eb235b1efe36c+ok-684882d2b787328dc582a7676a8baa67+ok-7c6ccc4d705a480fdba2c6c73047cd5c+ok-b137e5af83e68f2c52af9bfe3976a977+ok-c8b2bd3f66486fc47ad98d7b6a06f713+ok-e824d350b4502a9897275820fced46bf+ok-dc49b24056e793c2f61f129b80417e1a+ok:passed:20151207-223859:1.325386646 T_513vp9_10bit_key_frame_detection:3bdaa369dc5af73ced610d978f3bd53d:passed:20151208-224613:0.267556245 T_514remove_track_statistics_tags_during_remux:f262df87ee15d60bbbe30ec5e4dea073-4342871017061370ac0989a9bb71e5c6-75205f286329069b201e4d5745f2cae4:passed:20151215-134129:1.426290351 T_515aac_sampling_frequency_8000_is_not_sbr:545f3eae0c4163d31de81b3bf921e639:passed:20151219-130357:0.066237884 @@ -365,10 +365,10 @@ T_516hevc_rap_sample_grouping:ae5e57cc41ccdb5ed74f0db2f814f73c:passed:20151228-1 T_517h264_forbidden_byte_sequence_in_slice_nalu:1d57559f8038e3b5cb0b7f26ab6c8e38:passed:20151228-134333:3.276176597 T_518mlp:bc0269df9e0c0c968e4a408d7da46d35-0624d3f1975273199a0e12a9f4b0fd20:passed:20151229-134422:0.895368448 T_519truehd:33f8c0f013c71529281179cf8669c567-33f8c0f013c71529281179cf8669c567:passed:20151229-135950:3.160459472 -T_520truehd_mlp_atmos_detection:9337a350fa1e3451ff22b16afe0c770c+true-307f37e86e9df0245aca5908c0409c66+true-a7940b456d8c3c56ca9f147bc8967813+true-531bd72e14816ccacd33202720f94544+true-e511625ccc45b303f27fa7bd4fa388f7+true-d835b62858d51c2a5c37bc4c445c2968+true:passed:20151229-160649:2.357134495 +T_520truehd_mlp_atmos_detection:9337a350fa1e3451ff22b16afe0c770c+true-307f37e86e9df0245aca5908c0409c66+true-a7940b456d8c3c56ca9f147bc8967813+true-531bd72e14816ccacd33202720f94544+true-9a3942f782990899bda8a4c68990db6e+true-e824d350b4502a9897275820fced46bf+true:passed:20151229-160649:2.357134495 T_521mp4_edit_list_constant_offset_with_segment_duration_not_0:74128d330ac9bc76bb07eac24caabd5e:passed:20151228-185646:0.621563048 T_522mpeg_1_2_es_no_start_code_at_beginning:970b4cffe91d16ca47df1c851fcf615f:passed:20151230-182435:0.299243222 -T_523mpeg_ts_pes_size_0:4865d64a0a5d711eb0818ac5fa9e836f-5864b5630b7308ea8dda9ef513d8267f:passed:20151230-221825:1.635929691 +T_523mpeg_ts_pes_size_0:4865d64a0a5d711eb0818ac5fa9e836f-6f8bf19915e948419e16d6fe7154a1c0:passed:20151230-221825:1.635929691 T_524mpeg2_misdetected_as_truehd:929e5c4d568bb6056825d20132c02cf5:passed:20160102-222743:1.10526128 T_525truehd_doesnt_start_with_sync_frame:dca6fbfe4f298d0f16bbcec4297d3c20:passed:20160104-205804:0.313378755 T_526propedit_bibliographic_and_terminology_iso_639_2:f262df87ee15d60bbbe30ec5e4dea073-8f44d839d555e2683a08b3dd27e937e7-f262df87ee15d60bbbe30ec5e4dea073-8f44d839d555e2683a08b3dd27e937e7:passed:20160108-105234:0.538417963 @@ -392,7 +392,7 @@ T_543webvtt:d58c88b313584d36cb34ee8067d59769-89795b46ffdaedb70cd25bf62b2290b3-51 T_544X_webvtt:0ea84e74bf6d4439dca14910b102abd1-d616381dff7d3d9ef0d82409d039e5c4-1ba3a6ea7faed9f1445feb00f41b87c9-1156c9c5852899af1d5f4b4c592dc3fe-67a47b92794777dd3fa83bc35a29ef88-09b2b283791ecb7401631d640d67d67e-b543cedb3953d783ae9b40ad5d9bc09a-7fabd75caf5b576686cebe878c4f94b1:passed:20160411-215720:0.124747579 T_545avi_incomplete_audio_chunk_at_end:0e6019b1f480c1d04c0a70fded294318:passed:20160413-193628:1.212335416 T_546teletext_multiple_pages_in_single_track:e0fbc55f5c66014b4b409af9d4f15ee6-f8f681ec715bcde3a1ebb0f351c41c8c-23788638361080147b04c6fe856e8555:passed:20160423-142735:1.833048739 -T_547mpeg_ts_ac3_stream_type_0x87:b7f7eeee9f63c680793963a1249c2664-3:passed:20160506-140318:1.513241071 +T_547mpeg_ts_ac3_stream_type_0x87:f4c3ab6163e452d73f7e6ca01462bd8b-3:passed:20160506-140318:1.513241071 T_548generate_chapters_interval:7a335de6da52377b756f0863bb4d38a2-70-fe2051687797817299a036eb599bfee1-35-d9613b45c36c2c5845705a6f4c68fdc2-24-acfe41fad389e915050ab4081f11b91b-18-c0d2dd8b59cbb6a19e34d928e5f54ecb-14-04c6785cd0fdaf1f3eec98214c608cc7-12-9863a5c4f4ca482591ba6fbf7e96a9f2-10-49f33094bc883770b28d96c4ae3d569b-9-72ad4d54dd164f549d40864c3c285904-8-877fd2b6526f32177fa9ce18a7c2271e-7-ac20eaa935feebe20a17f0581c5a9e0b-4-154442bc0e0aa6bfbf977dcef248a1c3-3-e805d879a6f12ab7a2efd4b9dca4e78a-2-5940cb7e03197025291299efef020905-2-19a54cca5c7f681952aa8baf89dc57fc-2-e668981666602602e2ed5a1b8d47f6db-1:passed:20160515-114928:1.217313158 T_549truehd_96khz_sample_rate:1b8ef071be7cafdaff5f46d50207dec1:passed:20160627-185805:0.382916063 T_550wavpack4_stream_version_0x410:08114e7c9d21d8c72621cf345f77b850:passed:20160703-121539:0.033436384 @@ -442,9 +442,9 @@ T_593flac_with_picture_metadata:c5779b653e274bbb49d3ddf0a274c63c-c58da16285f0569 T_594hevc_split_parts_discarding_start_endless_loop:2a8a74eadd0cdde9dab0199b899c86fb:passed:20170416-073513:0.635225717 T_595h264_bogus_timing_info:78c27e10b35f3bfea09d8c005dead342:passed:20170417-200233:0.368456672 T_596mpeg_ts_aac_loas_latm_misdetected_as_adts:5ae490a6b1e59d5382aa887355b7d96e:passed:20170424-170304:0.084835812 -T_597mpeg_ts_starting_with_avc_start_code:88846632aaba92f49f072ab0423e5bdc:passed:20170510-145746:0.077795359 +T_597mpeg_ts_starting_with_avc_start_code:bc286c61d98bc00899a0f85c0ee6f034:passed:20170510-145746:0.077795359 T_598aac_track_not_listed_in_pmt:444929dd4db38e68b59a3ebf833e5128-AAC:passed:20170511-221910:0.0849745 T_599mp4_nclx_colour_type_in_colr_atom:3639a6fdf7a0e46d158188fdd932bd2b:passed:20170514-203828:0.018287634 -T_600mpeg_ts_multiple_programs:890b456227714da673b137a941bf45b2-2a728cb7e28e2b05e8784aa8fd6f6827-d78702c82db3e49891717626ad0fb9fb-a210b7b90d61e14c7d5a5d97253f1bc2:passed:20170522-193901:1.342170107 +T_600mpeg_ts_multiple_programs:890b456227714da673b137a941bf45b2-ce6229630308da89250bd24ab23bf3ef-d78702c82db3e49891717626ad0fb9fb-b956e14605c08f25f071fed89c2b9c20:passed:20170522-193901:1.342170107 T_601mp4_mpeg2_via_esds:5cadaf9b8dd86a51052182ed341a4bc0:passed:20170618-150319:0.386032567 -T_602vob_with_garbage_at_start:9ea25678a9a2746f9cb9bae8e73c766d:passed:20170619-185256:0.236132323 +T_602vob_with_garbage_at_start:c34788ceb7d96fe4ea073c6227026bea:passed:20170619-185256:0.236132323 diff --git a/tests/test.d/simple_test.rb b/tests/test.d/simple_test.rb index 16bab3751..eba3fcb25 100644 --- a/tests/test.d/simple_test.rb +++ b/tests/test.d/simple_test.rb @@ -333,7 +333,8 @@ class SimpleTest json_store = JsonSchema::DocumentStore.new parser = JsonSchema::Parser.new expander = JsonSchema::ReferenceExpander.new - schema = parser.parse JSON.load(File.read("../doc/json-schema/mkvmerge-identification-output-schema-v7.json")) + version = IO.readlines("../src/merge/id_result.h").detect { |line| /#define +ID_JSON_FORMAT_VERSION\b/.match line }.gsub(/.* .* /, '').chop + schema = parser.parse JSON.load(File.read("../doc/json-schema/mkvmerge-identification-output-schema-v#{version}.json")) expander.expand(schema, store: json_store) json_store.add_schema schema