From f80a2804d95809e13bcd74872548b4ec502fe9a2 Mon Sep 17 00:00:00 2001 From: Dimitri Podborski Date: Tue, 29 Aug 2023 17:12:22 -0700 Subject: [PATCH 01/42] add spec name for feature header --- conformance-search/src/components/FeatureComponent.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conformance-search/src/components/FeatureComponent.tsx b/conformance-search/src/components/FeatureComponent.tsx index 032946f..7ea0b33 100644 --- a/conformance-search/src/components/FeatureComponent.tsx +++ b/conformance-search/src/components/FeatureComponent.tsx @@ -20,7 +20,7 @@ export default function FeatureComponent({ feature }: { feature: SearchResultRef >
-

Feature

+

Feature • {feature.item.spec}

Date: Tue, 29 Aug 2023 18:47:34 -0700 Subject: [PATCH 02/42] fix #39 --- data/file_features/published/isobmff/f2.json | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/data/file_features/published/isobmff/f2.json b/data/file_features/published/isobmff/f2.json index 81f661a..e135799 100644 --- a/data/file_features/published/isobmff/f2.json +++ b/data/file_features/published/isobmff/f2.json @@ -1,22 +1,16 @@ { "contributor": "Fraunhofer IIS", - "description": "Proteced A/V", + "description": "Protected A/V", "md5": "484468147e422150b2fd094bdd0ff063", "version": 1, "published": true, "associated_files": [], "features": [ - "Ordinary box", - "FTYP box", - "Movie box", - "normal' order (moov-mdat)", "video track", "audio track", "Protected streams (basic)", "Interleaved data", - "IOD box", - "mp4a sample entry", - "avc1 sample entry" + "IOD box" ], "notes": "", "license": "", From 7f167bdaf05328b914a1545999ceb6d1af433709 Mon Sep 17 00:00:00 2001 From: Dimitri Podborski Date: Tue, 29 Aug 2023 18:50:35 -0700 Subject: [PATCH 03/42] issue templates stuff --- .../ISSUE_TEMPLATE/conformance-file-issue.yml | 51 +++++++++++++++++++ .github/ISSUE_TEMPLATE/page-bug.yml | 1 - .github/ISSUE_TEMPLATE/spec-issue.yml | 29 +++++++++++ 3 files changed, 80 insertions(+), 1 deletion(-) create mode 100644 .github/ISSUE_TEMPLATE/conformance-file-issue.yml create mode 100644 .github/ISSUE_TEMPLATE/spec-issue.yml diff --git a/.github/ISSUE_TEMPLATE/conformance-file-issue.yml b/.github/ISSUE_TEMPLATE/conformance-file-issue.yml new file mode 100644 index 0000000..bfa4e12 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/conformance-file-issue.yml @@ -0,0 +1,51 @@ +name: 🔥 Conformance File Issue +description: Use this template if something is wrong with conformance files +labels: ["conformance issue"] +body: + - type: markdown + attributes: + value: | + Thank you for reporting a bug in the conformance files. + Please fill out the following template to help us reproduce the issue. + + - type: textarea + id: summary + attributes: + label: Summary + description: Provide a description of the problem. What is wrong in the files? + placeholder: "File `foo.mp4` has a wrong value for `bar`" + validations: + required: true + + - type: textarea + id: steps-to-reproduce + attributes: + label: Steps to reproduce + description: What steps do we need to follow to see the problem with our own eyes? + placeholder: | + 1. Download file `foo.mp4` + 2. ... + validations: + required: true + + - type: textarea + id: affected-specifications + attributes: + label: Affected specifications + description: Provide a list of specs which are relevant for this issue. + placeholder: | + - ISO/IEC 14496-12 + - ISO/IEC 14496-15 + validations: + required: true + + - type: textarea + id: affected-files + attributes: + label: Affected files + description: Provide the files like this. + placeholder: | + - [file1.mp4](./data/file_features/published/isobmff/file1.mp4) + - [file2.mp4](./data/file_features/published/isobmff/file2.mp4) + validations: + required: true diff --git a/.github/ISSUE_TEMPLATE/page-bug.yml b/.github/ISSUE_TEMPLATE/page-bug.yml index 627bfb0..7fb029a 100644 --- a/.github/ISSUE_TEMPLATE/page-bug.yml +++ b/.github/ISSUE_TEMPLATE/page-bug.yml @@ -1,6 +1,5 @@ name: 🌎 Website Bug description: Use this template if something is wrong with the website. This may include visual bugs, typos, broken links, etc. -title: "[Website] " labels: ["website"] body: - type: markdown diff --git a/.github/ISSUE_TEMPLATE/spec-issue.yml b/.github/ISSUE_TEMPLATE/spec-issue.yml new file mode 100644 index 0000000..344af44 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/spec-issue.yml @@ -0,0 +1,29 @@ +name: 📚 Specification related issue +description: Use this template if something is wrong with the data we extracted from the specifications. +labels: ["inconsistent data"] +body: + - type: markdown + attributes: + value: | + Thank you for reporting a bug. + Please fill out the following template to help us understanding the issue. + + - type: textarea + id: summary + attributes: + label: Summary + description: Provide a description of the problem. What is wrong? + placeholder: "The ISOBMFF spec defines this, but the data seems to be not available on this repository." + validations: + required: true + + - type: textarea + id: steps-to-reproduce + attributes: + label: Steps to reproduce + description: (If applicable) What steps do we need to follow to see the problem with our own eyes? + placeholder: | + 1. Do this + 2. And then do this + validations: + required: false From b2c2314d2f9327899819b3372a045e630c056a83 Mon Sep 17 00:00:00 2001 From: Dimitri Podborski Date: Tue, 29 Aug 2023 18:51:58 -0700 Subject: [PATCH 04/42] remove old one --- .../ISSUE_TEMPLATE/conformance-file-bug.yml | 52 ------------------- 1 file changed, 52 deletions(-) delete mode 100644 .github/ISSUE_TEMPLATE/conformance-file-bug.yml diff --git a/.github/ISSUE_TEMPLATE/conformance-file-bug.yml b/.github/ISSUE_TEMPLATE/conformance-file-bug.yml deleted file mode 100644 index 228f6f9..0000000 --- a/.github/ISSUE_TEMPLATE/conformance-file-bug.yml +++ /dev/null @@ -1,52 +0,0 @@ -name: 🔥 Conformance File Bug -description: Use this template if something is wrong with conformance files -title: "[Conformance] " -labels: ["conformance-file"] -body: - - type: markdown - attributes: - value: | - Thank you for reporting a bug in the conformance files. - Please fill out the following template to help us reproduce the issue. - - - type: textarea - id: summary - attributes: - label: Summary - description: Provide a description of the problem. What is wrong in the files? - placeholder: "File `foo.mp4` has a wrong value for `bar`" - validations: - required: true - - - type: textarea - id: steps-to-reproduce - attributes: - label: Steps to reproduce - description: What steps do we need to follow to see the problem with our own eyes? - placeholder: | - 1. Download file `foo.mp4` - 2. ... - validations: - required: true - - - type: textarea - id: affected-specifications - attributes: - label: Affected specifications - description: Provide a list of specs which are relevant for this issue. - placeholder: | - - ISO/IEC 14496-12 - - ISO/IEC 14496-15 - validations: - required: true - - - type: textarea - id: affected-files - attributes: - label: Affected files - description: Provide the files like this. - placeholder: | - - [file1.mp4](./data/file_features/published/isobmff/file1.mp4) - - [file2.mp4](./data/file_features/published/isobmff/file2.mp4) - validations: - required: true From 6aa366f77140689b9296b73db4ca7b94f7e0bc2c Mon Sep 17 00:00:00 2001 From: Dimitri Podborski Date: Wed, 30 Aug 2023 15:50:28 -0700 Subject: [PATCH 05/42] clean up some user-defined features most of them can be already found by a presence of a box, etc. some of them is deprecated and there are no linked files --- data/standard_features/14496-12/boxes.json | 2 +- .../14496-12/user_defined.json | 50 ++++++------------- .../14496-15/user_defined.json | 8 +-- 3 files changed, 17 insertions(+), 43 deletions(-) diff --git a/data/standard_features/14496-12/boxes.json b/data/standard_features/14496-12/boxes.json index 3af4b27..355015d 100644 --- a/data/standard_features/14496-12/boxes.json +++ b/data/standard_features/14496-12/boxes.json @@ -919,7 +919,7 @@ }, { "fourcc": "leva", - "description": "Leval assignment", + "description": "Level assignment box", "containers": ["mvex"], "type": "FullBox", "versions": [0], diff --git a/data/standard_features/14496-12/user_defined.json b/data/standard_features/14496-12/user_defined.json index b08cb8a..3b05ed7 100644 --- a/data/standard_features/14496-12/user_defined.json +++ b/data/standard_features/14496-12/user_defined.json @@ -1,51 +1,31 @@ { "64bit length": "Box(es) with 64-bit lengths (typically mdat)", - "implied length": "(size=0) Box with the length running to end of file (last box)", - "UUID box": "A user box using a UUID type (should be ignored if not recognized)", - "unknown box": "A box with an 'unknown' code is present in the file and should be ignored. The box type used for testing could be one of 'junk', 'mess', etc.", - "normal order": "(moov-mdat) Boxes in the 'usual' order for reading, and in the recommended order inside", - "late order": "(mdat first) The 'mdat' first and the 'moov' late, and boxes in the 'moov' in funny order.", "64bit headers": "There are 64-bit versions of the movie, track, and media headers, that allow long durations and dates after 2040.", - "track enabled flag": "The track-enabled flag in the track header.", - "edit list": "An edit list is used on at least one track, and some material in the media is edited out.", + "64bit chunks": "The 64-bit version of the chunk offset table is used, and the chunk offsets have non-zero bits in their upper 32 bits.", + "64bit fragments": "Fragments are used in combination with 64-bit offsets", "video track": "There is a video track with video headers", "audio track": "There is an audio track with audio headers", + "metadata track": "A timed metadata (or multiplexed timed metadata) track", "volumetric track": "There is a volumetric video track", "haptic track": "There is a haptic track", - "metadata track": "A timed meta-data track", - "unknown track": "An unknown type of track should be ignored (handler='junk' etc.)", - "unknown codec": "An unknown audio or video codec is used (sample entry name is 'junk' etc.)", "image track": "(no sync table) A track with a single image in it.", - "data reference": "Data reference atoms using URLs or URNs are used to refer to media in other files.", - "64bit chunks": "The 64-bit version of the chunk offset table is used, and the chunk offsets have non-zero bits in their upper 32 bits.", - "signed CTTS offsets": "", - "pad bits": "At least one track (audio, probably) has a padding bits table for non byte-lengthed Aus", - "degradation priority": "A degradation priority table is used (note that the meaning of the priority values is not established by standard).", - "Protected basic": "Basic protected streams (e.g. ISMA or OMA) are present", - "Protected IPMP": "Protected streams using the IPMP protection boxes are present", - "sample scale box": "The sample scale box (presenting video hint) is present", - "progressive download box": "The progressive download hitn box is present", - "Interleaved data": "The media data is interleaved on a sensible scale (e.g. .5 second) and in order", + "hint track": "This section tests hint tracks.", + "RTP hint tracks": "Regular RTP hint tracks are present. They should be ignored for local playback.", + "implied length": "(size=0) Box with the length running to end of file (last box)", + "unknown box": "A box with an 'unknown' code is present in the file and should be ignored. The box type used for testing could be one of 'junk', 'mess', etc.", + "late order": "(mdat first) The 'mdat' first and the 'moov' late, and boxes in the 'moov' in funny order.", "multiple mdats": "two or more mdat boxes are present", - "sample dependency": "The sample dependency table is present", "multiple sample descriptions": "There is one track ujsing several sample entries, not just one", - "Track groups": "Track groups are used", - "Sub-tracks": "Sub tracks", - "64bit fragments": "Fragments are used in combination with 64-bit offsets", - "Producer reference time": "", - "file level meta": "Meta box at file level", - "movie level meta": "Meta box at movie level", - "track level meta": "Meta box at track level", - "basic protected metadata": "Some meta-data is protected using the basic techniques", - "ipmp protected metadata": "Some meta-data is protected using IPMP boxes", "metadata references": "Some meta-data is in external files and linked by data references", + "sample dependency": "The sample dependency table is present", + "Interleaved data": "The media data is interleaved on a sensible scale (e.g. .5 second) and in order", + "pad bits": "At least one track (audio, probably) has a padding bits table for non byte-lengthed AUs", "item naming": "Some items use the item information (name etc.) box", + "Protected basic": "Basic protected streams (e.g. ISMA or OMA) are present", + "Protected IPMP": "Protected streams using the IPMP protection boxes are present", + "basic protected metadata": "Some meta-data is protected using the basic techniques", + "ipmp protected metadata": "Some meta-data is protected using IPMP boxes", "FD hint tracks": "", - "FEC reservoir": "", - "FD session group box": "", - "Group ID to name box": "", - "Hint tracks": "This section tests hint tracks.", - "RTP hint tracks": "Regular RTP hint tracks are present. They should be ignored for local playback.", "hint track setup": "Hint track headers etc. are present", "sdp boxes": "(moov and track) SDP information (in user-data) is present", "hint stats boxes": "Optional hint statistics are present", diff --git a/data/standard_features/14496-15/user_defined.json b/data/standard_features/14496-15/user_defined.json index 5b9006c..314c13b 100644 --- a/data/standard_features/14496-15/user_defined.json +++ b/data/standard_features/14496-15/user_defined.json @@ -1,15 +1,9 @@ { - "avc1 sample entry": "Simple AVC streams using parameter sets in the sample entry", "layering and subseq grps": "Sample groups are used for layering and sub-sequences", "switch tracks": "Tracks for switch pictures are present, with their track references", "separate param stream": "A separate parameter set stream is used.", "Extractors": "", "Aggregators": "", "Temporal Meta-data": "", - "Implicit Reconstruction": "", - "sbas track reference": "", - "scal track reference": "", - "oinf, linf and oref track reference": "", - "tbas and sabt track reference": "", - "hvc1 sample entry": "" + "Implicit Reconstruction": "" } From b5736f74aa54eb52e959100a51fa90f8b89b9910 Mon Sep 17 00:00:00 2001 From: Dimitri Podborski Date: Wed, 30 Aug 2023 16:43:29 -0700 Subject: [PATCH 06/42] make some fields optional --- .github/ISSUE_TEMPLATE/conformance-file-issue.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/conformance-file-issue.yml b/.github/ISSUE_TEMPLATE/conformance-file-issue.yml index bfa4e12..8b683f3 100644 --- a/.github/ISSUE_TEMPLATE/conformance-file-issue.yml +++ b/.github/ISSUE_TEMPLATE/conformance-file-issue.yml @@ -26,7 +26,7 @@ body: 1. Download file `foo.mp4` 2. ... validations: - required: true + required: false - type: textarea id: affected-specifications @@ -37,7 +37,7 @@ body: - ISO/IEC 14496-12 - ISO/IEC 14496-15 validations: - required: true + required: false - type: textarea id: affected-files From efdf30fa5d5b5d7e720b90ce3b69b12676f2aba4 Mon Sep 17 00:00:00 2001 From: Dimitri Podborski Date: Wed, 30 Aug 2023 17:57:16 -0700 Subject: [PATCH 07/42] wip: clean up redundant user-defined features --- .../published/3gp/female_amr67DTX_hinted.json | 11 +---------- .../published/3gp/female_amr67_hinted.json | 11 +---------- data/file_features/published/3gp/male_amr122.json | 10 +--------- .../published/3gp/male_amr122DTX.json | 10 +--------- .../file_features/published/3gp/pdin_example.json | 12 +----------- .../published/3gp/rs_example_r1.json | 11 +---------- .../published/isobmff/01_simple.json | 10 ---------- .../published/isobmff/02_dref_edts_img.json | 9 --------- .../published/isobmff/03_hinted.json | 12 +----------- .../published/isobmff/04_bifs_video.json | 10 ---------- .../isobmff/05_bifs_video_protected_v2.json | 14 ++------------ data/file_features/published/isobmff/06_bifs.json | 9 +-------- .../published/isobmff/07_bifs_sprite.json | 10 +--------- .../published/isobmff/08_bifs_carousel_v2.json | 8 -------- data/file_features/published/isobmff/09_text.json | 9 +-------- .../published/isobmff/10_fragments.json | 10 +--------- .../published/isobmff/12_metas_v2.json | 7 +------ data/file_features/published/isobmff/13_long.json | 11 +---------- .../file_features/published/isobmff/14_large.json | 15 +-------------- .../published/isobmff/a1-foreman-QCIF.json | 4 ---- .../published/isobmff/a10-foreman_QCIF-raw.json | 9 +-------- .../published/isobmff/a2-foreman-QCIF-hinted.json | 7 +------ .../published/isobmff/a3-tone-protected.json | 11 +---------- .../published/isobmff/a3b-tone-deprot.json | 11 +---------- .../published/isobmff/a4-tone-fragmented.json | 11 +---------- .../published/isobmff/a5-foreman-AVC.json | 12 +----------- .../published/isobmff/a6_tone_multifile.json | 10 +--------- .../published/isobmff/a7-tone-oddities.json | 14 +------------- .../published/isobmff/a8-foreman_QCIF_edit.json | 9 +-------- .../isobmff/a9-aac-samplegroups-edit.json | 12 +----------- .../published/isobmff/compact-no-code-fec-1.json | 9 +-------- .../published/isobmff/compact-no-code-fec-2.json | 5 +---- data/file_features/published/isobmff/f1.json | 7 +------ data/file_features/published/isobmff/f2.json | 2 +- .../fragment-random-access-1+AF8-rev1.json | 6 ------ .../isobmff/fragment_random_access-2.json | 6 ------ .../file_features/published/isobmff/mbms-fec.json | 5 +---- .../published/isobmff/restricted.json | 14 +------------- .../rtp_rtcp_reception_hint_tracks_v2.json | 2 +- .../file_features/published/isobmff/sg-tl-st.json | 12 ------------ .../published/isobmff/timed-metadata.json | 2 +- .../nalu/hevc/hevc_tiles_multiple_tracks.json | 8 -------- .../hevc_tiles_multiple_tracks_empty_base.json | 8 -------- .../nalu/hevc/hevc_tiles_single_track_nalm.json | 8 -------- .../hevc_tiles_single_track_nalm_all_intra.json | 8 -------- .../hevc/hevc_tiles_single_track_nalm_rle.json | 8 -------- ...hevc_tiles_single_track_trif_full_picture.json | 8 -------- .../published/nalu/hevc/subs_slice_hvc1.json | 2 +- .../published/nalu/hevc/subs_tile_hvc1.json | 2 +- .../published/nalu/hevc/trgr_hvc1.json | 2 +- ...mhvc_hev1_hev2_multiple_tracks_extractors.json | 8 -------- .../mhvc_hev1_lhe1_multiple_tracks_implicit.json | 8 -------- .../nalu/l-hevc/mhvc_hev1_single_track.json | 8 -------- .../nalu/l-hevc/mhvc_hev2_single_track.json | 8 -------- ...mhvc_hvc1_hvc2_multiple_tracks_extractors.json | 8 -------- .../mhvc_hvc1_lhv1_multiple_tracks_implicit.json | 8 -------- .../nalu/l-hevc/mhvc_hvc1_single_track.json | 8 -------- .../nalu/l-hevc/mhvc_hvc2_single_track.json | 8 -------- ...shvc_hev1_hev2_multiple_tracks_extractors.json | 8 -------- .../shvc_hev1_lhe1_multiple_tracks_implicit.json | 8 -------- .../nalu/l-hevc/shvc_hev1_single_track.json | 8 -------- .../nalu/l-hevc/shvc_hev2_single_track.json | 8 -------- ...shvc_hvc1_hvc2_multiple_tracks_extractors.json | 8 -------- .../shvc_hvc1_lhv1_multiple_tracks_implicit.json | 8 -------- .../nalu/l-hevc/shvc_hvc1_single_track.json | 8 -------- .../nalu/l-hevc/shvc_hvc2_single_track.json | 8 -------- data/standard_features/14496-12/user_defined.json | 2 ++ 67 files changed, 39 insertions(+), 524 deletions(-) diff --git a/data/file_features/published/3gp/female_amr67DTX_hinted.json b/data/file_features/published/3gp/female_amr67DTX_hinted.json index 2e4144d..a9e7cc1 100644 --- a/data/file_features/published/3gp/female_amr67DTX_hinted.json +++ b/data/file_features/published/3gp/female_amr67DTX_hinted.json @@ -5,16 +5,7 @@ "version": 1, "published": true, "associated_files": [], - "features": [ - "Ordinary box", - "FTYP box", - "Movie box", - "track reference", - "video track", - "audio track", - "sync table", - "RTP hint tracks" - ], + "features": ["video track", "audio track", "RTP hint tracks"], "notes": "", "license": "", "rel_filepath": "./female_amr67DTX_hinted.3gp", diff --git a/data/file_features/published/3gp/female_amr67_hinted.json b/data/file_features/published/3gp/female_amr67_hinted.json index 9792eb1..193b671 100644 --- a/data/file_features/published/3gp/female_amr67_hinted.json +++ b/data/file_features/published/3gp/female_amr67_hinted.json @@ -5,16 +5,7 @@ "version": 1, "published": true, "associated_files": [], - "features": [ - "Ordinary box", - "FTYP box", - "Movie box", - "track reference", - "video track", - "audio track", - "sync table", - "RTP hint tracks" - ], + "features": ["video track", "audio track", "RTP hint tracks"], "notes": "", "license": "", "rel_filepath": "./female_amr67_hinted.3gp", diff --git a/data/file_features/published/3gp/male_amr122.json b/data/file_features/published/3gp/male_amr122.json index ed01e46..a22a359 100644 --- a/data/file_features/published/3gp/male_amr122.json +++ b/data/file_features/published/3gp/male_amr122.json @@ -5,15 +5,7 @@ "version": 1, "published": true, "associated_files": [], - "features": [ - "Ordinary box", - "FTYP box", - "Movie box", - "track reference", - "video track", - "audio track", - "sync table" - ], + "features": ["video track", "audio track"], "notes": "", "license": "", "rel_filepath": "./male_amr122.3gp", diff --git a/data/file_features/published/3gp/male_amr122DTX.json b/data/file_features/published/3gp/male_amr122DTX.json index cc9fc8d..107b395 100644 --- a/data/file_features/published/3gp/male_amr122DTX.json +++ b/data/file_features/published/3gp/male_amr122DTX.json @@ -5,15 +5,7 @@ "version": 1, "published": true, "associated_files": [], - "features": [ - "Ordinary box", - "FTYP box", - "Movie box", - "track reference", - "video track", - "audio track", - "sync table" - ], + "features": ["video track", "audio track"], "notes": "", "license": "", "rel_filepath": "./male_amr122DTX.3gp", diff --git a/data/file_features/published/3gp/pdin_example.json b/data/file_features/published/3gp/pdin_example.json index 821d96d..00e8576 100644 --- a/data/file_features/published/3gp/pdin_example.json +++ b/data/file_features/published/3gp/pdin_example.json @@ -5,17 +5,7 @@ "version": 1, "published": true, "associated_files": [], - "features": [ - "Ordinary box", - "FTYP box", - "Movie box", - "normal' order (moov-mdat)", - "track enabled bit", - "video track", - "sync table", - "progressive dnload box", - "avc1 sample entry" - ], + "features": ["video track"], "notes": "", "license": "", "rel_filepath": "./pdin_example.3gp", diff --git a/data/file_features/published/3gp/rs_example_r1.json b/data/file_features/published/3gp/rs_example_r1.json index f764553..b216b4b 100644 --- a/data/file_features/published/3gp/rs_example_r1.json +++ b/data/file_features/published/3gp/rs_example_r1.json @@ -6,20 +6,11 @@ "published": true, "associated_files": [], "features": [ - "Ordinary box", - "FTYP box", - "Movie box", - "normal' order (moov-mdat)", - "track enabled bit", "video track", "audio track", - "track selection box", - "sync table", - "sample groups", "rate share group", "Interleaved data", - "mp4a sample entry", - "avc1 sample entry" + "mp4a sample entry" ], "notes": "", "license": "", diff --git a/data/file_features/published/isobmff/01_simple.json b/data/file_features/published/isobmff/01_simple.json index aa83748..33d4104 100644 --- a/data/file_features/published/isobmff/01_simple.json +++ b/data/file_features/published/isobmff/01_simple.json @@ -6,18 +6,8 @@ "published": true, "associated_files": [], "features": [ - "Ordinary box", - "FTYP box", - "Free/skip", - "Movie box", - "normal' order (moov-mdat)", - "track enabled bit", - "track reference", "video track", "audio track", - "ctts offsets", - "sync table", - "Copyright box", "Interleaved data", "Systems tracks etc.", "IOD box", diff --git a/data/file_features/published/isobmff/02_dref_edts_img.json b/data/file_features/published/isobmff/02_dref_edts_img.json index 0c64ab4..d51cf43 100644 --- a/data/file_features/published/isobmff/02_dref_edts_img.json +++ b/data/file_features/published/isobmff/02_dref_edts_img.json @@ -6,19 +6,10 @@ "published": true, "associated_files": [], "features": [ - "Ordinary box", - "FTYP box", - "Free/skip", - "Movie box", - "normal' order (moov-mdat)", - "track enabled bit", - "track reference", - "edit list", "audio track", "image track (no sync table)", "data ref to other file", "compact stz2", - "Copyright box", "Interleaved data", "Systems tracks etc.", "IOD box", diff --git a/data/file_features/published/isobmff/03_hinted.json b/data/file_features/published/isobmff/03_hinted.json index 4763760..45a60a6 100644 --- a/data/file_features/published/isobmff/03_hinted.json +++ b/data/file_features/published/isobmff/03_hinted.json @@ -6,21 +6,11 @@ "published": true, "associated_files": [], "features": [ - "Ordinary box", - "FTYP box", - "Free/skip", - "Movie box", - "normal' order (moov-mdat)", - "track enabled bit", - "track reference", "video track", - "ctts offsets", - "sync table", - "Copyright box", "Interleaved data", "RTP hint tracks", "hint track setup", - "sdp boxes (moov and track)", + "sdp boxes", "hint stats boxes", "RTP immediate constructor", "RTP sample contructor with track reference", diff --git a/data/file_features/published/isobmff/04_bifs_video.json b/data/file_features/published/isobmff/04_bifs_video.json index c2dd81d..421e539 100644 --- a/data/file_features/published/isobmff/04_bifs_video.json +++ b/data/file_features/published/isobmff/04_bifs_video.json @@ -6,19 +6,9 @@ "published": true, "associated_files": [], "features": [ - "Ordinary box", - "FTYP box", - "Free/skip", - "Movie box", - "normal' order (moov-mdat)", - "track enabled bit", - "track reference", "video track", "data ref to other file", "compact stz2", - "ctts offsets", - "sync table", - "Copyright box", "Systems tracks etc.", "IOD box", "mp4v sample entry", diff --git a/data/file_features/published/isobmff/05_bifs_video_protected_v2.json b/data/file_features/published/isobmff/05_bifs_video_protected_v2.json index 9e1d97a..f13d35e 100644 --- a/data/file_features/published/isobmff/05_bifs_video_protected_v2.json +++ b/data/file_features/published/isobmff/05_bifs_video_protected_v2.json @@ -6,20 +6,10 @@ "published": true, "associated_files": [], "features": [ - "Ordinary box", - "FTYP box", - "Free/skip", - "Movie box", - "normal' order (moov-mdat)", - "track enabled bit", - "track reference", "video track", - "ctts offsets", - "sync table", - "Protected streams (basic)", - "Copyright box", + "Protected basic", "file-level", - "item naming etc.", + "item naming", "Systems tracks etc.", "IOD box", "mp4v sample entry", diff --git a/data/file_features/published/isobmff/06_bifs.json b/data/file_features/published/isobmff/06_bifs.json index e30ae56..0f78388 100644 --- a/data/file_features/published/isobmff/06_bifs.json +++ b/data/file_features/published/isobmff/06_bifs.json @@ -6,14 +6,7 @@ "published": true, "associated_files": [], "features": [ - "Ordinary box", - "FTYP box", - "Free/skip", - "Movie box", - "late' order (mdat first)", - "track enabled bit", - "sync table", - "Copyright box", + "late order", "Systems tracks etc.", "IOD box", "mp4s sample entry", diff --git a/data/file_features/published/isobmff/07_bifs_sprite.json b/data/file_features/published/isobmff/07_bifs_sprite.json index c43784f..07bf9b4 100644 --- a/data/file_features/published/isobmff/07_bifs_sprite.json +++ b/data/file_features/published/isobmff/07_bifs_sprite.json @@ -6,16 +6,8 @@ "published": true, "associated_files": [], "features": [ - "Ordinary box", - "FTYP box", - "Free/skip", - "Movie box", - "late' order (mdat first)", - "track enabled bit", - "track reference", - "sync table", + "late order", "shadow sync", - "Copyright box", "Systems tracks etc.", "IOD box", "mp4s sample entry", diff --git a/data/file_features/published/isobmff/08_bifs_carousel_v2.json b/data/file_features/published/isobmff/08_bifs_carousel_v2.json index df4936b..320d990 100644 --- a/data/file_features/published/isobmff/08_bifs_carousel_v2.json +++ b/data/file_features/published/isobmff/08_bifs_carousel_v2.json @@ -6,14 +6,6 @@ "published": true, "associated_files": [], "features": [ - "Ordinary box", - "FTYP box", - "Free/skip", - "Movie box", - "normal' order (moov-mdat)", - "track enabled bit", - "sync table", - "Copyright box", "sample dependency", "Systems tracks etc.", "IOD box", diff --git a/data/file_features/published/isobmff/09_text.json b/data/file_features/published/isobmff/09_text.json index 22a8115..b32d515 100644 --- a/data/file_features/published/isobmff/09_text.json +++ b/data/file_features/published/isobmff/09_text.json @@ -6,16 +6,9 @@ "published": true, "associated_files": [], "features": [ - "Ordinary box", - "FTYP box", - "Free/skip", - "Movie box", - "normal' order (moov-mdat)", - "track enabled bit", "unknown track type", "unknown codec type", - "Copyright box", - "several sample description" + "multiple sample descriptions" ], "notes": "", "license": "", diff --git a/data/file_features/published/isobmff/10_fragments.json b/data/file_features/published/isobmff/10_fragments.json index d7fcc64..6c94a32 100644 --- a/data/file_features/published/isobmff/10_fragments.json +++ b/data/file_features/published/isobmff/10_fragments.json @@ -6,18 +6,10 @@ "published": true, "associated_files": [], "features": [ - "Ordinary box", - "FTYP box", - "Free/skip", - "Movie box", - "normal' order (moov-mdat)", - "track enabled bit", "video track", "audio track", - "Copyright box", "Interleaved data", - "Two or more mdats", - "Movie fragment box", + "multiple mdats", "mov. Ext header" ], "notes": "", diff --git a/data/file_features/published/isobmff/12_metas_v2.json b/data/file_features/published/isobmff/12_metas_v2.json index 2926ef3..a611972 100644 --- a/data/file_features/published/isobmff/12_metas_v2.json +++ b/data/file_features/published/isobmff/12_metas_v2.json @@ -6,17 +6,12 @@ "published": true, "associated_files": [], "features": [ - "Ordinary box", - "FTYP box", - "Free/skip", - "normal' order (moov-mdat)", - "track enabled bit", "image track (no sync table)", "file-level", "movie-level", "track-level", "data refs", - "item naming etc." + "item naming" ], "notes": "", "license": "", diff --git a/data/file_features/published/isobmff/13_long.json b/data/file_features/published/isobmff/13_long.json index 3959539..97ac1bc 100644 --- a/data/file_features/published/isobmff/13_long.json +++ b/data/file_features/published/isobmff/13_long.json @@ -5,16 +5,7 @@ "version": 1, "published": true, "associated_files": [], - "features": [ - "Ordinary box", - "FTYP box", - "Free/skip", - "Movie box", - "normal' order (moov-mdat)", - "64-bit mv/tr/md headers", - "track enabled bit", - "Copyright box" - ], + "features": ["64-bit mv/tr/md headers"], "notes": "", "license": "", "rel_filepath": "./13_long.mp4", diff --git a/data/file_features/published/isobmff/14_large.json b/data/file_features/published/isobmff/14_large.json index ede19be..1708d97 100644 --- a/data/file_features/published/isobmff/14_large.json +++ b/data/file_features/published/isobmff/14_large.json @@ -5,20 +5,7 @@ "version": 1, "published": true, "associated_files": [], - "features": [ - "Ordinary box", - "64-bit length", - "FTYP box", - "Free/skip", - "Movie box", - "normal' order (moov-mdat)", - "track enabled bit", - "video track", - "64-bit chunks", - "ctts offsets", - "sync table", - "Copyright box" - ], + "features": ["64bit length", "video track", "64bit chunks"], "notes": { "compressed": true }, diff --git a/data/file_features/published/isobmff/a1-foreman-QCIF.json b/data/file_features/published/isobmff/a1-foreman-QCIF.json index 430f082..99e1de2 100644 --- a/data/file_features/published/isobmff/a1-foreman-QCIF.json +++ b/data/file_features/published/isobmff/a1-foreman-QCIF.json @@ -6,12 +6,8 @@ "published": true, "associated_files": [], "features": [ - "Ordinary box", - "FTYP box", - "Movie box", "video track", "audio track", - "sync table", "Interleaved data", "IOD box", "mp4a sample entry", diff --git a/data/file_features/published/isobmff/a10-foreman_QCIF-raw.json b/data/file_features/published/isobmff/a10-foreman_QCIF-raw.json index 680920b..a313be9 100644 --- a/data/file_features/published/isobmff/a10-foreman_QCIF-raw.json +++ b/data/file_features/published/isobmff/a10-foreman_QCIF-raw.json @@ -5,14 +5,7 @@ "version": 1, "published": true, "associated_files": [], - "features": [ - "Ordinary box", - "FTYP box", - "Movie box", - "normal' order (moov-mdat)", - "video track", - "unknown codec type" - ], + "features": ["video track", "unknown codec type"], "notes": "", "license": "", "rel_filepath": "./a10-foreman_QCIF-raw.mp4", diff --git a/data/file_features/published/isobmff/a2-foreman-QCIF-hinted.json b/data/file_features/published/isobmff/a2-foreman-QCIF-hinted.json index 5b45f8f..32614b9 100644 --- a/data/file_features/published/isobmff/a2-foreman-QCIF-hinted.json +++ b/data/file_features/published/isobmff/a2-foreman-QCIF-hinted.json @@ -6,16 +6,11 @@ "published": true, "associated_files": [], "features": [ - "Ordinary box", - "FTYP box", - "Movie box", - "track reference", "video track", "audio track", - "sync table", "RTP hint tracks", "hint track setup", - "sdp boxes (moov and track)", + "sdp boxes", "RTP immediate constructor", "RTP sample contructor with track reference", "IOD box", diff --git a/data/file_features/published/isobmff/a3-tone-protected.json b/data/file_features/published/isobmff/a3-tone-protected.json index 52686fa..4f8aeb2 100644 --- a/data/file_features/published/isobmff/a3-tone-protected.json +++ b/data/file_features/published/isobmff/a3-tone-protected.json @@ -5,16 +5,7 @@ "version": 1, "published": true, "associated_files": ["./a3c-prot-keys.txt"], - "features": [ - "Ordinary box", - "FTYP box", - "Movie box", - "video track", - "audio track", - "sync table", - "Protected streams (basic)", - "IOD box" - ], + "features": ["video track", "audio track", "Protected basic", "IOD box"], "notes": "", "license": "", "rel_filepath": "./a3-tone-protected.mp4", diff --git a/data/file_features/published/isobmff/a3b-tone-deprot.json b/data/file_features/published/isobmff/a3b-tone-deprot.json index 7898891..6bfe1a1 100644 --- a/data/file_features/published/isobmff/a3b-tone-deprot.json +++ b/data/file_features/published/isobmff/a3b-tone-deprot.json @@ -5,16 +5,7 @@ "version": 1, "published": true, "associated_files": [], - "features": [ - "Ordinary box", - "FTYP box", - "Movie box", - "video track", - "audio track", - "sync table", - "Protected streams (basic)", - "IOD box" - ], + "features": ["video track", "audio track", "Protected basic", "IOD box"], "notes": "", "license": "", "rel_filepath": "./a3b-tone-deprot.mp4", diff --git a/data/file_features/published/isobmff/a4-tone-fragmented.json b/data/file_features/published/isobmff/a4-tone-fragmented.json index 6cfb229..107b1c9 100644 --- a/data/file_features/published/isobmff/a4-tone-fragmented.json +++ b/data/file_features/published/isobmff/a4-tone-fragmented.json @@ -5,16 +5,7 @@ "version": 1, "published": true, "associated_files": [], - "features": [ - "Ordinary box", - "FTYP box", - "Movie box", - "video track", - "audio track", - "sync table", - "Movie fragment box", - "IOD box" - ], + "features": ["video track", "audio track", "IOD box"], "notes": "", "license": "", "rel_filepath": "./a4-tone-fragmented.mp4", diff --git a/data/file_features/published/isobmff/a5-foreman-AVC.json b/data/file_features/published/isobmff/a5-foreman-AVC.json index 76a43b1..d6e44f9 100644 --- a/data/file_features/published/isobmff/a5-foreman-AVC.json +++ b/data/file_features/published/isobmff/a5-foreman-AVC.json @@ -5,17 +5,7 @@ "version": 1, "published": true, "associated_files": [], - "features": [ - "Ordinary box", - "FTYP box", - "Movie box", - "video track", - "audio track", - "ctts offsets", - "sync table", - "sample dependency", - "avc1 sample entry" - ], + "features": ["video track", "audio track", "sample dependency"], "notes": "", "license": "", "rel_filepath": "./a5-foreman-AVC.mp4", diff --git a/data/file_features/published/isobmff/a6_tone_multifile.json b/data/file_features/published/isobmff/a6_tone_multifile.json index 4eaebc2..e28d992 100644 --- a/data/file_features/published/isobmff/a6_tone_multifile.json +++ b/data/file_features/published/isobmff/a6_tone_multifile.json @@ -5,15 +5,7 @@ "version": 1, "published": true, "associated_files": ["./myData.dat"], - "features": [ - "Ordinary box", - "FTYP box", - "Movie box", - "video track", - "audio track", - "data ref to other file", - "sync table" - ], + "features": ["video track", "audio track", "data ref to other file"], "notes": "", "license": "", "rel_filepath": "./a6_tone_multifile.mp4", diff --git a/data/file_features/published/isobmff/a7-tone-oddities.json b/data/file_features/published/isobmff/a7-tone-oddities.json index 2e72b98..68357cf 100644 --- a/data/file_features/published/isobmff/a7-tone-oddities.json +++ b/data/file_features/published/isobmff/a7-tone-oddities.json @@ -5,19 +5,7 @@ "version": 1, "published": true, "associated_files": [], - "features": [ - "Ordinary box", - "implied length (size=0)", - "FTYP box", - "UUID box", - "Free/skip", - "Unknown box", - "Movie box", - "track enabled bit", - "audio track", - "sync table", - "pad bits" - ], + "features": ["implied length", "unknown box", "audio track", "pad bits"], "notes": "", "license": "", "rel_filepath": "./a7-tone-oddities.mp4", diff --git a/data/file_features/published/isobmff/a8-foreman_QCIF_edit.json b/data/file_features/published/isobmff/a8-foreman_QCIF_edit.json index 4ba6f7e..02c81b2 100644 --- a/data/file_features/published/isobmff/a8-foreman_QCIF_edit.json +++ b/data/file_features/published/isobmff/a8-foreman_QCIF_edit.json @@ -5,14 +5,7 @@ "version": 1, "published": true, "associated_files": [], - "features": [ - "Ordinary box", - "FTYP box", - "Movie box", - "edit list", - "audio track", - "sync table" - ], + "features": ["audio track"], "notes": "", "license": "", "rel_filepath": "./a8-foreman_QCIF_edit.mp4", diff --git a/data/file_features/published/isobmff/a9-aac-samplegroups-edit.json b/data/file_features/published/isobmff/a9-aac-samplegroups-edit.json index 8480fcd..b20ac71 100644 --- a/data/file_features/published/isobmff/a9-aac-samplegroups-edit.json +++ b/data/file_features/published/isobmff/a9-aac-samplegroups-edit.json @@ -5,17 +5,7 @@ "version": 1, "published": true, "associated_files": [], - "features": [ - "Ordinary box", - "FTYP box", - "Movie box", - "edit list", - "audio track", - "sync table", - "sample groups", - "pre-roll group", - "IOD box" - ], + "features": ["audio track", "pre-roll group", "IOD box"], "notes": "", "license": "", "rel_filepath": "./a9-aac-samplegroups-edit.mp4", diff --git a/data/file_features/published/isobmff/compact-no-code-fec-1.json b/data/file_features/published/isobmff/compact-no-code-fec-1.json index f81a2f5..706419d 100644 --- a/data/file_features/published/isobmff/compact-no-code-fec-1.json +++ b/data/file_features/published/isobmff/compact-no-code-fec-1.json @@ -5,14 +5,7 @@ "version": 1, "published": true, "associated_files": [], - "features": [ - "Ordinary box", - "FTYP box", - "Movie box", - "file-level", - "item naming etc.", - "FD hint tracks" - ], + "features": ["file-level", "item naming etc.", "FD hint tracks"], "notes": "", "license": "", "rel_filepath": "./compact-no-code-fec-1.iso3", diff --git a/data/file_features/published/isobmff/compact-no-code-fec-2.json b/data/file_features/published/isobmff/compact-no-code-fec-2.json index 0401ad0..c5b4664 100644 --- a/data/file_features/published/isobmff/compact-no-code-fec-2.json +++ b/data/file_features/published/isobmff/compact-no-code-fec-2.json @@ -6,11 +6,8 @@ "published": true, "associated_files": [], "features": [ - "Ordinary box", - "FTYP box", - "Movie box", "file-level", - "item naming etc.", + "item naming", "FD hint tracks", "FD session group box" ], diff --git a/data/file_features/published/isobmff/f1.json b/data/file_features/published/isobmff/f1.json index 993c3ae..7c745f8 100644 --- a/data/file_features/published/isobmff/f1.json +++ b/data/file_features/published/isobmff/f1.json @@ -6,16 +6,11 @@ "published": true, "associated_files": [], "features": [ - "Ordinary box", - "FTYP box", - "Movie box", - "normal' order (moov-mdat)", "video track", "audio track", "Interleaved data", "IOD box", - "mp4a sample entry", - "avc1 sample entry" + "mp4a sample entry" ], "notes": "", "license": "", diff --git a/data/file_features/published/isobmff/f2.json b/data/file_features/published/isobmff/f2.json index e135799..35f462e 100644 --- a/data/file_features/published/isobmff/f2.json +++ b/data/file_features/published/isobmff/f2.json @@ -8,7 +8,7 @@ "features": [ "video track", "audio track", - "Protected streams (basic)", + "Protected basic", "Interleaved data", "IOD box" ], diff --git a/data/file_features/published/isobmff/fragment-random-access-1+AF8-rev1.json b/data/file_features/published/isobmff/fragment-random-access-1+AF8-rev1.json index b69c2d3..5881c84 100644 --- a/data/file_features/published/isobmff/fragment-random-access-1+AF8-rev1.json +++ b/data/file_features/published/isobmff/fragment-random-access-1+AF8-rev1.json @@ -6,14 +6,8 @@ "published": true, "associated_files": [], "features": [ - "Ordinary box", - "FTYP box", - "normal' order (moov-mdat)", - "track enabled bit", "video track", "audio track", - "sync table", - "Movie fragment box", "mov. Ext header", "fragment random access", "mp4a sample entry", diff --git a/data/file_features/published/isobmff/fragment_random_access-2.json b/data/file_features/published/isobmff/fragment_random_access-2.json index 75060be..83e4441 100644 --- a/data/file_features/published/isobmff/fragment_random_access-2.json +++ b/data/file_features/published/isobmff/fragment_random_access-2.json @@ -6,13 +6,7 @@ "published": true, "associated_files": [], "features": [ - "Ordinary box", - "FTYP box", - "normal' order (moov-mdat)", - "track enabled bit", "video track", - "ctts offsets", - "Movie fragment box", "mov. Ext header", "fragment random access", "mp4v sample entry" diff --git a/data/file_features/published/isobmff/mbms-fec.json b/data/file_features/published/isobmff/mbms-fec.json index a84afac..e5d6d89 100644 --- a/data/file_features/published/isobmff/mbms-fec.json +++ b/data/file_features/published/isobmff/mbms-fec.json @@ -6,11 +6,8 @@ "published": true, "associated_files": [], "features": [ - "Ordinary box", - "FTYP box", - "Movie box", "file-level", - "item naming etc.", + "item naming", "FD hint tracks", "FEC reservoir", "FD session group box" diff --git a/data/file_features/published/isobmff/restricted.json b/data/file_features/published/isobmff/restricted.json index 738342c..276c54a 100644 --- a/data/file_features/published/isobmff/restricted.json +++ b/data/file_features/published/isobmff/restricted.json @@ -5,19 +5,7 @@ "version": 1, "published": true, "associated_files": [], - "features": [ - "Ordinary box", - "FTYP box", - "Free/skip", - "Movie box", - "late' order (mdat first)", - "video track", - "track fragment decode time", - "sync table", - "Level assignment", - "Sub-tracks", - "Restricted sample entry" - ], + "features": ["late order", "video track"], "notes": "", "license": "", "rel_filepath": "./restricted.mp4", diff --git a/data/file_features/published/isobmff/rtp_rtcp_reception_hint_tracks_v2.json b/data/file_features/published/isobmff/rtp_rtcp_reception_hint_tracks_v2.json index 92357e2..8306be9 100644 --- a/data/file_features/published/isobmff/rtp_rtcp_reception_hint_tracks_v2.json +++ b/data/file_features/published/isobmff/rtp_rtcp_reception_hint_tracks_v2.json @@ -9,7 +9,7 @@ "video track", "audio track", "hint track setup", - "sdp boxes (moov and track)", + "sdp boxes", "hint stats boxes", "RTP sample contructor on self track", "RTP etc. reception hint track" diff --git a/data/file_features/published/isobmff/sg-tl-st.json b/data/file_features/published/isobmff/sg-tl-st.json index 16da78e..8080a23 100644 --- a/data/file_features/published/isobmff/sg-tl-st.json +++ b/data/file_features/published/isobmff/sg-tl-st.json @@ -6,20 +6,8 @@ "published": true, "associated_files": [], "features": [ - "Ordinary box", - "FTYP box", - "Free/skip", - "Movie box", - "normal' order (moov-mdat)", "video track", - "track fragment decode time", - "sample groups", "Temporal level sample group", - "Level assignment", - "Sub-tracks", - "segment index box", - "sub-segment index box", - "avc1 sample entry", "layering and subseq grps" ], "notes": "", diff --git a/data/file_features/published/isobmff/timed-metadata.json b/data/file_features/published/isobmff/timed-metadata.json index fd37d13..a8c70c3 100644 --- a/data/file_features/published/isobmff/timed-metadata.json +++ b/data/file_features/published/isobmff/timed-metadata.json @@ -5,7 +5,7 @@ "version": 1, "published": true, "associated_files": [], - "features": ["meta-data track"], + "features": ["metadata track"], "notes": "", "license": "", "rel_filepath": "./timed-metadata.mp4", diff --git a/data/file_features/published/nalu/hevc/hevc_tiles_multiple_tracks.json b/data/file_features/published/nalu/hevc/hevc_tiles_multiple_tracks.json index 01cef0f..8a0dfa3 100644 --- a/data/file_features/published/nalu/hevc/hevc_tiles_multiple_tracks.json +++ b/data/file_features/published/nalu/hevc/hevc_tiles_multiple_tracks.json @@ -6,15 +6,7 @@ "published": true, "associated_files": [], "features": [ - "Ordinary box", - "FTYP box", - "Movie box", - "normal' order (moov-mdat)", - "track enabled bit", - "track reference", "video track", - "ctts offsets", - "sync table", "hev1 sample entry", "hvc1 sample entry", "hev2 sample entry", diff --git a/data/file_features/published/nalu/hevc/hevc_tiles_multiple_tracks_empty_base.json b/data/file_features/published/nalu/hevc/hevc_tiles_multiple_tracks_empty_base.json index 4c81391..0f0696c 100644 --- a/data/file_features/published/nalu/hevc/hevc_tiles_multiple_tracks_empty_base.json +++ b/data/file_features/published/nalu/hevc/hevc_tiles_multiple_tracks_empty_base.json @@ -6,15 +6,7 @@ "published": true, "associated_files": [], "features": [ - "Ordinary box", - "FTYP box", - "Movie box", - "normal' order (moov-mdat)", - "track enabled bit", - "track reference", "video track", - "ctts offsets", - "sync table", "hev1 sample entry", "hvc1 sample entry", "hev2 sample entry", diff --git a/data/file_features/published/nalu/hevc/hevc_tiles_single_track_nalm.json b/data/file_features/published/nalu/hevc/hevc_tiles_single_track_nalm.json index 2ebca4f..24d2bf7 100644 --- a/data/file_features/published/nalu/hevc/hevc_tiles_single_track_nalm.json +++ b/data/file_features/published/nalu/hevc/hevc_tiles_single_track_nalm.json @@ -6,15 +6,7 @@ "published": true, "associated_files": [], "features": [ - "Ordinary box", - "FTYP box", - "Movie box", - "normal' order (moov-mdat)", - "track enabled bit", - "track reference", "video track", - "ctts offsets", - "sync table", "hev1 sample entry", "hvc1 sample entry", "hev2 sample entry", diff --git a/data/file_features/published/nalu/hevc/hevc_tiles_single_track_nalm_all_intra.json b/data/file_features/published/nalu/hevc/hevc_tiles_single_track_nalm_all_intra.json index 227cfad..b510e55 100644 --- a/data/file_features/published/nalu/hevc/hevc_tiles_single_track_nalm_all_intra.json +++ b/data/file_features/published/nalu/hevc/hevc_tiles_single_track_nalm_all_intra.json @@ -6,15 +6,7 @@ "published": true, "associated_files": [], "features": [ - "Ordinary box", - "FTYP box", - "Movie box", - "normal' order (moov-mdat)", - "track enabled bit", - "track reference", "video track", - "ctts offsets", - "sync table", "hev1 sample entry", "hvc1 sample entry", "hev2 sample entry", diff --git a/data/file_features/published/nalu/hevc/hevc_tiles_single_track_nalm_rle.json b/data/file_features/published/nalu/hevc/hevc_tiles_single_track_nalm_rle.json index ded147a..1616d64 100644 --- a/data/file_features/published/nalu/hevc/hevc_tiles_single_track_nalm_rle.json +++ b/data/file_features/published/nalu/hevc/hevc_tiles_single_track_nalm_rle.json @@ -6,15 +6,7 @@ "published": true, "associated_files": [], "features": [ - "Ordinary box", - "FTYP box", - "Movie box", - "normal' order (moov-mdat)", - "track enabled bit", - "track reference", "video track", - "ctts offsets", - "sync table", "hev1 sample entry", "hvc1 sample entry", "hev2 sample entry", diff --git a/data/file_features/published/nalu/hevc/hevc_tiles_single_track_trif_full_picture.json b/data/file_features/published/nalu/hevc/hevc_tiles_single_track_trif_full_picture.json index 449004b..dfafd21 100644 --- a/data/file_features/published/nalu/hevc/hevc_tiles_single_track_trif_full_picture.json +++ b/data/file_features/published/nalu/hevc/hevc_tiles_single_track_trif_full_picture.json @@ -6,15 +6,7 @@ "published": true, "associated_files": [], "features": [ - "Ordinary box", - "FTYP box", - "Movie box", - "normal' order (moov-mdat)", - "track enabled bit", - "track reference", "video track", - "ctts offsets", - "sync table", "hev1 sample entry", "hvc1 sample entry", "hev2 sample entry", diff --git a/data/file_features/published/nalu/hevc/subs_slice_hvc1.json b/data/file_features/published/nalu/hevc/subs_slice_hvc1.json index af20cbf..07a3c79 100644 --- a/data/file_features/published/nalu/hevc/subs_slice_hvc1.json +++ b/data/file_features/published/nalu/hevc/subs_slice_hvc1.json @@ -5,7 +5,7 @@ "version": 1, "published": true, "associated_files": [], - "features": ["sub-sample information"], + "features": [], "notes": "", "license": "", "rel_filepath": "./subs_slice_hvc1.mp4", diff --git a/data/file_features/published/nalu/hevc/subs_tile_hvc1.json b/data/file_features/published/nalu/hevc/subs_tile_hvc1.json index 4eb6321..ec4501e 100644 --- a/data/file_features/published/nalu/hevc/subs_tile_hvc1.json +++ b/data/file_features/published/nalu/hevc/subs_tile_hvc1.json @@ -5,7 +5,7 @@ "version": 1, "published": true, "associated_files": [], - "features": ["sub-sample information"], + "features": [], "notes": "", "license": "", "rel_filepath": "./subs_tile_hvc1.mp4", diff --git a/data/file_features/published/nalu/hevc/trgr_hvc1.json b/data/file_features/published/nalu/hevc/trgr_hvc1.json index c833042..fc5b1d7 100644 --- a/data/file_features/published/nalu/hevc/trgr_hvc1.json +++ b/data/file_features/published/nalu/hevc/trgr_hvc1.json @@ -5,7 +5,7 @@ "version": 1, "published": true, "associated_files": [], - "features": ["Track groups", "hvc1 sample entry"], + "features": [], "notes": "", "license": "", "rel_filepath": "./trgr_hvc1.mp4", diff --git a/data/file_features/published/nalu/l-hevc/mhvc_hev1_hev2_multiple_tracks_extractors.json b/data/file_features/published/nalu/l-hevc/mhvc_hev1_hev2_multiple_tracks_extractors.json index 0c6278f..a11bbc4 100644 --- a/data/file_features/published/nalu/l-hevc/mhvc_hev1_hev2_multiple_tracks_extractors.json +++ b/data/file_features/published/nalu/l-hevc/mhvc_hev1_hev2_multiple_tracks_extractors.json @@ -6,15 +6,7 @@ "published": true, "associated_files": [], "features": [ - "Ordinary box", - "FTYP box", - "Movie box", - "normal' order (moov-mdat)", - "track enabled bit", - "track reference", "video track", - "ctts offsets", - "sync table", "avc1 sample entry", "avc3 sample entry", "hev1 sample entry", diff --git a/data/file_features/published/nalu/l-hevc/mhvc_hev1_lhe1_multiple_tracks_implicit.json b/data/file_features/published/nalu/l-hevc/mhvc_hev1_lhe1_multiple_tracks_implicit.json index 5ac2147..6cc4d8e 100644 --- a/data/file_features/published/nalu/l-hevc/mhvc_hev1_lhe1_multiple_tracks_implicit.json +++ b/data/file_features/published/nalu/l-hevc/mhvc_hev1_lhe1_multiple_tracks_implicit.json @@ -6,15 +6,7 @@ "published": true, "associated_files": [], "features": [ - "Ordinary box", - "FTYP box", - "Movie box", - "normal' order (moov-mdat)", - "track enabled bit", - "track reference", "video track", - "ctts offsets", - "sync table", "avc1 sample entry", "avc3 sample entry", "hev1 sample entry", diff --git a/data/file_features/published/nalu/l-hevc/mhvc_hev1_single_track.json b/data/file_features/published/nalu/l-hevc/mhvc_hev1_single_track.json index 92a37e9..8d587fc 100644 --- a/data/file_features/published/nalu/l-hevc/mhvc_hev1_single_track.json +++ b/data/file_features/published/nalu/l-hevc/mhvc_hev1_single_track.json @@ -6,15 +6,7 @@ "published": true, "associated_files": [], "features": [ - "Ordinary box", - "FTYP box", - "Movie box", - "normal' order (moov-mdat)", - "track enabled bit", - "track reference", "video track", - "ctts offsets", - "sync table", "avc1 sample entry", "avc3 sample entry", "hev1 sample entry", diff --git a/data/file_features/published/nalu/l-hevc/mhvc_hev2_single_track.json b/data/file_features/published/nalu/l-hevc/mhvc_hev2_single_track.json index 6d6ef03..40f170e 100644 --- a/data/file_features/published/nalu/l-hevc/mhvc_hev2_single_track.json +++ b/data/file_features/published/nalu/l-hevc/mhvc_hev2_single_track.json @@ -6,15 +6,7 @@ "published": true, "associated_files": [], "features": [ - "Ordinary box", - "FTYP box", - "Movie box", - "normal' order (moov-mdat)", - "track enabled bit", - "track reference", "video track", - "ctts offsets", - "sync table", "avc1 sample entry", "avc3 sample entry", "hev1 sample entry", diff --git a/data/file_features/published/nalu/l-hevc/mhvc_hvc1_hvc2_multiple_tracks_extractors.json b/data/file_features/published/nalu/l-hevc/mhvc_hvc1_hvc2_multiple_tracks_extractors.json index becc243..f457126 100644 --- a/data/file_features/published/nalu/l-hevc/mhvc_hvc1_hvc2_multiple_tracks_extractors.json +++ b/data/file_features/published/nalu/l-hevc/mhvc_hvc1_hvc2_multiple_tracks_extractors.json @@ -6,15 +6,7 @@ "published": true, "associated_files": [], "features": [ - "Ordinary box", - "FTYP box", - "Movie box", - "normal' order (moov-mdat)", - "track enabled bit", - "track reference", "video track", - "ctts offsets", - "sync table", "avc1 sample entry", "avc3 sample entry", "hev1 sample entry", diff --git a/data/file_features/published/nalu/l-hevc/mhvc_hvc1_lhv1_multiple_tracks_implicit.json b/data/file_features/published/nalu/l-hevc/mhvc_hvc1_lhv1_multiple_tracks_implicit.json index 62b4de5..5c4dd90 100644 --- a/data/file_features/published/nalu/l-hevc/mhvc_hvc1_lhv1_multiple_tracks_implicit.json +++ b/data/file_features/published/nalu/l-hevc/mhvc_hvc1_lhv1_multiple_tracks_implicit.json @@ -6,15 +6,7 @@ "published": true, "associated_files": [], "features": [ - "Ordinary box", - "FTYP box", - "Movie box", - "normal' order (moov-mdat)", - "track enabled bit", - "track reference", "video track", - "ctts offsets", - "sync table", "avc1 sample entry", "avc3 sample entry", "hev1 sample entry", diff --git a/data/file_features/published/nalu/l-hevc/mhvc_hvc1_single_track.json b/data/file_features/published/nalu/l-hevc/mhvc_hvc1_single_track.json index 74d1b0a..61fe0f6 100644 --- a/data/file_features/published/nalu/l-hevc/mhvc_hvc1_single_track.json +++ b/data/file_features/published/nalu/l-hevc/mhvc_hvc1_single_track.json @@ -6,15 +6,7 @@ "published": true, "associated_files": [], "features": [ - "Ordinary box", - "FTYP box", - "Movie box", - "normal' order (moov-mdat)", - "track enabled bit", - "track reference", "video track", - "ctts offsets", - "sync table", "avc1 sample entry", "avc3 sample entry", "hev1 sample entry", diff --git a/data/file_features/published/nalu/l-hevc/mhvc_hvc2_single_track.json b/data/file_features/published/nalu/l-hevc/mhvc_hvc2_single_track.json index 48a1826..b8cfa9d 100644 --- a/data/file_features/published/nalu/l-hevc/mhvc_hvc2_single_track.json +++ b/data/file_features/published/nalu/l-hevc/mhvc_hvc2_single_track.json @@ -6,15 +6,7 @@ "published": true, "associated_files": [], "features": [ - "Ordinary box", - "FTYP box", - "Movie box", - "normal' order (moov-mdat)", - "track enabled bit", - "track reference", "video track", - "ctts offsets", - "sync table", "avc1 sample entry", "avc3 sample entry", "hev1 sample entry", diff --git a/data/file_features/published/nalu/l-hevc/shvc_hev1_hev2_multiple_tracks_extractors.json b/data/file_features/published/nalu/l-hevc/shvc_hev1_hev2_multiple_tracks_extractors.json index 9f30092..977b90e 100644 --- a/data/file_features/published/nalu/l-hevc/shvc_hev1_hev2_multiple_tracks_extractors.json +++ b/data/file_features/published/nalu/l-hevc/shvc_hev1_hev2_multiple_tracks_extractors.json @@ -6,15 +6,7 @@ "published": true, "associated_files": [], "features": [ - "Ordinary box", - "FTYP box", - "Movie box", - "normal' order (moov-mdat)", - "track enabled bit", - "track reference", "video track", - "ctts offsets", - "sync table", "avc1 sample entry", "avc3 sample entry", "hev1 sample entry", diff --git a/data/file_features/published/nalu/l-hevc/shvc_hev1_lhe1_multiple_tracks_implicit.json b/data/file_features/published/nalu/l-hevc/shvc_hev1_lhe1_multiple_tracks_implicit.json index b76327a..0dee954 100644 --- a/data/file_features/published/nalu/l-hevc/shvc_hev1_lhe1_multiple_tracks_implicit.json +++ b/data/file_features/published/nalu/l-hevc/shvc_hev1_lhe1_multiple_tracks_implicit.json @@ -6,15 +6,7 @@ "published": true, "associated_files": [], "features": [ - "Ordinary box", - "FTYP box", - "Movie box", - "normal' order (moov-mdat)", - "track enabled bit", - "track reference", "video track", - "ctts offsets", - "sync table", "avc1 sample entry", "avc3 sample entry", "hev1 sample entry", diff --git a/data/file_features/published/nalu/l-hevc/shvc_hev1_single_track.json b/data/file_features/published/nalu/l-hevc/shvc_hev1_single_track.json index e4003be..46d47c6 100644 --- a/data/file_features/published/nalu/l-hevc/shvc_hev1_single_track.json +++ b/data/file_features/published/nalu/l-hevc/shvc_hev1_single_track.json @@ -6,15 +6,7 @@ "published": true, "associated_files": [], "features": [ - "Ordinary box", - "FTYP box", - "Movie box", - "normal' order (moov-mdat)", - "track enabled bit", - "track reference", "video track", - "ctts offsets", - "sync table", "avc1 sample entry", "avc3 sample entry", "hev1 sample entry", diff --git a/data/file_features/published/nalu/l-hevc/shvc_hev2_single_track.json b/data/file_features/published/nalu/l-hevc/shvc_hev2_single_track.json index 326dd84..489bc26 100644 --- a/data/file_features/published/nalu/l-hevc/shvc_hev2_single_track.json +++ b/data/file_features/published/nalu/l-hevc/shvc_hev2_single_track.json @@ -6,15 +6,7 @@ "published": true, "associated_files": [], "features": [ - "Ordinary box", - "FTYP box", - "Movie box", - "normal' order (moov-mdat)", - "track enabled bit", - "track reference", "video track", - "ctts offsets", - "sync table", "avc1 sample entry", "avc3 sample entry", "hev1 sample entry", diff --git a/data/file_features/published/nalu/l-hevc/shvc_hvc1_hvc2_multiple_tracks_extractors.json b/data/file_features/published/nalu/l-hevc/shvc_hvc1_hvc2_multiple_tracks_extractors.json index dc3db42..b3de825 100644 --- a/data/file_features/published/nalu/l-hevc/shvc_hvc1_hvc2_multiple_tracks_extractors.json +++ b/data/file_features/published/nalu/l-hevc/shvc_hvc1_hvc2_multiple_tracks_extractors.json @@ -6,15 +6,7 @@ "published": true, "associated_files": [], "features": [ - "Ordinary box", - "FTYP box", - "Movie box", - "normal' order (moov-mdat)", - "track enabled bit", - "track reference", "video track", - "ctts offsets", - "sync table", "avc1 sample entry", "avc3 sample entry", "hev1 sample entry", diff --git a/data/file_features/published/nalu/l-hevc/shvc_hvc1_lhv1_multiple_tracks_implicit.json b/data/file_features/published/nalu/l-hevc/shvc_hvc1_lhv1_multiple_tracks_implicit.json index 8476168..deb6cf3 100644 --- a/data/file_features/published/nalu/l-hevc/shvc_hvc1_lhv1_multiple_tracks_implicit.json +++ b/data/file_features/published/nalu/l-hevc/shvc_hvc1_lhv1_multiple_tracks_implicit.json @@ -6,15 +6,7 @@ "published": true, "associated_files": [], "features": [ - "Ordinary box", - "FTYP box", - "Movie box", - "normal' order (moov-mdat)", - "track enabled bit", - "track reference", "video track", - "ctts offsets", - "sync table", "avc1 sample entry", "avc3 sample entry", "hev1 sample entry", diff --git a/data/file_features/published/nalu/l-hevc/shvc_hvc1_single_track.json b/data/file_features/published/nalu/l-hevc/shvc_hvc1_single_track.json index a8119b4..8b195a7 100644 --- a/data/file_features/published/nalu/l-hevc/shvc_hvc1_single_track.json +++ b/data/file_features/published/nalu/l-hevc/shvc_hvc1_single_track.json @@ -6,15 +6,7 @@ "published": true, "associated_files": [], "features": [ - "Ordinary box", - "FTYP box", - "Movie box", - "normal' order (moov-mdat)", - "track enabled bit", - "track reference", "video track", - "ctts offsets", - "sync table", "avc1 sample entry", "avc3 sample entry", "hev1 sample entry", diff --git a/data/file_features/published/nalu/l-hevc/shvc_hvc2_single_track.json b/data/file_features/published/nalu/l-hevc/shvc_hvc2_single_track.json index 0e49c46..7b1d35c 100644 --- a/data/file_features/published/nalu/l-hevc/shvc_hvc2_single_track.json +++ b/data/file_features/published/nalu/l-hevc/shvc_hvc2_single_track.json @@ -6,15 +6,7 @@ "published": true, "associated_files": [], "features": [ - "Ordinary box", - "FTYP box", - "Movie box", - "normal' order (moov-mdat)", - "track enabled bit", - "track reference", "video track", - "ctts offsets", - "sync table", "avc1 sample entry", "avc3 sample entry", "hev1 sample entry", diff --git a/data/standard_features/14496-12/user_defined.json b/data/standard_features/14496-12/user_defined.json index 3b05ed7..3141693 100644 --- a/data/standard_features/14496-12/user_defined.json +++ b/data/standard_features/14496-12/user_defined.json @@ -13,6 +13,8 @@ "RTP hint tracks": "Regular RTP hint tracks are present. They should be ignored for local playback.", "implied length": "(size=0) Box with the length running to end of file (last box)", "unknown box": "A box with an 'unknown' code is present in the file and should be ignored. The box type used for testing could be one of 'junk', 'mess', etc.", + "unknown codec type": "", + "unknown track type": "", "late order": "(mdat first) The 'mdat' first and the 'moov' late, and boxes in the 'moov' in funny order.", "multiple mdats": "two or more mdat boxes are present", "multiple sample descriptions": "There is one track ujsing several sample entries, not just one", From ce5c454bd76fabaa6be3fc8295b6e5fee6f97e9d Mon Sep 17 00:00:00 2001 From: Dimitri Podborski Date: Wed, 30 Aug 2023 19:14:00 -0700 Subject: [PATCH 08/42] feature warnings to errors --- conformance-search/src/types/json.ts | 35 ++++++++++++++++------------ src/construct/coverage.py | 8 ------- src/construct/dictionary.py | 3 --- src/construct/files.py | 13 ++--------- 4 files changed, 22 insertions(+), 37 deletions(-) diff --git a/conformance-search/src/types/json.ts b/conformance-search/src/types/json.ts index 7ac16be..5082370 100644 --- a/conformance-search/src/types/json.ts +++ b/conformance-search/src/types/json.ts @@ -1,14 +1,21 @@ export type Coverage = { + not_found: { + count: number; + percentage: number; + boxes: string[]; + missing_extensions: string[]; + paths: string[]; + }; lists: { boxes: { - covered: Array; - not_covered: Array; - under_consideration: Array; + covered: string[]; + not_covered: string[]; + under_consideration: string[]; }; features: { - covered: Array; - not_covered: Array; - under_consideration: Array; + covered: string[]; + not_covered: string[]; + under_consideration: string[]; }; }; path_file_map: { @@ -28,8 +35,6 @@ export type Coverage = { count: number; published_features: number; under_consideration_features: number; - features_from_spec: number; - features_from_file: number; }; files: { count: number; @@ -39,15 +44,16 @@ export type Coverage = { boxes: { count: number; }; - spec_info: Array<{ + spec_info: { ISO: string; name: string; version: number; date: number; + mp4ra_reference: string[]; link: string; - amendmends?: Array; - corrigenda?: Array; - }>; + amendmends?: string[]; + corrigenda?: string[]; + }[]; }; export type FileMetadata = { @@ -65,8 +71,8 @@ export type FileMetadata = { conforms_to: { ISO: string; version: number; - amendmends?: Array; - corrigenda?: Array; + amendmends?: string[]; + corrigenda?: string[]; }[]; notes: | string @@ -79,7 +85,6 @@ export type FeatureFileMap = { key: string; description: string; spec: string; - added_from_file: "spec" | "file"; files: string[]; }; diff --git a/src/construct/coverage.py b/src/construct/coverage.py index e5160cb..0ad7bf8 100644 --- a/src/construct/coverage.py +++ b/src/construct/coverage.py @@ -57,8 +57,6 @@ def main(): "count": "Total number of features", "published_features": "Number of features that has published files", "under_consideration_features": "Number of features that exclusively has under consideration files", - "features_from_spec": "Number of features that are from the spec", - "features_from_file": "Number of features that are added from files because they were not found in the spec", }, "files": { "count": "Number of files that were submitted", @@ -215,12 +213,6 @@ def main(): and all(["under_consideration" in p for p in f["files"]]) ] ), - "features_from_spec": len( - [f for f in files["feature_file_map"].values() if f["source"] == "spec"] - ), - "features_from_file": len( - [f for f in files["feature_file_map"].values() if f["source"] == "file"] - ), } LISTS = { diff --git a/src/construct/dictionary.py b/src/construct/dictionary.py index c9d66ca..b3879e9 100644 --- a/src/construct/dictionary.py +++ b/src/construct/dictionary.py @@ -22,9 +22,6 @@ def main(): # In case we missed some specs for feature in files["feature_file_map"].values(): - # FIXME: This shouldn't be necessary - if feature["spec"] == "N/A": - continue specs.add(feature["spec"]) # Sort the sets diff --git a/src/construct/files.py b/src/construct/files.py index 3ccaf55..5f0450a 100644 --- a/src/construct/files.py +++ b/src/construct/files.py @@ -213,7 +213,6 @@ def main(): "key": key, "description": value, "spec": spec, - "source": "spec", "files": [], } else: @@ -225,17 +224,9 @@ def main(): if feature in feature_file_map: feature_file_map[feature]["files"].append(path) else: - # FIXME: This should be an error - logger.warning( - f'Feature "{feature}" not found in user_defined.json. Adding a empty entry for now.' + logger.error( + f'Feature "{feature}" not found in standard features. File: {path}' ) - feature_file_map[feature] = { - "key": feature, - "description": "N/A", - "spec": "N/A", - "source": "file", - "files": [path], - } # Sort files for key, value in feature_file_map.items(): From 94afc52dd5ebbb2b61d229e7506e7fb8c1a970ce Mon Sep 17 00:00:00 2001 From: Dimitri Podborski Date: Thu, 31 Aug 2023 14:01:11 -0700 Subject: [PATCH 09/42] rash, tele --- data/file_features/published/3gp/rs_example_r1.json | 1 - data/file_features/published/isobmff/sg-tl-st.json | 6 +----- data/standard_features/14496-12/sample_groups.json | 4 ++-- 3 files changed, 3 insertions(+), 8 deletions(-) diff --git a/data/file_features/published/3gp/rs_example_r1.json b/data/file_features/published/3gp/rs_example_r1.json index b216b4b..c01d0dc 100644 --- a/data/file_features/published/3gp/rs_example_r1.json +++ b/data/file_features/published/3gp/rs_example_r1.json @@ -8,7 +8,6 @@ "features": [ "video track", "audio track", - "rate share group", "Interleaved data", "mp4a sample entry" ], diff --git a/data/file_features/published/isobmff/sg-tl-st.json b/data/file_features/published/isobmff/sg-tl-st.json index 8080a23..0d4d9b2 100644 --- a/data/file_features/published/isobmff/sg-tl-st.json +++ b/data/file_features/published/isobmff/sg-tl-st.json @@ -5,11 +5,7 @@ "version": 1, "published": true, "associated_files": [], - "features": [ - "video track", - "Temporal level sample group", - "layering and subseq grps" - ], + "features": ["video track", "layering and subseq grps"], "notes": "", "license": "", "rel_filepath": "./sg-tl-st.mp4", diff --git a/data/standard_features/14496-12/sample_groups.json b/data/standard_features/14496-12/sample_groups.json index 54dc07a..39d72b8 100644 --- a/data/standard_features/14496-12/sample_groups.json +++ b/data/standard_features/14496-12/sample_groups.json @@ -32,7 +32,7 @@ }, { "fourcc": "rash", - "description": "Rate share", + "description": "Rate share sample group", "containers": ["sgpd"], "type": "SampleGroupDescriptionEntry", "syntax": "class RateShareEntry() extends SampleGroupDescriptionEntry('rash') {\n\tunsigned int(16)\toperation_point_count;\n\tif (operation_point_count == 1) {\n\t\tunsigned int(16)\t\ttarget_rate_share;\n\t}\n\telse {\n\t\tfor (i=0; i < operation_point_count; i++) {\n\t\t\tunsigned int(32)\tavailable_bitrate;\n\t\t\tunsigned int(16)\ttarget_rate_share;\n\t\t}\n\t}\n\tunsigned int(32)\tmaximum_bitrate;\n\tunsigned int(32)\tminimum_bitrate;\n\tunsigned int(8)\tdiscard_priority;\n}" @@ -60,7 +60,7 @@ }, { "fourcc": "tele", - "description": "Temporal Level", + "description": "Temporal level sample group", "containers": ["sgpd"], "type": "VisualSampleGroupEntry", "syntax": "class TemporalLevelEntry() extends VisualSampleGroupEntry('tele')\n{\n\tbit(1)\tlevel_independently_decodable;\n\tbit(7)\treserved=0;\n}" From a9474bbe8daffafdb412c0005cf9bcf0162e65ed Mon Sep 17 00:00:00 2001 From: Dimitri Podborski Date: Thu, 31 Aug 2023 15:31:56 -0700 Subject: [PATCH 10/42] remove redundant feature related to the website bug #58 --- data/file_features/published/isobmff/compact-no-code-fec-1.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/file_features/published/isobmff/compact-no-code-fec-1.json b/data/file_features/published/isobmff/compact-no-code-fec-1.json index 706419d..914c8d1 100644 --- a/data/file_features/published/isobmff/compact-no-code-fec-1.json +++ b/data/file_features/published/isobmff/compact-no-code-fec-1.json @@ -5,7 +5,7 @@ "version": 1, "published": true, "associated_files": [], - "features": ["file-level", "item naming etc.", "FD hint tracks"], + "features": ["item naming etc.", "FD hint tracks"], "notes": "", "license": "", "rel_filepath": "./compact-no-code-fec-1.iso3", From 8b4aa53af442b1a36378bccfc458adfe49fcbec6 Mon Sep 17 00:00:00 2001 From: Dimitri Podborski Date: Thu, 31 Aug 2023 16:04:03 -0700 Subject: [PATCH 11/42] remove redundant features meta location --- .../published/isobmff/05_bifs_video_protected_v2.json | 1 - data/file_features/published/isobmff/12_metas_v2.json | 9 +-------- .../published/isobmff/compact-no-code-fec-2.json | 7 +------ data/file_features/published/isobmff/mbms-fec.json | 1 - 4 files changed, 2 insertions(+), 16 deletions(-) diff --git a/data/file_features/published/isobmff/05_bifs_video_protected_v2.json b/data/file_features/published/isobmff/05_bifs_video_protected_v2.json index f13d35e..0b1a40d 100644 --- a/data/file_features/published/isobmff/05_bifs_video_protected_v2.json +++ b/data/file_features/published/isobmff/05_bifs_video_protected_v2.json @@ -8,7 +8,6 @@ "features": [ "video track", "Protected basic", - "file-level", "item naming", "Systems tracks etc.", "IOD box", diff --git a/data/file_features/published/isobmff/12_metas_v2.json b/data/file_features/published/isobmff/12_metas_v2.json index a611972..d3c34ed 100644 --- a/data/file_features/published/isobmff/12_metas_v2.json +++ b/data/file_features/published/isobmff/12_metas_v2.json @@ -5,14 +5,7 @@ "version": 1, "published": true, "associated_files": [], - "features": [ - "image track (no sync table)", - "file-level", - "movie-level", - "track-level", - "data refs", - "item naming" - ], + "features": ["image track (no sync table)", "data refs", "item naming"], "notes": "", "license": "", "rel_filepath": "./12_metas_v2.mp4", diff --git a/data/file_features/published/isobmff/compact-no-code-fec-2.json b/data/file_features/published/isobmff/compact-no-code-fec-2.json index c5b4664..f13a5ae 100644 --- a/data/file_features/published/isobmff/compact-no-code-fec-2.json +++ b/data/file_features/published/isobmff/compact-no-code-fec-2.json @@ -5,12 +5,7 @@ "version": 1, "published": true, "associated_files": [], - "features": [ - "file-level", - "item naming", - "FD hint tracks", - "FD session group box" - ], + "features": ["item naming", "FD hint tracks", "FD session group box"], "notes": "", "license": "", "rel_filepath": "./compact-no-code-fec-2.iso3", diff --git a/data/file_features/published/isobmff/mbms-fec.json b/data/file_features/published/isobmff/mbms-fec.json index e5d6d89..1a2814b 100644 --- a/data/file_features/published/isobmff/mbms-fec.json +++ b/data/file_features/published/isobmff/mbms-fec.json @@ -6,7 +6,6 @@ "published": true, "associated_files": [], "features": [ - "file-level", "item naming", "FD hint tracks", "FEC reservoir", From 07f1ac83c4c42aa5bd76beb6a17383117ca3c215 Mon Sep 17 00:00:00 2001 From: Dimitri Podborski Date: Thu, 31 Aug 2023 16:10:14 -0700 Subject: [PATCH 12/42] remove redundant features sbas, scal, mfra related --- .../published/isobmff/fragment_random_access-2.json | 7 +------ .../l-hevc/mhvc_hev1_hev2_multiple_tracks_extractors.json | 2 -- .../l-hevc/mhvc_hev1_lhe1_multiple_tracks_implicit.json | 2 -- .../published/nalu/l-hevc/mhvc_hev1_single_track.json | 2 -- .../published/nalu/l-hevc/mhvc_hev2_single_track.json | 2 -- .../l-hevc/mhvc_hvc1_hvc2_multiple_tracks_extractors.json | 2 -- .../l-hevc/mhvc_hvc1_lhv1_multiple_tracks_implicit.json | 2 -- .../published/nalu/l-hevc/mhvc_hvc1_single_track.json | 2 -- .../published/nalu/l-hevc/mhvc_hvc2_single_track.json | 2 -- .../l-hevc/shvc_hev1_hev2_multiple_tracks_extractors.json | 2 -- .../l-hevc/shvc_hev1_lhe1_multiple_tracks_implicit.json | 2 -- .../published/nalu/l-hevc/shvc_hev1_single_track.json | 2 -- .../published/nalu/l-hevc/shvc_hev2_single_track.json | 2 -- .../l-hevc/shvc_hvc1_hvc2_multiple_tracks_extractors.json | 2 -- .../l-hevc/shvc_hvc1_lhv1_multiple_tracks_implicit.json | 2 -- .../published/nalu/l-hevc/shvc_hvc1_single_track.json | 2 -- .../published/nalu/l-hevc/shvc_hvc2_single_track.json | 2 -- 17 files changed, 1 insertion(+), 38 deletions(-) diff --git a/data/file_features/published/isobmff/fragment_random_access-2.json b/data/file_features/published/isobmff/fragment_random_access-2.json index 83e4441..af70a40 100644 --- a/data/file_features/published/isobmff/fragment_random_access-2.json +++ b/data/file_features/published/isobmff/fragment_random_access-2.json @@ -5,12 +5,7 @@ "version": 1, "published": true, "associated_files": [], - "features": [ - "video track", - "mov. Ext header", - "fragment random access", - "mp4v sample entry" - ], + "features": ["video track", "mov. Ext header", "mp4v sample entry"], "notes": "", "license": "", "rel_filepath": "./fragment_random_access-2.mp4", diff --git a/data/file_features/published/nalu/l-hevc/mhvc_hev1_hev2_multiple_tracks_extractors.json b/data/file_features/published/nalu/l-hevc/mhvc_hev1_hev2_multiple_tracks_extractors.json index a11bbc4..b7d775f 100644 --- a/data/file_features/published/nalu/l-hevc/mhvc_hev1_hev2_multiple_tracks_extractors.json +++ b/data/file_features/published/nalu/l-hevc/mhvc_hev1_hev2_multiple_tracks_extractors.json @@ -17,8 +17,6 @@ "lhv1 sample entry", "Extractors", "Implicit Reconstruction", - "sbas track reference", - "scal track reference", "oinf, linf and oref track reference" ], "notes": "", diff --git a/data/file_features/published/nalu/l-hevc/mhvc_hev1_lhe1_multiple_tracks_implicit.json b/data/file_features/published/nalu/l-hevc/mhvc_hev1_lhe1_multiple_tracks_implicit.json index 6cc4d8e..299a283 100644 --- a/data/file_features/published/nalu/l-hevc/mhvc_hev1_lhe1_multiple_tracks_implicit.json +++ b/data/file_features/published/nalu/l-hevc/mhvc_hev1_lhe1_multiple_tracks_implicit.json @@ -17,8 +17,6 @@ "lhv1 sample entry", "Extractors", "Implicit Reconstruction", - "sbas track reference", - "scal track reference", "oinf, linf and oref track reference" ], "notes": "", diff --git a/data/file_features/published/nalu/l-hevc/mhvc_hev1_single_track.json b/data/file_features/published/nalu/l-hevc/mhvc_hev1_single_track.json index 8d587fc..e828e60 100644 --- a/data/file_features/published/nalu/l-hevc/mhvc_hev1_single_track.json +++ b/data/file_features/published/nalu/l-hevc/mhvc_hev1_single_track.json @@ -17,8 +17,6 @@ "lhv1 sample entry", "Extractors", "Implicit Reconstruction", - "sbas track reference", - "scal track reference", "oinf, linf and oref track reference" ], "notes": "", diff --git a/data/file_features/published/nalu/l-hevc/mhvc_hev2_single_track.json b/data/file_features/published/nalu/l-hevc/mhvc_hev2_single_track.json index 40f170e..d7044c0 100644 --- a/data/file_features/published/nalu/l-hevc/mhvc_hev2_single_track.json +++ b/data/file_features/published/nalu/l-hevc/mhvc_hev2_single_track.json @@ -17,8 +17,6 @@ "lhv1 sample entry", "Extractors", "Implicit Reconstruction", - "sbas track reference", - "scal track reference", "oinf, linf and oref track reference" ], "notes": "", diff --git a/data/file_features/published/nalu/l-hevc/mhvc_hvc1_hvc2_multiple_tracks_extractors.json b/data/file_features/published/nalu/l-hevc/mhvc_hvc1_hvc2_multiple_tracks_extractors.json index f457126..fec94b9 100644 --- a/data/file_features/published/nalu/l-hevc/mhvc_hvc1_hvc2_multiple_tracks_extractors.json +++ b/data/file_features/published/nalu/l-hevc/mhvc_hvc1_hvc2_multiple_tracks_extractors.json @@ -17,8 +17,6 @@ "lhv1 sample entry", "Extractors", "Implicit Reconstruction", - "sbas track reference", - "scal track reference", "oinf, linf and oref track reference" ], "notes": "", diff --git a/data/file_features/published/nalu/l-hevc/mhvc_hvc1_lhv1_multiple_tracks_implicit.json b/data/file_features/published/nalu/l-hevc/mhvc_hvc1_lhv1_multiple_tracks_implicit.json index 5c4dd90..78d34da 100644 --- a/data/file_features/published/nalu/l-hevc/mhvc_hvc1_lhv1_multiple_tracks_implicit.json +++ b/data/file_features/published/nalu/l-hevc/mhvc_hvc1_lhv1_multiple_tracks_implicit.json @@ -17,8 +17,6 @@ "lhv1 sample entry", "Extractors", "Implicit Reconstruction", - "sbas track reference", - "scal track reference", "oinf, linf and oref track reference" ], "notes": "", diff --git a/data/file_features/published/nalu/l-hevc/mhvc_hvc1_single_track.json b/data/file_features/published/nalu/l-hevc/mhvc_hvc1_single_track.json index 61fe0f6..3045a00 100644 --- a/data/file_features/published/nalu/l-hevc/mhvc_hvc1_single_track.json +++ b/data/file_features/published/nalu/l-hevc/mhvc_hvc1_single_track.json @@ -17,8 +17,6 @@ "lhv1 sample entry", "Extractors", "Implicit Reconstruction", - "sbas track reference", - "scal track reference", "oinf, linf and oref track reference" ], "notes": "", diff --git a/data/file_features/published/nalu/l-hevc/mhvc_hvc2_single_track.json b/data/file_features/published/nalu/l-hevc/mhvc_hvc2_single_track.json index b8cfa9d..6f37411 100644 --- a/data/file_features/published/nalu/l-hevc/mhvc_hvc2_single_track.json +++ b/data/file_features/published/nalu/l-hevc/mhvc_hvc2_single_track.json @@ -17,8 +17,6 @@ "lhv1 sample entry", "Extractors", "Implicit Reconstruction", - "sbas track reference", - "scal track reference", "oinf, linf and oref track reference" ], "notes": "", diff --git a/data/file_features/published/nalu/l-hevc/shvc_hev1_hev2_multiple_tracks_extractors.json b/data/file_features/published/nalu/l-hevc/shvc_hev1_hev2_multiple_tracks_extractors.json index 977b90e..cefc123 100644 --- a/data/file_features/published/nalu/l-hevc/shvc_hev1_hev2_multiple_tracks_extractors.json +++ b/data/file_features/published/nalu/l-hevc/shvc_hev1_hev2_multiple_tracks_extractors.json @@ -17,8 +17,6 @@ "lhv1 sample entry", "Extractors", "Implicit Reconstruction", - "sbas track reference", - "scal track reference", "oinf, linf and oref track reference" ], "notes": "", diff --git a/data/file_features/published/nalu/l-hevc/shvc_hev1_lhe1_multiple_tracks_implicit.json b/data/file_features/published/nalu/l-hevc/shvc_hev1_lhe1_multiple_tracks_implicit.json index 0dee954..c20b8a8 100644 --- a/data/file_features/published/nalu/l-hevc/shvc_hev1_lhe1_multiple_tracks_implicit.json +++ b/data/file_features/published/nalu/l-hevc/shvc_hev1_lhe1_multiple_tracks_implicit.json @@ -17,8 +17,6 @@ "lhv1 sample entry", "Extractors", "Implicit Reconstruction", - "sbas track reference", - "scal track reference", "oinf, linf and oref track reference" ], "notes": "", diff --git a/data/file_features/published/nalu/l-hevc/shvc_hev1_single_track.json b/data/file_features/published/nalu/l-hevc/shvc_hev1_single_track.json index 46d47c6..ebd801e 100644 --- a/data/file_features/published/nalu/l-hevc/shvc_hev1_single_track.json +++ b/data/file_features/published/nalu/l-hevc/shvc_hev1_single_track.json @@ -17,8 +17,6 @@ "lhv1 sample entry", "Extractors", "Implicit Reconstruction", - "sbas track reference", - "scal track reference", "oinf, linf and oref track reference" ], "notes": "", diff --git a/data/file_features/published/nalu/l-hevc/shvc_hev2_single_track.json b/data/file_features/published/nalu/l-hevc/shvc_hev2_single_track.json index 489bc26..1cf4cbd 100644 --- a/data/file_features/published/nalu/l-hevc/shvc_hev2_single_track.json +++ b/data/file_features/published/nalu/l-hevc/shvc_hev2_single_track.json @@ -17,8 +17,6 @@ "lhv1 sample entry", "Extractors", "Implicit Reconstruction", - "sbas track reference", - "scal track reference", "oinf, linf and oref track reference" ], "notes": "", diff --git a/data/file_features/published/nalu/l-hevc/shvc_hvc1_hvc2_multiple_tracks_extractors.json b/data/file_features/published/nalu/l-hevc/shvc_hvc1_hvc2_multiple_tracks_extractors.json index b3de825..900ac6e 100644 --- a/data/file_features/published/nalu/l-hevc/shvc_hvc1_hvc2_multiple_tracks_extractors.json +++ b/data/file_features/published/nalu/l-hevc/shvc_hvc1_hvc2_multiple_tracks_extractors.json @@ -17,8 +17,6 @@ "lhv1 sample entry", "Extractors", "Implicit Reconstruction", - "sbas track reference", - "scal track reference", "oinf, linf and oref track reference" ], "notes": "", diff --git a/data/file_features/published/nalu/l-hevc/shvc_hvc1_lhv1_multiple_tracks_implicit.json b/data/file_features/published/nalu/l-hevc/shvc_hvc1_lhv1_multiple_tracks_implicit.json index deb6cf3..f32574e 100644 --- a/data/file_features/published/nalu/l-hevc/shvc_hvc1_lhv1_multiple_tracks_implicit.json +++ b/data/file_features/published/nalu/l-hevc/shvc_hvc1_lhv1_multiple_tracks_implicit.json @@ -17,8 +17,6 @@ "lhv1 sample entry", "Extractors", "Implicit Reconstruction", - "sbas track reference", - "scal track reference", "oinf, linf and oref track reference" ], "notes": "", diff --git a/data/file_features/published/nalu/l-hevc/shvc_hvc1_single_track.json b/data/file_features/published/nalu/l-hevc/shvc_hvc1_single_track.json index 8b195a7..3831aa9 100644 --- a/data/file_features/published/nalu/l-hevc/shvc_hvc1_single_track.json +++ b/data/file_features/published/nalu/l-hevc/shvc_hvc1_single_track.json @@ -17,8 +17,6 @@ "lhv1 sample entry", "Extractors", "Implicit Reconstruction", - "sbas track reference", - "scal track reference", "oinf, linf and oref track reference" ], "notes": "", diff --git a/data/file_features/published/nalu/l-hevc/shvc_hvc2_single_track.json b/data/file_features/published/nalu/l-hevc/shvc_hvc2_single_track.json index 7b1d35c..3a0e858 100644 --- a/data/file_features/published/nalu/l-hevc/shvc_hvc2_single_track.json +++ b/data/file_features/published/nalu/l-hevc/shvc_hvc2_single_track.json @@ -17,8 +17,6 @@ "lhv1 sample entry", "Extractors", "Implicit Reconstruction", - "sbas track reference", - "scal track reference", "oinf, linf and oref track reference" ], "notes": "", From 731c61474a2aee948347118ae1583878e68b5cbb Mon Sep 17 00:00:00 2001 From: Dimitri Podborski Date: Thu, 31 Aug 2023 17:15:59 -0700 Subject: [PATCH 13/42] remove redundant features sample entry related fix #59 --- data/file_features/published/nalu/hevc/alst_hvc1.json | 6 +----- .../nalu/hevc/hevc_tiles_multiple_tracks.json | 10 +--------- .../hevc/hevc_tiles_multiple_tracks_empty_base.json | 10 +--------- .../nalu/hevc/hevc_tiles_single_track_nalm.json | 10 +--------- .../hevc/hevc_tiles_single_track_nalm_all_intra.json | 10 +--------- .../nalu/hevc/hevc_tiles_single_track_nalm_rle.json | 10 +--------- .../hevc_tiles_single_track_trif_full_picture.json | 10 +--------- .../published/nalu/hevc/hvc2_extractors.json | 7 +------ .../mhvc_hev1_hev2_multiple_tracks_extractors.json | 8 -------- .../mhvc_hev1_lhe1_multiple_tracks_implicit.json | 8 -------- .../published/nalu/l-hevc/mhvc_hev1_single_track.json | 8 -------- .../published/nalu/l-hevc/mhvc_hev2_single_track.json | 8 -------- .../mhvc_hvc1_hvc2_multiple_tracks_extractors.json | 8 -------- .../mhvc_hvc1_lhv1_multiple_tracks_implicit.json | 8 -------- .../published/nalu/l-hevc/mhvc_hvc1_single_track.json | 8 -------- .../published/nalu/l-hevc/mhvc_hvc2_single_track.json | 8 -------- .../shvc_hev1_hev2_multiple_tracks_extractors.json | 8 -------- .../shvc_hev1_lhe1_multiple_tracks_implicit.json | 8 -------- .../published/nalu/l-hevc/shvc_hev1_single_track.json | 8 -------- .../published/nalu/l-hevc/shvc_hev2_single_track.json | 8 -------- .../shvc_hvc1_hvc2_multiple_tracks_extractors.json | 8 -------- .../shvc_hvc1_lhv1_multiple_tracks_implicit.json | 8 -------- .../published/nalu/l-hevc/shvc_hvc1_single_track.json | 8 -------- .../published/nalu/l-hevc/shvc_hvc2_single_track.json | 8 -------- data/standard_features/14496-15/codecs.json | 7 +++++++ 25 files changed, 15 insertions(+), 193 deletions(-) diff --git a/data/file_features/published/nalu/hevc/alst_hvc1.json b/data/file_features/published/nalu/hevc/alst_hvc1.json index c41aa4e..573aa24 100644 --- a/data/file_features/published/nalu/hevc/alst_hvc1.json +++ b/data/file_features/published/nalu/hevc/alst_hvc1.json @@ -5,11 +5,7 @@ "version": 1, "published": true, "associated_files": [], - "features": [ - "Alt. startup properties and sample group", - "RAP sample group", - "hvc1 sample entry" - ], + "features": ["Alt. startup properties and sample group", "RAP sample group"], "notes": "", "license": "", "rel_filepath": "./alst_hvc1.mp4", diff --git a/data/file_features/published/nalu/hevc/hevc_tiles_multiple_tracks.json b/data/file_features/published/nalu/hevc/hevc_tiles_multiple_tracks.json index 8a0dfa3..d913809 100644 --- a/data/file_features/published/nalu/hevc/hevc_tiles_multiple_tracks.json +++ b/data/file_features/published/nalu/hevc/hevc_tiles_multiple_tracks.json @@ -5,15 +5,7 @@ "version": 1, "published": true, "associated_files": [], - "features": [ - "video track", - "hev1 sample entry", - "hvc1 sample entry", - "hev2 sample entry", - "hvc2 sample entry", - "hvt1 sample entry", - "tbas and sabt track reference" - ], + "features": ["video track", "tbas and sabt track reference"], "notes": "", "license": "", "rel_filepath": "./hevc_tiles_multiple_tracks.mp4", diff --git a/data/file_features/published/nalu/hevc/hevc_tiles_multiple_tracks_empty_base.json b/data/file_features/published/nalu/hevc/hevc_tiles_multiple_tracks_empty_base.json index 0f0696c..2fc105c 100644 --- a/data/file_features/published/nalu/hevc/hevc_tiles_multiple_tracks_empty_base.json +++ b/data/file_features/published/nalu/hevc/hevc_tiles_multiple_tracks_empty_base.json @@ -5,15 +5,7 @@ "version": 1, "published": true, "associated_files": [], - "features": [ - "video track", - "hev1 sample entry", - "hvc1 sample entry", - "hev2 sample entry", - "hvc2 sample entry", - "hvt1 sample entry", - "tbas and sabt track reference" - ], + "features": ["video track", "tbas and sabt track reference"], "notes": "", "license": "", "rel_filepath": "./hevc_tiles_multiple_tracks_empty_base.mp4", diff --git a/data/file_features/published/nalu/hevc/hevc_tiles_single_track_nalm.json b/data/file_features/published/nalu/hevc/hevc_tiles_single_track_nalm.json index 24d2bf7..6fa3944 100644 --- a/data/file_features/published/nalu/hevc/hevc_tiles_single_track_nalm.json +++ b/data/file_features/published/nalu/hevc/hevc_tiles_single_track_nalm.json @@ -5,15 +5,7 @@ "version": 1, "published": true, "associated_files": [], - "features": [ - "video track", - "hev1 sample entry", - "hvc1 sample entry", - "hev2 sample entry", - "hvc2 sample entry", - "hvt1 sample entry", - "tbas and sabt track reference" - ], + "features": ["video track", "tbas and sabt track reference"], "notes": "", "license": "", "rel_filepath": "./hevc_tiles_single_track_nalm.mp4", diff --git a/data/file_features/published/nalu/hevc/hevc_tiles_single_track_nalm_all_intra.json b/data/file_features/published/nalu/hevc/hevc_tiles_single_track_nalm_all_intra.json index b510e55..a05324d 100644 --- a/data/file_features/published/nalu/hevc/hevc_tiles_single_track_nalm_all_intra.json +++ b/data/file_features/published/nalu/hevc/hevc_tiles_single_track_nalm_all_intra.json @@ -5,15 +5,7 @@ "version": 1, "published": true, "associated_files": [], - "features": [ - "video track", - "hev1 sample entry", - "hvc1 sample entry", - "hev2 sample entry", - "hvc2 sample entry", - "hvt1 sample entry", - "tbas and sabt track reference" - ], + "features": ["video track", "tbas and sabt track reference"], "notes": "", "license": "", "rel_filepath": "./hevc_tiles_single_track_nalm_all_intra.mp4", diff --git a/data/file_features/published/nalu/hevc/hevc_tiles_single_track_nalm_rle.json b/data/file_features/published/nalu/hevc/hevc_tiles_single_track_nalm_rle.json index 1616d64..b8e0b51 100644 --- a/data/file_features/published/nalu/hevc/hevc_tiles_single_track_nalm_rle.json +++ b/data/file_features/published/nalu/hevc/hevc_tiles_single_track_nalm_rle.json @@ -5,15 +5,7 @@ "version": 1, "published": true, "associated_files": [], - "features": [ - "video track", - "hev1 sample entry", - "hvc1 sample entry", - "hev2 sample entry", - "hvc2 sample entry", - "hvt1 sample entry", - "tbas and sabt track reference" - ], + "features": ["video track", "tbas and sabt track reference"], "notes": "", "license": "", "rel_filepath": "./hevc_tiles_single_track_nalm_rle.mp4", diff --git a/data/file_features/published/nalu/hevc/hevc_tiles_single_track_trif_full_picture.json b/data/file_features/published/nalu/hevc/hevc_tiles_single_track_trif_full_picture.json index dfafd21..7d4d424 100644 --- a/data/file_features/published/nalu/hevc/hevc_tiles_single_track_trif_full_picture.json +++ b/data/file_features/published/nalu/hevc/hevc_tiles_single_track_trif_full_picture.json @@ -5,15 +5,7 @@ "version": 1, "published": true, "associated_files": [], - "features": [ - "video track", - "hev1 sample entry", - "hvc1 sample entry", - "hev2 sample entry", - "hvc2 sample entry", - "hvt1 sample entry", - "tbas and sabt track reference" - ], + "features": ["video track", "tbas and sabt track reference"], "notes": "", "license": "", "rel_filepath": "./hevc_tiles_single_track_trif_full_picture.mp4", diff --git a/data/file_features/published/nalu/hevc/hvc2_extractors.json b/data/file_features/published/nalu/hevc/hvc2_extractors.json index 40e3a3d..f6a4c55 100644 --- a/data/file_features/published/nalu/hevc/hvc2_extractors.json +++ b/data/file_features/published/nalu/hevc/hvc2_extractors.json @@ -5,12 +5,7 @@ "version": 1, "published": true, "associated_files": [], - "features": [ - "video track", - "hvc1 sample entry", - "hvc2 sample entry", - "Extractors" - ], + "features": ["video track", "Extractors"], "notes": "", "license": "", "rel_filepath": "./hvc2_extractors.mp4", diff --git a/data/file_features/published/nalu/l-hevc/mhvc_hev1_hev2_multiple_tracks_extractors.json b/data/file_features/published/nalu/l-hevc/mhvc_hev1_hev2_multiple_tracks_extractors.json index b7d775f..8670524 100644 --- a/data/file_features/published/nalu/l-hevc/mhvc_hev1_hev2_multiple_tracks_extractors.json +++ b/data/file_features/published/nalu/l-hevc/mhvc_hev1_hev2_multiple_tracks_extractors.json @@ -7,14 +7,6 @@ "associated_files": [], "features": [ "video track", - "avc1 sample entry", - "avc3 sample entry", - "hev1 sample entry", - "hvc1 sample entry", - "hev2 sample entry", - "hvc2 sample entry", - "lhe1 sample entry", - "lhv1 sample entry", "Extractors", "Implicit Reconstruction", "oinf, linf and oref track reference" diff --git a/data/file_features/published/nalu/l-hevc/mhvc_hev1_lhe1_multiple_tracks_implicit.json b/data/file_features/published/nalu/l-hevc/mhvc_hev1_lhe1_multiple_tracks_implicit.json index 299a283..e806966 100644 --- a/data/file_features/published/nalu/l-hevc/mhvc_hev1_lhe1_multiple_tracks_implicit.json +++ b/data/file_features/published/nalu/l-hevc/mhvc_hev1_lhe1_multiple_tracks_implicit.json @@ -7,14 +7,6 @@ "associated_files": [], "features": [ "video track", - "avc1 sample entry", - "avc3 sample entry", - "hev1 sample entry", - "hvc1 sample entry", - "hev2 sample entry", - "hvc2 sample entry", - "lhe1 sample entry", - "lhv1 sample entry", "Extractors", "Implicit Reconstruction", "oinf, linf and oref track reference" diff --git a/data/file_features/published/nalu/l-hevc/mhvc_hev1_single_track.json b/data/file_features/published/nalu/l-hevc/mhvc_hev1_single_track.json index e828e60..ad7d78f 100644 --- a/data/file_features/published/nalu/l-hevc/mhvc_hev1_single_track.json +++ b/data/file_features/published/nalu/l-hevc/mhvc_hev1_single_track.json @@ -7,14 +7,6 @@ "associated_files": [], "features": [ "video track", - "avc1 sample entry", - "avc3 sample entry", - "hev1 sample entry", - "hvc1 sample entry", - "hev2 sample entry", - "hvc2 sample entry", - "lhe1 sample entry", - "lhv1 sample entry", "Extractors", "Implicit Reconstruction", "oinf, linf and oref track reference" diff --git a/data/file_features/published/nalu/l-hevc/mhvc_hev2_single_track.json b/data/file_features/published/nalu/l-hevc/mhvc_hev2_single_track.json index d7044c0..7728fce 100644 --- a/data/file_features/published/nalu/l-hevc/mhvc_hev2_single_track.json +++ b/data/file_features/published/nalu/l-hevc/mhvc_hev2_single_track.json @@ -7,14 +7,6 @@ "associated_files": [], "features": [ "video track", - "avc1 sample entry", - "avc3 sample entry", - "hev1 sample entry", - "hvc1 sample entry", - "hev2 sample entry", - "hvc2 sample entry", - "lhe1 sample entry", - "lhv1 sample entry", "Extractors", "Implicit Reconstruction", "oinf, linf and oref track reference" diff --git a/data/file_features/published/nalu/l-hevc/mhvc_hvc1_hvc2_multiple_tracks_extractors.json b/data/file_features/published/nalu/l-hevc/mhvc_hvc1_hvc2_multiple_tracks_extractors.json index fec94b9..5a17e7a 100644 --- a/data/file_features/published/nalu/l-hevc/mhvc_hvc1_hvc2_multiple_tracks_extractors.json +++ b/data/file_features/published/nalu/l-hevc/mhvc_hvc1_hvc2_multiple_tracks_extractors.json @@ -7,14 +7,6 @@ "associated_files": [], "features": [ "video track", - "avc1 sample entry", - "avc3 sample entry", - "hev1 sample entry", - "hvc1 sample entry", - "hev2 sample entry", - "hvc2 sample entry", - "lhe1 sample entry", - "lhv1 sample entry", "Extractors", "Implicit Reconstruction", "oinf, linf and oref track reference" diff --git a/data/file_features/published/nalu/l-hevc/mhvc_hvc1_lhv1_multiple_tracks_implicit.json b/data/file_features/published/nalu/l-hevc/mhvc_hvc1_lhv1_multiple_tracks_implicit.json index 78d34da..968e748 100644 --- a/data/file_features/published/nalu/l-hevc/mhvc_hvc1_lhv1_multiple_tracks_implicit.json +++ b/data/file_features/published/nalu/l-hevc/mhvc_hvc1_lhv1_multiple_tracks_implicit.json @@ -7,14 +7,6 @@ "associated_files": [], "features": [ "video track", - "avc1 sample entry", - "avc3 sample entry", - "hev1 sample entry", - "hvc1 sample entry", - "hev2 sample entry", - "hvc2 sample entry", - "lhe1 sample entry", - "lhv1 sample entry", "Extractors", "Implicit Reconstruction", "oinf, linf and oref track reference" diff --git a/data/file_features/published/nalu/l-hevc/mhvc_hvc1_single_track.json b/data/file_features/published/nalu/l-hevc/mhvc_hvc1_single_track.json index 3045a00..eea6683 100644 --- a/data/file_features/published/nalu/l-hevc/mhvc_hvc1_single_track.json +++ b/data/file_features/published/nalu/l-hevc/mhvc_hvc1_single_track.json @@ -7,14 +7,6 @@ "associated_files": [], "features": [ "video track", - "avc1 sample entry", - "avc3 sample entry", - "hev1 sample entry", - "hvc1 sample entry", - "hev2 sample entry", - "hvc2 sample entry", - "lhe1 sample entry", - "lhv1 sample entry", "Extractors", "Implicit Reconstruction", "oinf, linf and oref track reference" diff --git a/data/file_features/published/nalu/l-hevc/mhvc_hvc2_single_track.json b/data/file_features/published/nalu/l-hevc/mhvc_hvc2_single_track.json index 6f37411..d0f1688 100644 --- a/data/file_features/published/nalu/l-hevc/mhvc_hvc2_single_track.json +++ b/data/file_features/published/nalu/l-hevc/mhvc_hvc2_single_track.json @@ -7,14 +7,6 @@ "associated_files": [], "features": [ "video track", - "avc1 sample entry", - "avc3 sample entry", - "hev1 sample entry", - "hvc1 sample entry", - "hev2 sample entry", - "hvc2 sample entry", - "lhe1 sample entry", - "lhv1 sample entry", "Extractors", "Implicit Reconstruction", "oinf, linf and oref track reference" diff --git a/data/file_features/published/nalu/l-hevc/shvc_hev1_hev2_multiple_tracks_extractors.json b/data/file_features/published/nalu/l-hevc/shvc_hev1_hev2_multiple_tracks_extractors.json index cefc123..a2de463 100644 --- a/data/file_features/published/nalu/l-hevc/shvc_hev1_hev2_multiple_tracks_extractors.json +++ b/data/file_features/published/nalu/l-hevc/shvc_hev1_hev2_multiple_tracks_extractors.json @@ -7,14 +7,6 @@ "associated_files": [], "features": [ "video track", - "avc1 sample entry", - "avc3 sample entry", - "hev1 sample entry", - "hvc1 sample entry", - "hev2 sample entry", - "hvc2 sample entry", - "lhe1 sample entry", - "lhv1 sample entry", "Extractors", "Implicit Reconstruction", "oinf, linf and oref track reference" diff --git a/data/file_features/published/nalu/l-hevc/shvc_hev1_lhe1_multiple_tracks_implicit.json b/data/file_features/published/nalu/l-hevc/shvc_hev1_lhe1_multiple_tracks_implicit.json index c20b8a8..b798ce9 100644 --- a/data/file_features/published/nalu/l-hevc/shvc_hev1_lhe1_multiple_tracks_implicit.json +++ b/data/file_features/published/nalu/l-hevc/shvc_hev1_lhe1_multiple_tracks_implicit.json @@ -7,14 +7,6 @@ "associated_files": [], "features": [ "video track", - "avc1 sample entry", - "avc3 sample entry", - "hev1 sample entry", - "hvc1 sample entry", - "hev2 sample entry", - "hvc2 sample entry", - "lhe1 sample entry", - "lhv1 sample entry", "Extractors", "Implicit Reconstruction", "oinf, linf and oref track reference" diff --git a/data/file_features/published/nalu/l-hevc/shvc_hev1_single_track.json b/data/file_features/published/nalu/l-hevc/shvc_hev1_single_track.json index ebd801e..aba835b 100644 --- a/data/file_features/published/nalu/l-hevc/shvc_hev1_single_track.json +++ b/data/file_features/published/nalu/l-hevc/shvc_hev1_single_track.json @@ -7,14 +7,6 @@ "associated_files": [], "features": [ "video track", - "avc1 sample entry", - "avc3 sample entry", - "hev1 sample entry", - "hvc1 sample entry", - "hev2 sample entry", - "hvc2 sample entry", - "lhe1 sample entry", - "lhv1 sample entry", "Extractors", "Implicit Reconstruction", "oinf, linf and oref track reference" diff --git a/data/file_features/published/nalu/l-hevc/shvc_hev2_single_track.json b/data/file_features/published/nalu/l-hevc/shvc_hev2_single_track.json index 1cf4cbd..2d94156 100644 --- a/data/file_features/published/nalu/l-hevc/shvc_hev2_single_track.json +++ b/data/file_features/published/nalu/l-hevc/shvc_hev2_single_track.json @@ -7,14 +7,6 @@ "associated_files": [], "features": [ "video track", - "avc1 sample entry", - "avc3 sample entry", - "hev1 sample entry", - "hvc1 sample entry", - "hev2 sample entry", - "hvc2 sample entry", - "lhe1 sample entry", - "lhv1 sample entry", "Extractors", "Implicit Reconstruction", "oinf, linf and oref track reference" diff --git a/data/file_features/published/nalu/l-hevc/shvc_hvc1_hvc2_multiple_tracks_extractors.json b/data/file_features/published/nalu/l-hevc/shvc_hvc1_hvc2_multiple_tracks_extractors.json index 900ac6e..8251fef 100644 --- a/data/file_features/published/nalu/l-hevc/shvc_hvc1_hvc2_multiple_tracks_extractors.json +++ b/data/file_features/published/nalu/l-hevc/shvc_hvc1_hvc2_multiple_tracks_extractors.json @@ -7,14 +7,6 @@ "associated_files": [], "features": [ "video track", - "avc1 sample entry", - "avc3 sample entry", - "hev1 sample entry", - "hvc1 sample entry", - "hev2 sample entry", - "hvc2 sample entry", - "lhe1 sample entry", - "lhv1 sample entry", "Extractors", "Implicit Reconstruction", "oinf, linf and oref track reference" diff --git a/data/file_features/published/nalu/l-hevc/shvc_hvc1_lhv1_multiple_tracks_implicit.json b/data/file_features/published/nalu/l-hevc/shvc_hvc1_lhv1_multiple_tracks_implicit.json index f32574e..0983835 100644 --- a/data/file_features/published/nalu/l-hevc/shvc_hvc1_lhv1_multiple_tracks_implicit.json +++ b/data/file_features/published/nalu/l-hevc/shvc_hvc1_lhv1_multiple_tracks_implicit.json @@ -7,14 +7,6 @@ "associated_files": [], "features": [ "video track", - "avc1 sample entry", - "avc3 sample entry", - "hev1 sample entry", - "hvc1 sample entry", - "hev2 sample entry", - "hvc2 sample entry", - "lhe1 sample entry", - "lhv1 sample entry", "Extractors", "Implicit Reconstruction", "oinf, linf and oref track reference" diff --git a/data/file_features/published/nalu/l-hevc/shvc_hvc1_single_track.json b/data/file_features/published/nalu/l-hevc/shvc_hvc1_single_track.json index 3831aa9..bd31652 100644 --- a/data/file_features/published/nalu/l-hevc/shvc_hvc1_single_track.json +++ b/data/file_features/published/nalu/l-hevc/shvc_hvc1_single_track.json @@ -7,14 +7,6 @@ "associated_files": [], "features": [ "video track", - "avc1 sample entry", - "avc3 sample entry", - "hev1 sample entry", - "hvc1 sample entry", - "hev2 sample entry", - "hvc2 sample entry", - "lhe1 sample entry", - "lhv1 sample entry", "Extractors", "Implicit Reconstruction", "oinf, linf and oref track reference" diff --git a/data/file_features/published/nalu/l-hevc/shvc_hvc2_single_track.json b/data/file_features/published/nalu/l-hevc/shvc_hvc2_single_track.json index 3a0e858..4f45d82 100644 --- a/data/file_features/published/nalu/l-hevc/shvc_hvc2_single_track.json +++ b/data/file_features/published/nalu/l-hevc/shvc_hvc2_single_track.json @@ -7,14 +7,6 @@ "associated_files": [], "features": [ "video track", - "avc1 sample entry", - "avc3 sample entry", - "hev1 sample entry", - "hvc1 sample entry", - "hev2 sample entry", - "hvc2 sample entry", - "lhe1 sample entry", - "lhv1 sample entry", "Extractors", "Implicit Reconstruction", "oinf, linf and oref track reference" diff --git a/data/standard_features/14496-15/codecs.json b/data/standard_features/14496-15/codecs.json index bff97db..02b1769 100644 --- a/data/standard_features/14496-15/codecs.json +++ b/data/standard_features/14496-15/codecs.json @@ -246,6 +246,13 @@ "type": "A3DSampleEntry", "containers": ["stsd"], "syntax": "class A3DSampleEntry() extends VisualSampleEntry ('a3d4') {\r\n\tA3DConfigurationBox\ta3dconfig;\t\t// mandatory\r\n\tMVDScalabilityInformationSEIBox\tmvdscalinfosei;\t// optional\r\n\tViewIdentifierBox\tview_identifiers;\t\t// mandatory\r\n\tMPEG4ExtensionDescriptorsBox descr;\t\t// optional\tIntrinsicCameraParametersBox\tintrinsic_camera_params;\t// optional\r\n\tExtrinsicCameraParametersBox\textrinsic_camera_params\t// optional\r\n}" + }, + { + "fourcc": "hvt1", + "description": "HEVC tile track", + "type": "VisualSampleEntry", + "containers": ["stsd"], + "syntax": "class HEVCTileSampleEntry() extends VisualSampleEntry ('hvt1'){\r\n\tHEVCTileConfigurationBox\tconfig(); // optional\r\n}" } ] } From 3c01854328ae8a435e8af650ebdbb478a0861233 Mon Sep 17 00:00:00 2001 From: Dimitri Podborski Date: Thu, 31 Aug 2023 17:33:29 -0700 Subject: [PATCH 14/42] image track fix --- data/file_features/published/isobmff/02_dref_edts_img.json | 2 +- data/file_features/published/isobmff/12_metas_v2.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/data/file_features/published/isobmff/02_dref_edts_img.json b/data/file_features/published/isobmff/02_dref_edts_img.json index d51cf43..9b80693 100644 --- a/data/file_features/published/isobmff/02_dref_edts_img.json +++ b/data/file_features/published/isobmff/02_dref_edts_img.json @@ -7,7 +7,7 @@ "associated_files": [], "features": [ "audio track", - "image track (no sync table)", + "image track", "data ref to other file", "compact stz2", "Interleaved data", diff --git a/data/file_features/published/isobmff/12_metas_v2.json b/data/file_features/published/isobmff/12_metas_v2.json index d3c34ed..c26b794 100644 --- a/data/file_features/published/isobmff/12_metas_v2.json +++ b/data/file_features/published/isobmff/12_metas_v2.json @@ -5,7 +5,7 @@ "version": 1, "published": true, "associated_files": [], - "features": ["image track (no sync table)", "data refs", "item naming"], + "features": ["image track", "data refs", "item naming"], "notes": "", "license": "", "rel_filepath": "./12_metas_v2.mp4", From 5f00ac43f1ae3236a917bbba750044b63e114528 Mon Sep 17 00:00:00 2001 From: Dimitri Podborski Date: Thu, 31 Aug 2023 17:36:07 -0700 Subject: [PATCH 15/42] oinf, linf and oref track reference. fix #60 --- .../l-hevc/mhvc_hev1_hev2_multiple_tracks_extractors.json | 7 +------ .../l-hevc/mhvc_hev1_lhe1_multiple_tracks_implicit.json | 7 +------ .../published/nalu/l-hevc/mhvc_hev1_single_track.json | 7 +------ .../published/nalu/l-hevc/mhvc_hev2_single_track.json | 7 +------ .../l-hevc/mhvc_hvc1_hvc2_multiple_tracks_extractors.json | 7 +------ .../l-hevc/mhvc_hvc1_lhv1_multiple_tracks_implicit.json | 7 +------ .../published/nalu/l-hevc/mhvc_hvc1_single_track.json | 7 +------ .../published/nalu/l-hevc/mhvc_hvc2_single_track.json | 7 +------ .../l-hevc/shvc_hev1_hev2_multiple_tracks_extractors.json | 7 +------ .../l-hevc/shvc_hev1_lhe1_multiple_tracks_implicit.json | 7 +------ .../published/nalu/l-hevc/shvc_hev1_single_track.json | 7 +------ .../published/nalu/l-hevc/shvc_hev2_single_track.json | 7 +------ .../l-hevc/shvc_hvc1_hvc2_multiple_tracks_extractors.json | 7 +------ .../l-hevc/shvc_hvc1_lhv1_multiple_tracks_implicit.json | 7 +------ .../published/nalu/l-hevc/shvc_hvc1_single_track.json | 7 +------ .../published/nalu/l-hevc/shvc_hvc2_single_track.json | 7 +------ 16 files changed, 16 insertions(+), 96 deletions(-) diff --git a/data/file_features/published/nalu/l-hevc/mhvc_hev1_hev2_multiple_tracks_extractors.json b/data/file_features/published/nalu/l-hevc/mhvc_hev1_hev2_multiple_tracks_extractors.json index 8670524..67e59c3 100644 --- a/data/file_features/published/nalu/l-hevc/mhvc_hev1_hev2_multiple_tracks_extractors.json +++ b/data/file_features/published/nalu/l-hevc/mhvc_hev1_hev2_multiple_tracks_extractors.json @@ -5,12 +5,7 @@ "version": 1, "published": true, "associated_files": [], - "features": [ - "video track", - "Extractors", - "Implicit Reconstruction", - "oinf, linf and oref track reference" - ], + "features": ["video track", "Extractors", "Implicit Reconstruction"], "notes": "", "license": "", "rel_filepath": "./mhvc_hev1_hev2_multiple_tracks_extractors.mp4", diff --git a/data/file_features/published/nalu/l-hevc/mhvc_hev1_lhe1_multiple_tracks_implicit.json b/data/file_features/published/nalu/l-hevc/mhvc_hev1_lhe1_multiple_tracks_implicit.json index e806966..12b585e 100644 --- a/data/file_features/published/nalu/l-hevc/mhvc_hev1_lhe1_multiple_tracks_implicit.json +++ b/data/file_features/published/nalu/l-hevc/mhvc_hev1_lhe1_multiple_tracks_implicit.json @@ -5,12 +5,7 @@ "version": 1, "published": true, "associated_files": [], - "features": [ - "video track", - "Extractors", - "Implicit Reconstruction", - "oinf, linf and oref track reference" - ], + "features": ["video track", "Extractors", "Implicit Reconstruction"], "notes": "", "license": "", "rel_filepath": "./mhvc_hev1_lhe1_multiple_tracks_implicit.mp4", diff --git a/data/file_features/published/nalu/l-hevc/mhvc_hev1_single_track.json b/data/file_features/published/nalu/l-hevc/mhvc_hev1_single_track.json index ad7d78f..611c326 100644 --- a/data/file_features/published/nalu/l-hevc/mhvc_hev1_single_track.json +++ b/data/file_features/published/nalu/l-hevc/mhvc_hev1_single_track.json @@ -5,12 +5,7 @@ "version": 1, "published": true, "associated_files": [], - "features": [ - "video track", - "Extractors", - "Implicit Reconstruction", - "oinf, linf and oref track reference" - ], + "features": ["video track", "Extractors", "Implicit Reconstruction"], "notes": "", "license": "", "rel_filepath": "./mhvc_hev1_single_track.mp4", diff --git a/data/file_features/published/nalu/l-hevc/mhvc_hev2_single_track.json b/data/file_features/published/nalu/l-hevc/mhvc_hev2_single_track.json index 7728fce..d338b7f 100644 --- a/data/file_features/published/nalu/l-hevc/mhvc_hev2_single_track.json +++ b/data/file_features/published/nalu/l-hevc/mhvc_hev2_single_track.json @@ -5,12 +5,7 @@ "version": 1, "published": true, "associated_files": [], - "features": [ - "video track", - "Extractors", - "Implicit Reconstruction", - "oinf, linf and oref track reference" - ], + "features": ["video track", "Extractors", "Implicit Reconstruction"], "notes": "", "license": "", "rel_filepath": "./mhvc_hev2_single_track.mp4", diff --git a/data/file_features/published/nalu/l-hevc/mhvc_hvc1_hvc2_multiple_tracks_extractors.json b/data/file_features/published/nalu/l-hevc/mhvc_hvc1_hvc2_multiple_tracks_extractors.json index 5a17e7a..63b0c79 100644 --- a/data/file_features/published/nalu/l-hevc/mhvc_hvc1_hvc2_multiple_tracks_extractors.json +++ b/data/file_features/published/nalu/l-hevc/mhvc_hvc1_hvc2_multiple_tracks_extractors.json @@ -5,12 +5,7 @@ "version": 1, "published": true, "associated_files": [], - "features": [ - "video track", - "Extractors", - "Implicit Reconstruction", - "oinf, linf and oref track reference" - ], + "features": ["video track", "Extractors", "Implicit Reconstruction"], "notes": "", "license": "", "rel_filepath": "./mhvc_hvc1_hvc2_multiple_tracks_extractors.mp4", diff --git a/data/file_features/published/nalu/l-hevc/mhvc_hvc1_lhv1_multiple_tracks_implicit.json b/data/file_features/published/nalu/l-hevc/mhvc_hvc1_lhv1_multiple_tracks_implicit.json index 968e748..435d598 100644 --- a/data/file_features/published/nalu/l-hevc/mhvc_hvc1_lhv1_multiple_tracks_implicit.json +++ b/data/file_features/published/nalu/l-hevc/mhvc_hvc1_lhv1_multiple_tracks_implicit.json @@ -5,12 +5,7 @@ "version": 1, "published": true, "associated_files": [], - "features": [ - "video track", - "Extractors", - "Implicit Reconstruction", - "oinf, linf and oref track reference" - ], + "features": ["video track", "Extractors", "Implicit Reconstruction"], "notes": "", "license": "", "rel_filepath": "./mhvc_hvc1_lhv1_multiple_tracks_implicit.mp4", diff --git a/data/file_features/published/nalu/l-hevc/mhvc_hvc1_single_track.json b/data/file_features/published/nalu/l-hevc/mhvc_hvc1_single_track.json index eea6683..46934d7 100644 --- a/data/file_features/published/nalu/l-hevc/mhvc_hvc1_single_track.json +++ b/data/file_features/published/nalu/l-hevc/mhvc_hvc1_single_track.json @@ -5,12 +5,7 @@ "version": 1, "published": true, "associated_files": [], - "features": [ - "video track", - "Extractors", - "Implicit Reconstruction", - "oinf, linf and oref track reference" - ], + "features": ["video track", "Extractors", "Implicit Reconstruction"], "notes": "", "license": "", "rel_filepath": "./mhvc_hvc1_single_track.mp4", diff --git a/data/file_features/published/nalu/l-hevc/mhvc_hvc2_single_track.json b/data/file_features/published/nalu/l-hevc/mhvc_hvc2_single_track.json index d0f1688..6cc4a0d 100644 --- a/data/file_features/published/nalu/l-hevc/mhvc_hvc2_single_track.json +++ b/data/file_features/published/nalu/l-hevc/mhvc_hvc2_single_track.json @@ -5,12 +5,7 @@ "version": 1, "published": true, "associated_files": [], - "features": [ - "video track", - "Extractors", - "Implicit Reconstruction", - "oinf, linf and oref track reference" - ], + "features": ["video track", "Extractors", "Implicit Reconstruction"], "notes": "", "license": "", "rel_filepath": "./mhvc_hvc2_single_track.mp4", diff --git a/data/file_features/published/nalu/l-hevc/shvc_hev1_hev2_multiple_tracks_extractors.json b/data/file_features/published/nalu/l-hevc/shvc_hev1_hev2_multiple_tracks_extractors.json index a2de463..a2603c8 100644 --- a/data/file_features/published/nalu/l-hevc/shvc_hev1_hev2_multiple_tracks_extractors.json +++ b/data/file_features/published/nalu/l-hevc/shvc_hev1_hev2_multiple_tracks_extractors.json @@ -5,12 +5,7 @@ "version": 1, "published": true, "associated_files": [], - "features": [ - "video track", - "Extractors", - "Implicit Reconstruction", - "oinf, linf and oref track reference" - ], + "features": ["video track", "Extractors", "Implicit Reconstruction"], "notes": "", "license": "", "rel_filepath": "./shvc_hev1_hev2_multiple_tracks_extractors.mp4", diff --git a/data/file_features/published/nalu/l-hevc/shvc_hev1_lhe1_multiple_tracks_implicit.json b/data/file_features/published/nalu/l-hevc/shvc_hev1_lhe1_multiple_tracks_implicit.json index b798ce9..34d9ad8 100644 --- a/data/file_features/published/nalu/l-hevc/shvc_hev1_lhe1_multiple_tracks_implicit.json +++ b/data/file_features/published/nalu/l-hevc/shvc_hev1_lhe1_multiple_tracks_implicit.json @@ -5,12 +5,7 @@ "version": 1, "published": true, "associated_files": [], - "features": [ - "video track", - "Extractors", - "Implicit Reconstruction", - "oinf, linf and oref track reference" - ], + "features": ["video track", "Extractors", "Implicit Reconstruction"], "notes": "", "license": "", "rel_filepath": "./shvc_hev1_lhe1_multiple_tracks_implicit.mp4", diff --git a/data/file_features/published/nalu/l-hevc/shvc_hev1_single_track.json b/data/file_features/published/nalu/l-hevc/shvc_hev1_single_track.json index aba835b..14e546a 100644 --- a/data/file_features/published/nalu/l-hevc/shvc_hev1_single_track.json +++ b/data/file_features/published/nalu/l-hevc/shvc_hev1_single_track.json @@ -5,12 +5,7 @@ "version": 1, "published": true, "associated_files": [], - "features": [ - "video track", - "Extractors", - "Implicit Reconstruction", - "oinf, linf and oref track reference" - ], + "features": ["video track", "Extractors", "Implicit Reconstruction"], "notes": "", "license": "", "rel_filepath": "./shvc_hev1_single_track.mp4", diff --git a/data/file_features/published/nalu/l-hevc/shvc_hev2_single_track.json b/data/file_features/published/nalu/l-hevc/shvc_hev2_single_track.json index 2d94156..b6a6109 100644 --- a/data/file_features/published/nalu/l-hevc/shvc_hev2_single_track.json +++ b/data/file_features/published/nalu/l-hevc/shvc_hev2_single_track.json @@ -5,12 +5,7 @@ "version": 1, "published": true, "associated_files": [], - "features": [ - "video track", - "Extractors", - "Implicit Reconstruction", - "oinf, linf and oref track reference" - ], + "features": ["video track", "Extractors", "Implicit Reconstruction"], "notes": "", "license": "", "rel_filepath": "./shvc_hev2_single_track.mp4", diff --git a/data/file_features/published/nalu/l-hevc/shvc_hvc1_hvc2_multiple_tracks_extractors.json b/data/file_features/published/nalu/l-hevc/shvc_hvc1_hvc2_multiple_tracks_extractors.json index 8251fef..03bc26a 100644 --- a/data/file_features/published/nalu/l-hevc/shvc_hvc1_hvc2_multiple_tracks_extractors.json +++ b/data/file_features/published/nalu/l-hevc/shvc_hvc1_hvc2_multiple_tracks_extractors.json @@ -5,12 +5,7 @@ "version": 1, "published": true, "associated_files": [], - "features": [ - "video track", - "Extractors", - "Implicit Reconstruction", - "oinf, linf and oref track reference" - ], + "features": ["video track", "Extractors", "Implicit Reconstruction"], "notes": "", "license": "", "rel_filepath": "./shvc_hvc1_hvc2_multiple_tracks_extractors.mp4", diff --git a/data/file_features/published/nalu/l-hevc/shvc_hvc1_lhv1_multiple_tracks_implicit.json b/data/file_features/published/nalu/l-hevc/shvc_hvc1_lhv1_multiple_tracks_implicit.json index 0983835..f39423f 100644 --- a/data/file_features/published/nalu/l-hevc/shvc_hvc1_lhv1_multiple_tracks_implicit.json +++ b/data/file_features/published/nalu/l-hevc/shvc_hvc1_lhv1_multiple_tracks_implicit.json @@ -5,12 +5,7 @@ "version": 1, "published": true, "associated_files": [], - "features": [ - "video track", - "Extractors", - "Implicit Reconstruction", - "oinf, linf and oref track reference" - ], + "features": ["video track", "Extractors", "Implicit Reconstruction"], "notes": "", "license": "", "rel_filepath": "./shvc_hvc1_lhv1_multiple_tracks_implicit.mp4", diff --git a/data/file_features/published/nalu/l-hevc/shvc_hvc1_single_track.json b/data/file_features/published/nalu/l-hevc/shvc_hvc1_single_track.json index bd31652..bd3bcee 100644 --- a/data/file_features/published/nalu/l-hevc/shvc_hvc1_single_track.json +++ b/data/file_features/published/nalu/l-hevc/shvc_hvc1_single_track.json @@ -5,12 +5,7 @@ "version": 1, "published": true, "associated_files": [], - "features": [ - "video track", - "Extractors", - "Implicit Reconstruction", - "oinf, linf and oref track reference" - ], + "features": ["video track", "Extractors", "Implicit Reconstruction"], "notes": "", "license": "", "rel_filepath": "./shvc_hvc1_single_track.mp4", diff --git a/data/file_features/published/nalu/l-hevc/shvc_hvc2_single_track.json b/data/file_features/published/nalu/l-hevc/shvc_hvc2_single_track.json index 4f45d82..5963f91 100644 --- a/data/file_features/published/nalu/l-hevc/shvc_hvc2_single_track.json +++ b/data/file_features/published/nalu/l-hevc/shvc_hvc2_single_track.json @@ -5,12 +5,7 @@ "version": 1, "published": true, "associated_files": [], - "features": [ - "video track", - "Extractors", - "Implicit Reconstruction", - "oinf, linf and oref track reference" - ], + "features": ["video track", "Extractors", "Implicit Reconstruction"], "notes": "", "license": "", "rel_filepath": "./shvc_hvc2_single_track.mp4", From 1cf74699f5fda26030a997e12c3569dfd8242705 Mon Sep 17 00:00:00 2001 From: Dimitri Podborski Date: Thu, 31 Aug 2023 17:48:05 -0700 Subject: [PATCH 16/42] fix #61 --- .../published/nalu/hevc/hevc_tiles_multiple_tracks.json | 2 +- .../nalu/hevc/hevc_tiles_multiple_tracks_empty_base.json | 2 +- .../published/nalu/hevc/hevc_tiles_single_track_nalm.json | 2 +- .../nalu/hevc/hevc_tiles_single_track_nalm_all_intra.json | 2 +- .../published/nalu/hevc/hevc_tiles_single_track_nalm_rle.json | 2 +- .../nalu/hevc/hevc_tiles_single_track_trif_full_picture.json | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/data/file_features/published/nalu/hevc/hevc_tiles_multiple_tracks.json b/data/file_features/published/nalu/hevc/hevc_tiles_multiple_tracks.json index d913809..8affa59 100644 --- a/data/file_features/published/nalu/hevc/hevc_tiles_multiple_tracks.json +++ b/data/file_features/published/nalu/hevc/hevc_tiles_multiple_tracks.json @@ -5,7 +5,7 @@ "version": 1, "published": true, "associated_files": [], - "features": ["video track", "tbas and sabt track reference"], + "features": ["video track"], "notes": "", "license": "", "rel_filepath": "./hevc_tiles_multiple_tracks.mp4", diff --git a/data/file_features/published/nalu/hevc/hevc_tiles_multiple_tracks_empty_base.json b/data/file_features/published/nalu/hevc/hevc_tiles_multiple_tracks_empty_base.json index 2fc105c..52e44e9 100644 --- a/data/file_features/published/nalu/hevc/hevc_tiles_multiple_tracks_empty_base.json +++ b/data/file_features/published/nalu/hevc/hevc_tiles_multiple_tracks_empty_base.json @@ -5,7 +5,7 @@ "version": 1, "published": true, "associated_files": [], - "features": ["video track", "tbas and sabt track reference"], + "features": ["video track"], "notes": "", "license": "", "rel_filepath": "./hevc_tiles_multiple_tracks_empty_base.mp4", diff --git a/data/file_features/published/nalu/hevc/hevc_tiles_single_track_nalm.json b/data/file_features/published/nalu/hevc/hevc_tiles_single_track_nalm.json index 6fa3944..37cc334 100644 --- a/data/file_features/published/nalu/hevc/hevc_tiles_single_track_nalm.json +++ b/data/file_features/published/nalu/hevc/hevc_tiles_single_track_nalm.json @@ -5,7 +5,7 @@ "version": 1, "published": true, "associated_files": [], - "features": ["video track", "tbas and sabt track reference"], + "features": ["video track"], "notes": "", "license": "", "rel_filepath": "./hevc_tiles_single_track_nalm.mp4", diff --git a/data/file_features/published/nalu/hevc/hevc_tiles_single_track_nalm_all_intra.json b/data/file_features/published/nalu/hevc/hevc_tiles_single_track_nalm_all_intra.json index a05324d..9c3758e 100644 --- a/data/file_features/published/nalu/hevc/hevc_tiles_single_track_nalm_all_intra.json +++ b/data/file_features/published/nalu/hevc/hevc_tiles_single_track_nalm_all_intra.json @@ -5,7 +5,7 @@ "version": 1, "published": true, "associated_files": [], - "features": ["video track", "tbas and sabt track reference"], + "features": ["video track"], "notes": "", "license": "", "rel_filepath": "./hevc_tiles_single_track_nalm_all_intra.mp4", diff --git a/data/file_features/published/nalu/hevc/hevc_tiles_single_track_nalm_rle.json b/data/file_features/published/nalu/hevc/hevc_tiles_single_track_nalm_rle.json index b8e0b51..31d3313 100644 --- a/data/file_features/published/nalu/hevc/hevc_tiles_single_track_nalm_rle.json +++ b/data/file_features/published/nalu/hevc/hevc_tiles_single_track_nalm_rle.json @@ -5,7 +5,7 @@ "version": 1, "published": true, "associated_files": [], - "features": ["video track", "tbas and sabt track reference"], + "features": ["video track"], "notes": "", "license": "", "rel_filepath": "./hevc_tiles_single_track_nalm_rle.mp4", diff --git a/data/file_features/published/nalu/hevc/hevc_tiles_single_track_trif_full_picture.json b/data/file_features/published/nalu/hevc/hevc_tiles_single_track_trif_full_picture.json index 7d4d424..698991b 100644 --- a/data/file_features/published/nalu/hevc/hevc_tiles_single_track_trif_full_picture.json +++ b/data/file_features/published/nalu/hevc/hevc_tiles_single_track_trif_full_picture.json @@ -5,7 +5,7 @@ "version": 1, "published": true, "associated_files": [], - "features": ["video track", "tbas and sabt track reference"], + "features": ["video track"], "notes": "", "license": "", "rel_filepath": "./hevc_tiles_single_track_trif_full_picture.mp4", From 09d48825c2c367a6e5b505de17827a7c9276c2ee Mon Sep 17 00:00:00 2001 From: Dimitri Podborski Date: Thu, 31 Aug 2023 18:21:28 -0700 Subject: [PATCH 17/42] remove redundant feature fix #63 --- data/file_features/published/isobmff/02_dref_edts_img.json | 3 +-- data/file_features/published/isobmff/04_bifs_video.json | 3 +-- data/file_features/published/isobmff/07_bifs_sprite.json | 1 - data/file_features/published/isobmff/10_fragments.json | 3 +-- data/file_features/published/isobmff/12_metas_v2.json | 2 +- data/file_features/published/isobmff/a6_tone_multifile.json | 2 +- .../published/isobmff/a9-aac-samplegroups-edit.json | 2 +- .../published/isobmff/fragment-random-access-1+AF8-rev1.json | 2 -- .../published/isobmff/fragment_random_access-2.json | 2 +- data/file_features/published/nalu/hevc/alst_hvc1.json | 2 +- data/standard_features/14496-12/sample_groups.json | 4 ++-- data/standard_features/14496-12/user_defined.json | 1 + 12 files changed, 11 insertions(+), 16 deletions(-) diff --git a/data/file_features/published/isobmff/02_dref_edts_img.json b/data/file_features/published/isobmff/02_dref_edts_img.json index 9b80693..8ccc599 100644 --- a/data/file_features/published/isobmff/02_dref_edts_img.json +++ b/data/file_features/published/isobmff/02_dref_edts_img.json @@ -8,8 +8,7 @@ "features": [ "audio track", "image track", - "data ref to other file", - "compact stz2", + "data reference to other file", "Interleaved data", "Systems tracks etc.", "IOD box", diff --git a/data/file_features/published/isobmff/04_bifs_video.json b/data/file_features/published/isobmff/04_bifs_video.json index 421e539..0c2ecc5 100644 --- a/data/file_features/published/isobmff/04_bifs_video.json +++ b/data/file_features/published/isobmff/04_bifs_video.json @@ -7,8 +7,7 @@ "associated_files": [], "features": [ "video track", - "data ref to other file", - "compact stz2", + "data reference to other file", "Systems tracks etc.", "IOD box", "mp4v sample entry", diff --git a/data/file_features/published/isobmff/07_bifs_sprite.json b/data/file_features/published/isobmff/07_bifs_sprite.json index 07bf9b4..364f26b 100644 --- a/data/file_features/published/isobmff/07_bifs_sprite.json +++ b/data/file_features/published/isobmff/07_bifs_sprite.json @@ -7,7 +7,6 @@ "associated_files": [], "features": [ "late order", - "shadow sync", "Systems tracks etc.", "IOD box", "mp4s sample entry", diff --git a/data/file_features/published/isobmff/10_fragments.json b/data/file_features/published/isobmff/10_fragments.json index 6c94a32..ad28c2e 100644 --- a/data/file_features/published/isobmff/10_fragments.json +++ b/data/file_features/published/isobmff/10_fragments.json @@ -9,8 +9,7 @@ "video track", "audio track", "Interleaved data", - "multiple mdats", - "mov. Ext header" + "multiple mdats" ], "notes": "", "license": "", diff --git a/data/file_features/published/isobmff/12_metas_v2.json b/data/file_features/published/isobmff/12_metas_v2.json index c26b794..66c1071 100644 --- a/data/file_features/published/isobmff/12_metas_v2.json +++ b/data/file_features/published/isobmff/12_metas_v2.json @@ -5,7 +5,7 @@ "version": 1, "published": true, "associated_files": [], - "features": ["image track", "data refs", "item naming"], + "features": ["image track", "item naming"], "notes": "", "license": "", "rel_filepath": "./12_metas_v2.mp4", diff --git a/data/file_features/published/isobmff/a6_tone_multifile.json b/data/file_features/published/isobmff/a6_tone_multifile.json index e28d992..77a9422 100644 --- a/data/file_features/published/isobmff/a6_tone_multifile.json +++ b/data/file_features/published/isobmff/a6_tone_multifile.json @@ -5,7 +5,7 @@ "version": 1, "published": true, "associated_files": ["./myData.dat"], - "features": ["video track", "audio track", "data ref to other file"], + "features": ["video track", "audio track", "data reference to other file"], "notes": "", "license": "", "rel_filepath": "./a6_tone_multifile.mp4", diff --git a/data/file_features/published/isobmff/a9-aac-samplegroups-edit.json b/data/file_features/published/isobmff/a9-aac-samplegroups-edit.json index b20ac71..2e66e53 100644 --- a/data/file_features/published/isobmff/a9-aac-samplegroups-edit.json +++ b/data/file_features/published/isobmff/a9-aac-samplegroups-edit.json @@ -5,7 +5,7 @@ "version": 1, "published": true, "associated_files": [], - "features": ["audio track", "pre-roll group", "IOD box"], + "features": ["audio track", "IOD box"], "notes": "", "license": "", "rel_filepath": "./a9-aac-samplegroups-edit.mp4", diff --git a/data/file_features/published/isobmff/fragment-random-access-1+AF8-rev1.json b/data/file_features/published/isobmff/fragment-random-access-1+AF8-rev1.json index 5881c84..a7a77a4 100644 --- a/data/file_features/published/isobmff/fragment-random-access-1+AF8-rev1.json +++ b/data/file_features/published/isobmff/fragment-random-access-1+AF8-rev1.json @@ -8,8 +8,6 @@ "features": [ "video track", "audio track", - "mov. Ext header", - "fragment random access", "mp4a sample entry", "mp4v sample entry" ], diff --git a/data/file_features/published/isobmff/fragment_random_access-2.json b/data/file_features/published/isobmff/fragment_random_access-2.json index af70a40..6ef3c08 100644 --- a/data/file_features/published/isobmff/fragment_random_access-2.json +++ b/data/file_features/published/isobmff/fragment_random_access-2.json @@ -5,7 +5,7 @@ "version": 1, "published": true, "associated_files": [], - "features": ["video track", "mov. Ext header", "mp4v sample entry"], + "features": ["video track", "mp4v sample entry"], "notes": "", "license": "", "rel_filepath": "./fragment_random_access-2.mp4", diff --git a/data/file_features/published/nalu/hevc/alst_hvc1.json b/data/file_features/published/nalu/hevc/alst_hvc1.json index 573aa24..ee546aa 100644 --- a/data/file_features/published/nalu/hevc/alst_hvc1.json +++ b/data/file_features/published/nalu/hevc/alst_hvc1.json @@ -5,7 +5,7 @@ "version": 1, "published": true, "associated_files": [], - "features": ["Alt. startup properties and sample group", "RAP sample group"], + "features": ["Alt. startup properties and sample group"], "notes": "", "license": "", "rel_filepath": "./alst_hvc1.mp4", diff --git a/data/standard_features/14496-12/sample_groups.json b/data/standard_features/14496-12/sample_groups.json index 39d72b8..efe8221 100644 --- a/data/standard_features/14496-12/sample_groups.json +++ b/data/standard_features/14496-12/sample_groups.json @@ -18,7 +18,7 @@ }, { "fourcc": "prol", - "description": "Audio pre-roll", + "description": "Preroll (audio)", "containers": ["sgpd"], "type": "AudioSampleGroupEntry", "syntax": "class AudioPreRollEntry() extends AudioSampleGroupEntry ('prol')\n{\n\tsigned int(16) roll_distance;\n}" @@ -39,7 +39,7 @@ }, { "fourcc": "roll", - "description": "Pre/Post roll group", + "description": "Preroll / Postroll group", "containers": ["sgpd"], "type": "AudioSampleGroupEntry", "syntax": "class AudioRollRecoveryEntry() extends AudioSampleGroupEntry ('roll')\n{\n\tsigned int(16) roll_distance;\n}" diff --git a/data/standard_features/14496-12/user_defined.json b/data/standard_features/14496-12/user_defined.json index 3141693..4ec8554 100644 --- a/data/standard_features/14496-12/user_defined.json +++ b/data/standard_features/14496-12/user_defined.json @@ -19,6 +19,7 @@ "multiple mdats": "two or more mdat boxes are present", "multiple sample descriptions": "There is one track ujsing several sample entries, not just one", "metadata references": "Some meta-data is in external files and linked by data references", + "data reference to other file": "Data references to another file", "sample dependency": "The sample dependency table is present", "Interleaved data": "The media data is interleaved on a sensible scale (e.g. .5 second) and in order", "pad bits": "At least one track (audio, probably) has a padding bits table for non byte-lengthed AUs", From 82cf5ed65104abb4eaf8a1bceca368601c60441c Mon Sep 17 00:00:00 2001 From: Dimitri Podborski Date: Thu, 31 Aug 2023 18:24:41 -0700 Subject: [PATCH 18/42] fix remaining features --- data/file_features/published/isobmff/13_long.json | 2 +- data/file_features/published/nalu/hevc/alst_hvc1.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/data/file_features/published/isobmff/13_long.json b/data/file_features/published/isobmff/13_long.json index 97ac1bc..006e291 100644 --- a/data/file_features/published/isobmff/13_long.json +++ b/data/file_features/published/isobmff/13_long.json @@ -5,7 +5,7 @@ "version": 1, "published": true, "associated_files": [], - "features": ["64-bit mv/tr/md headers"], + "features": ["64bit headers"], "notes": "", "license": "", "rel_filepath": "./13_long.mp4", diff --git a/data/file_features/published/nalu/hevc/alst_hvc1.json b/data/file_features/published/nalu/hevc/alst_hvc1.json index ee546aa..7245329 100644 --- a/data/file_features/published/nalu/hevc/alst_hvc1.json +++ b/data/file_features/published/nalu/hevc/alst_hvc1.json @@ -5,7 +5,7 @@ "version": 1, "published": true, "associated_files": [], - "features": ["Alt. startup properties and sample group"], + "features": [], "notes": "", "license": "", "rel_filepath": "./alst_hvc1.mp4", From b77e018f0351b5c57fd18fd0358c93fe959fd4a6 Mon Sep 17 00:00:00 2001 From: Dimitri Podborski Date: Thu, 31 Aug 2023 20:25:39 -0700 Subject: [PATCH 19/42] fix #64 --- data/standard_features/14496-12/boxes.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/data/standard_features/14496-12/boxes.json b/data/standard_features/14496-12/boxes.json index 355015d..b167609 100644 --- a/data/standard_features/14496-12/boxes.json +++ b/data/standard_features/14496-12/boxes.json @@ -1133,9 +1133,9 @@ { "fourcc": "ress", "description": "Restricted system", - "type": "", + "type": "MP4VisualSampleEntry", "containers": ["stsd"], - "syntax": "TODO: Not clear" + "syntax": "System streams are defined in ISO/IEC 14496-14" }, { "fourcc": "resf", From 5ef2d49432301563f091b65216bde1d56cfee2c3 Mon Sep 17 00:00:00 2001 From: Dimitri Podborski Date: Thu, 31 Aug 2023 21:09:54 -0700 Subject: [PATCH 20/42] move codecs defined in ISOBMFF from boxes to codecs.json --- data/standard_features/14496-12/boxes.json | 273 ------------------- data/standard_features/14496-12/codecs.json | 279 ++++++++++++++++++++ 2 files changed, 279 insertions(+), 273 deletions(-) create mode 100644 data/standard_features/14496-12/codecs.json diff --git a/data/standard_features/14496-12/boxes.json b/data/standard_features/14496-12/boxes.json index b167609..84b23eb 100644 --- a/data/standard_features/14496-12/boxes.json +++ b/data/standard_features/14496-12/boxes.json @@ -171,209 +171,6 @@ "flags": [], "syntax": "aligned(8) class StereoVideoBox extends FullBox('stvi', version = 0, 0)\n{\n\ttemplate unsigned int(30) reserved = 0;\n\tunsigned int(2)\tsingle_view_allowed;\n\tunsigned int(32)\tstereo_scheme;\n\tunsigned int(32)\tlength;\n\tunsigned int(8)[length]\tstereo_indication_type;\n\tBox[] any_box; // optional\n}" }, - { - "fourcc": "metx", - "description": "XML timed metadata", - "type": "MetaDataSampleEntry", - "containers": ["stsd"], - "syntax": "class XMLMetaDataSampleEntry() extends MetaDataSampleEntry ('metx') {\n\tutf8string content_encoding; // optional\n\tutf8list namespace;\n\tutf8list schema_location; // optional\n}" - }, - { - "fourcc": "mett", - "description": "Text timed metadata that is not XML", - "type": "MetaDataSampleEntry", - "containers": ["stsd"], - "syntax": "class TextMetaDataSampleEntry() extends MetaDataSampleEntry ('mett') {\n\tutf8string content_encoding; // optional\n\tutf8string mime_format;\n\tTextConfigBox (); // optional\n}" - }, - { - "fourcc": "urim", - "description": "Binary timed metadata identified by URI", - "type": "MetaDataSampleEntry", - "containers": ["stsd"], - "syntax": "class URIMetaSampleEntry() extends MetaDataSampleEntry ('urim') {\n\tURIbox\t\t\tthe_label;\n\tURIInitBox\t\tinit;\t\t// optional\n}" - }, - { - "fourcc": "mebx", - "description": "Timed metadata multiplex", - "type": "MetaDataSampleEntry", - "containers": ["stsd"], - "syntax": "aligned(8) class BoxedMetadataSampleEntry \n\textends MetadataSampleEntry ('mebx') {\n\tMetadataKeyTableBox();\t\t\t\t// mandatory\n\tBitRateBox ();\t\t\t\t\t\t\t// optional\n}" - }, - { - "fourcc": "enca", - "description": "Encrypted/Protected audio", - "type": "AudioSampleEntry", - "containers": ["stsd"], - "syntax": "class AudioSampleEntry(codingname) extends SampleEntry (codingname){\n\tconst unsigned int(32)[2] reserved = 0;\n\tunsigned int(16) channelcount;\n\ttemplate unsigned int(16) samplesize = 16;\n\tunsigned int(16) pre_defined = 0;\n\tconst unsigned int(16) reserved = 0 ;\n\ttemplate unsigned int(32) samplerate = { default samplerate of media}<<16;\n\t// optional boxes follow\n\tBox ();\t\t// further boxes as needed\n\tChannelLayout();\n\tDownMixInstructions() [];\n\tDRCCoefficientsBasic() [];\n\tDRCInstructionsBasic() [];\n\tDRCCoefficientsUniDRC() [];\n\tDRCInstructionsUniDRC() [];\n\t// we permit only one DRC Extension box:\n\tUniDrcConfigExtension();\n\t// optional boxes follow\n\tSamplingRateBox();\n\tChannelLayout();\n}\n\nclass AudioSampleEntryV1(codingname) extends SampleEntry (codingname){\n\tunsigned int(16) entry_version;\t// shall be 1, \n\t// and shall be in an stsd with version ==1\n\tconst unsigned int(16)[3] reserved = 0;\n\ttemplate unsigned int(16) channelcount;\t// shall be correct\n\ttemplate unsigned int(16) samplesize = 16;\n\tunsigned int(16) pre_defined = 0;\n\tconst unsigned int(16) reserved = 0 ;\n\ttemplate unsigned int(32) samplerate = 1<<16;\n\t// optional boxes follow\n\tSamplingRateBox();\n\tBox ();\t\t// further boxes as needed\n\tChannelLayout();\n\tDownMixInstructions() [];\n\tDRCCoefficientsBasic() [];\n\tDRCInstructionsBasic() [];\n\tDRCCoefficientsUniDRC() [];\n\tDRCInstructionsUniDRC() [];\n\t// we permit only one DRC Extension box:\n\tUniDrcConfigExtension();\n\t// optional boxes follow\n\tChannelLayout();\n}" - }, - { - "fourcc": "enca", - "description": "Encrypted/Protected audio", - "type": "AudioSampleEntryV1", - "containers": ["stsd"], - "syntax": "class AudioSampleEntryV1(codingname) extends SampleEntry (codingname){\r\n\tunsigned int(16) entry_version;\t// shall be 1, \r\n\t\t\t\t\t\t\t// and shall be in an stsd with version ==1\r\n\tconst unsigned int(16)[3] reserved = 0;\r\n\ttemplate unsigned int(16) channelcount;\t// shall be correct\r\n\ttemplate unsigned int(16) samplesize = 16;\r\n\tunsigned int(16) pre_defined = 0;\r\n\tconst unsigned int(16) reserved = 0 ;\r\n\ttemplate unsigned int(32) samplerate = 1<<16;\r\n\t// optional boxes follow\r\n\tSamplingRateBox();\r\n\tBox ();\t\t// further boxes as needed\r\n\tChannelLayout();\r\n\tDownMixInstructions() [];\r\n\tDRCCoefficientsBasic() [];\r\n\tDRCInstructionsBasic() [];\r\n\tDRCCoefficientsUniDRC() [];\r\n\tDRCInstructionsUniDRC() [];\r\n\t// we permit only one DRC Extension box:\r\n\tUniDrcConfigExtension();\r\n\t// optional boxes follow\r\n\tChannelLayout();\r\n}" - }, - { - "fourcc": "encf", - "description": "Encrypted/Protected font", - "type": "FontSampleEntry", - "containers": ["stsd"], - "syntax": "class FontSampleEntry(codingname) extends SampleEntry (codingname){\n\t//other boxes from derived specifications\n}" - }, - { - "fourcc": "encm", - "description": "Encrypted/Protected metadata", - "type": "MetaDataSampleEntry", - "containers": ["stsd"], - "syntax": "class MetaDataSampleEntry(codingname) extends SampleEntry (codingname) {\r\n}" - }, - { - "fourcc": "encs", - "description": "Encrypted Systems stream", - "type": "SampleEntry", - "containers": ["stsd"], - "syntax": "TODO: Bug. see 'rest'" - }, - { - "fourcc": "enct", - "description": "Encrypted Text", - "type": "PlainTextSampleEntry", - "containers": ["stsd"], - "syntax": "" - }, - { - "fourcc": "encv", - "description": "Encrypted/protected video", - "type": "VisualSampleEntry", - "containers": ["stsd"], - "syntax": "SampleEntry('encv') {\n\tProtectionSchemeInfoBox {\n\t\tOriginalFormatBox;\t// data_format is 'resv'\n\t\tSchemeTypeBox;\n\t\tSchemeInformationBox;\n\t}\n\tRestrictedSchemeInfoBox {\n\t\tOriginalFormatBox; // data_format indicates a codec, e.g. 'avc1'\n\t\tSchemeTypeBox;\n\t\tSchemeInformationBox;\n\t}\n\t// Boxes specific to the untransformed sample entry type\n\t// For 'avc1', these would include AVCConfigurationBox\n}" - }, - { - "fourcc": "fdp ", - "description": "File delivery hints", - "type": "HintSampleEntry", - "containers": ["stsd"], - "syntax": "class FDHintSampleEntry() extends HintSampleEntry ('fdp ') {\n\tunsigned int(16)\thinttrackversion = 1;\n\tunsigned int(16)\thighestcompatibleversion = 1;\n\tunsigned int(16)\tpartition_entry_ID;\n\tunsigned int(16)\tFEC_overhead;\n}" - }, - { - "fourcc": "icpv", - "description": "Incomplete video", - "type": "VisualSampleEntry", - "containers": ["stsd"], - "syntax": "class IncompleteAVCSampleEntry() extends VisualSampleEntry ('icpv'){\n\tCompleteTrackInfoBox();\n\tAVCConfigurationBox config;\n}" - }, - { - "fourcc": "pm2t", - "description": "Protected MPEG-2 Transport", - "type": "MPEG2TSSampleEntry", - "containers": ["stsd"], - "syntax": "class ProtectedMPEG2TransportStreamSampleEntry\n\textends MPEG2TSSampleEntry('pm2t') {\n\tProtectionSchemeInfoBox\t\tSchemeInformation;\n}" - }, - { - "fourcc": "prtp", - "description": "Protected RTP Reception", - "type": "RtpReceptionHintSampleEntry", - "containers": ["stsd"], - "syntax": "Class ProtectedRtpReceptionHintSampleEntry\n\textends RtpReceptionHintSampleEntry ('prtp') {\n\tProtectionSchemeInfoBox\t\tSchemeInformation;\n}" - }, - { - "fourcc": "rm2t", - "description": "MPEG-2 Transport Reception", - "type": "MPEG2TSSampleEntry", - "containers": ["stsd"], - "syntax": "class MPEG2TSReceptionSampleEntry extends MPEG2TSSampleEntry('rm2t') {}" - }, - { - "fourcc": "rrtp", - "description": "RTP reception", - "type": "HintSampleEntry", - "containers": ["stsd"], - "syntax": "class ReceivedRtpHintSampleEntry() extends HintSampleEntry ('rrtp') {\n\tuint(16)\t\thinttrackversion = 1;\n\tuint(16)\t\thighestcompatibleversion = 1;\n\tuint(32)\t\tmaxpacketsize;\n}" - }, - { - "fourcc": "rsrp", - "description": "SRTP Reception", - "type": "HintSampleEntry", - "containers": ["stsd"], - "syntax": "class ReceivedSrtpHintSampleEntry() extends HintSampleEntry ('rsrp') {\n\tuint(16)\t\thinttrackversion = 1;\n\tuint(16)\t\thighestcompatibleversion = 1;\n\tuint(32)\t\tmaxpacketsize;\n}" - }, - { - "fourcc": "rtcp", - "description": "RTCP reception hint track", - "type": "HintSampleEntry", - "containers": ["stsd"], - "syntax": "class HintSampleEntry() extends SampleEntry (protocol) {\n}" - }, - { - "fourcc": "rtp ", - "description": "RTP Hints", - "type": "HintSampleEntry", - "containers": ["stsd"], - "syntax": "aligned(8) class moviehintinformation extends Box('hnti') {\n}\n\naligned(8) class rtpmoviehintinformation extends Box('rtp ') {\n\tuint(32) descriptionformat = 'sdp ';\n\tchar sdptext[];\n}" - }, - { - "fourcc": "sbtt", - "description": "Text subtitles", - "type": "SubtitleSampleEntry", - "containers": ["stsd"], - "syntax": "class TextSubtitleSampleEntry() extends SubtitleSampleEntry ('sbtt') {\n\tutf8string content_encoding; // optional\n\tutf8string mime_format;\n\tTextConfigBox (); // optional\n}" - }, - { - "fourcc": "sm2t", - "description": "MPEG-2 Transport Server", - "type": "MPEG2TSSampleEntry", - "containers": ["stsd"], - "syntax": "class MPEG2TSServerSampleEntry extends MPEG2TSSampleEntry('sm2t') {}" - }, - { - "fourcc": "srtp", - "description": "SRTP Hints", - "type": "HintSampleEntry", - "containers": ["stsd"], - "syntax": "class SrtpHintSampleEntry() extends HintSampleEntry ('srtp') {\n\tuint(16)\t\thinttrackversion = 1;\n\tuint(16)\t\thighestcompatibleversion = 1;\n\tuint(32)\t\tmaxpacketsize;\n}" - }, - { - "fourcc": "stcp", - "description": "SRTCP reception hint track", - "type": "HintSampleEntry", - "containers": ["stsd"], - "syntax": "" - }, - { - "fourcc": "stpp", - "description": "Subtitles (Timed Text)", - "type": "SubtitleSampleEntry", - "containers": ["stsd"], - "syntax": "class XMLSubtitleSampleEntry() extends SubtitleSampleEntry ('stpp') {\n\tutf8list namespace;\n\tutf8list schema_location; // optional\n\tutf8list auxiliary_mime_types;\n\t\t\t\t// optional, required if auxiliary resources are present\n}" - }, - { - "fourcc": "stxt", - "description": "Simple timed text", - "type": "PlainTextSampleEntry", - "containers": ["stsd"], - "syntax": "class SimpleTextSampleEntry extends PlainTextSampleEntry ('stxt') {\n\tutf8string\tcontent_encoding;\t// optional\n\tutf8string\tmime_format; \n\tTextConfigBox ();\t\t\t\t\t// optional\n}" - }, - { - "fourcc": "encu", - "description": "Encrypted/Protected subtitles", - "type": "PlainTextSampleEntry", - "containers": ["stsd"], - "syntax": "" - }, - { - "fourcc": "encp", - "description": "Encrypted/Protected haptics", - "type": "HapticSampleEntry", - "containers": ["stsd"], - "syntax": "aligned(8) class HapticSampleEntry(codingname)\n\textends SampleEntry(codingname) {\n\tBox()[]\totherboxes;\n}" - }, - { - "fourcc": "enc3", - "description": "Encrypted/Protected volumetric visual", - "type": "VolumetricVisualSampleEntry", - "containers": ["stsd"], - "syntax": "class VolumetricVisualSampleEntry(codingname) \n\textends SampleEntry (codingname){\n\tunsigned int(8)[32] compressorname;\n\t// other boxes from derived specifications\n}" - }, { "fourcc": "elng", "description": "ExtendedLanguageBox", @@ -1088,76 +885,6 @@ "flags": [], "syntax": "aligned(8) class ProducerReferenceTimeBox\n\textends FullBox('prft', version, flags) {\n\tunsigned int(32) reference_track_ID;\n\tunsigned int(64) ntp_timestamp;\n\tif (version==0) {\n\t\tunsigned int(32) media_time;\n\t} else {\n\t\tunsigned int(64) media_time;\n\t}\n}" }, - { - "fourcc": "resv", - "description": "Restricted video", - "type": "RestrictedSampleEntry", - "containers": ["stsd"], - "syntax": "class VisualSampleEntry('resv') extends SampleEntry ('resv'){\r\n\tunsigned int(16) pre_defined = 0;\r\n\tconst unsigned int(16) reserved = 0;\r\n\tunsigned int(32)[3]\tpre_defined = 0;\r\n\tunsigned int(16)\twidth;\r\n\tunsigned int(16)\theight;\r\n\ttemplate unsigned int(32)\thorizresolution = 0x00480000;\t// 72 dpi\r\n\ttemplate unsigned int(32)\tvertresolution = 0x00480000;\t// 72 dpi\r\n\tconst unsigned int(32)\treserved = 0;\r\n\ttemplate unsigned int(16)\tframe_count = 1;\r\n\tuint(8)[32]\tcompressorname;\r\n\ttemplate unsigned int(16)\tdepth = 0x0018;\r\n\tint(16)\tpre_defined = -1;\r\n\t// other boxes from derived specifications\r\n\tCleanApertureBox\t\t\tclap;\t\t// optional\r\n\tPixelAspectRatioBox\t\tpasp;\t\t// optional\r\n}\r\n" - }, - { - "fourcc": "resa", - "description": "Restricted audio", - "type": "AudioSampleEntry", - "containers": ["stsd"], - "syntax": "class AudioSampleEntry(codingname) extends SampleEntry (codingname){\r\n\tconst unsigned int(32)[2] reserved = 0;\r\n\tunsigned int(16) channelcount;\r\n\ttemplate unsigned int(16) samplesize = 16;\r\n\tunsigned int(16) pre_defined = 0;\r\n\tconst unsigned int(16) reserved = 0 ;\r\n\ttemplate unsigned int(32) samplerate = { default samplerate of media}<<16;\r\n\t// optional boxes follow\r\n\tBox ();\t\t// further boxes as needed\r\n\tChannelLayout();\r\n\tDownMixInstructions() [];\r\n\tDRCCoefficientsBasic() [];\r\n\tDRCInstructionsBasic() [];\r\n\tDRCCoefficientsUniDRC() [];\r\n\tDRCInstructionsUniDRC() [];\r\n\t// we permit only one DRC Extension box:\r\n\tUniDrcConfigExtension();\r\n\t// optional boxes follow\r\n\tSamplingRateBox();\r\n\tChannelLayout();\r\n}" - }, - { - "fourcc": "resa", - "description": "Restricted audio", - "type": "AudioSampleEntryV1", - "containers": ["stsd"], - "syntax": "class AudioSampleEntryV1(codingname) extends SampleEntry (codingname){\r\n\tunsigned int(16) entry_version;\t// shall be 1, \r\n\t\t\t\t\t\t\t// and shall be in an stsd with version ==1\r\n\tconst unsigned int(16)[3] reserved = 0;\r\n\ttemplate unsigned int(16) channelcount;\t// shall be correct\r\n\ttemplate unsigned int(16) samplesize = 16;\r\n\tunsigned int(16) pre_defined = 0;\r\n\tconst unsigned int(16) reserved = 0 ;\r\n\ttemplate unsigned int(32) samplerate = 1<<16;\r\n\t// optional boxes follow\r\n\tSamplingRateBox();\r\n\tBox ();\t\t// further boxes as needed\r\n\tChannelLayout();\r\n\tDownMixInstructions() [];\r\n\tDRCCoefficientsBasic() [];\r\n\tDRCInstructionsBasic() [];\r\n\tDRCCoefficientsUniDRC() [];\r\n\tDRCInstructionsUniDRC() [];\r\n\t// we permit only one DRC Extension box:\r\n\tUniDrcConfigExtension();\r\n\t// optional boxes follow\r\n\tChannelLayout();\r\n}" - }, - { - "fourcc": "resm", - "description": "Restricted metadata", - "type": "MetaDataSampleEntry", - "containers": ["stsd"], - "syntax": "class MetaDataSampleEntry(codingname) extends SampleEntry (codingname) {\r\n}" - }, - { - "fourcc": "rest", - "description": "Restricted text", - "type": "SimpleTextSampleEntry", - "containers": ["stsd"], - "syntax": "TODO: Syntax from ISOBMFF Table 8 seems to refer to wrong SampleEntry class. It should be PlainTextSampleEntry" - }, - { - "fourcc": "resu", - "description": "Restricted subtitle", - "type": "XMLSubitleSampleEntry", - "containers": ["stsd"], - "syntax": "TODO: Probably it should be SubtitleSampleEntry" - }, - { - "fourcc": "ress", - "description": "Restricted system", - "type": "MP4VisualSampleEntry", - "containers": ["stsd"], - "syntax": "System streams are defined in ISO/IEC 14496-14" - }, - { - "fourcc": "resf", - "description": "Restricted font", - "type": "FontSampleEntry", - "containers": ["stsd"], - "syntax": "class FontSampleEntry(codingname) extends SampleEntry (codingname){\r\n\t//other boxes from derived specifications\r\n}" - }, - { - "fourcc": "resp", - "description": "Restricted haptics", - "type": "HapticSampleEntry", - "containers": ["stsd"], - "syntax": "aligned(8) class HapticSampleEntry(codingname)\r\n\textends SampleEntry(codingname) {\r\n\tBox()[]\totherboxes;\r\n}" - }, - { - "fourcc": "res3", - "description": "Restricted volumteric visual", - "type": "VolumetricVisualSampleEntry", - "containers": ["stsd"], - "syntax": "class VolumetricVisualSampleEntry(codingname) \r\n\textends SampleEntry (codingname){\r\n\tunsigned int(8)[32] compressorname;\r\n\t// other boxes from derived specifications\r\n}" - }, { "fourcc": "rinf", "description": "restricted scheme information box", diff --git a/data/standard_features/14496-12/codecs.json b/data/standard_features/14496-12/codecs.json new file mode 100644 index 0000000..e67ad14 --- /dev/null +++ b/data/standard_features/14496-12/codecs.json @@ -0,0 +1,279 @@ +{ + "name": "Codecs", + "description": "Codec Types", + "entries": [ + { + "fourcc": "encs", + "description": "Encrypted Systems stream", + "type": "MP4VisualSampleEntry", + "containers": ["stsd"], + "syntax": "System streams are defined in ISO/IEC 14496-14" + }, + { + "fourcc": "enca", + "description": "Encrypted/Protected audio", + "type": "AudioSampleEntry", + "containers": ["stsd"], + "syntax": "class AudioSampleEntry(codingname) extends SampleEntry (codingname){\n\tconst unsigned int(32)[2] reserved = 0;\n\tunsigned int(16) channelcount;\n\ttemplate unsigned int(16) samplesize = 16;\n\tunsigned int(16) pre_defined = 0;\n\tconst unsigned int(16) reserved = 0 ;\n\ttemplate unsigned int(32) samplerate = { default samplerate of media}<<16;\n\t// optional boxes follow\n\tBox ();\t\t// further boxes as needed\n\tChannelLayout();\n\tDownMixInstructions() [];\n\tDRCCoefficientsBasic() [];\n\tDRCInstructionsBasic() [];\n\tDRCCoefficientsUniDRC() [];\n\tDRCInstructionsUniDRC() [];\n\t// we permit only one DRC Extension box:\n\tUniDrcConfigExtension();\n\t// optional boxes follow\n\tSamplingRateBox();\n\tChannelLayout();\n}\n\nclass AudioSampleEntryV1(codingname) extends SampleEntry (codingname){\n\tunsigned int(16) entry_version;\t// shall be 1, \n\t// and shall be in an stsd with version ==1\n\tconst unsigned int(16)[3] reserved = 0;\n\ttemplate unsigned int(16) channelcount;\t// shall be correct\n\ttemplate unsigned int(16) samplesize = 16;\n\tunsigned int(16) pre_defined = 0;\n\tconst unsigned int(16) reserved = 0 ;\n\ttemplate unsigned int(32) samplerate = 1<<16;\n\t// optional boxes follow\n\tSamplingRateBox();\n\tBox ();\t\t// further boxes as needed\n\tChannelLayout();\n\tDownMixInstructions() [];\n\tDRCCoefficientsBasic() [];\n\tDRCInstructionsBasic() [];\n\tDRCCoefficientsUniDRC() [];\n\tDRCInstructionsUniDRC() [];\n\t// we permit only one DRC Extension box:\n\tUniDrcConfigExtension();\n\t// optional boxes follow\n\tChannelLayout();\n}" + }, + { + "fourcc": "enca", + "description": "Encrypted/Protected audio", + "type": "AudioSampleEntryV1", + "containers": ["stsd"], + "syntax": "class AudioSampleEntryV1(codingname) extends SampleEntry (codingname){\r\n\tunsigned int(16) entry_version;\t// shall be 1, \r\n\t\t\t\t\t\t\t// and shall be in an stsd with version ==1\r\n\tconst unsigned int(16)[3] reserved = 0;\r\n\ttemplate unsigned int(16) channelcount;\t// shall be correct\r\n\ttemplate unsigned int(16) samplesize = 16;\r\n\tunsigned int(16) pre_defined = 0;\r\n\tconst unsigned int(16) reserved = 0 ;\r\n\ttemplate unsigned int(32) samplerate = 1<<16;\r\n\t// optional boxes follow\r\n\tSamplingRateBox();\r\n\tBox ();\t\t// further boxes as needed\r\n\tChannelLayout();\r\n\tDownMixInstructions() [];\r\n\tDRCCoefficientsBasic() [];\r\n\tDRCInstructionsBasic() [];\r\n\tDRCCoefficientsUniDRC() [];\r\n\tDRCInstructionsUniDRC() [];\r\n\t// we permit only one DRC Extension box:\r\n\tUniDrcConfigExtension();\r\n\t// optional boxes follow\r\n\tChannelLayout();\r\n}" + }, + { + "fourcc": "encf", + "description": "Encrypted/Protected font", + "type": "FontSampleEntry", + "containers": ["stsd"], + "syntax": "class FontSampleEntry(codingname) extends SampleEntry (codingname){\n\t//other boxes from derived specifications\n}" + }, + { + "fourcc": "encm", + "description": "Encrypted/Protected metadata", + "type": "MetaDataSampleEntry", + "containers": ["stsd"], + "syntax": "class MetaDataSampleEntry(codingname) extends SampleEntry (codingname) {\r\n}" + }, + { + "fourcc": "enct", + "description": "Encrypted Text", + "type": "PlainTextSampleEntry", + "containers": ["stsd"], + "syntax": "" + }, + { + "fourcc": "encv", + "description": "Encrypted/protected video", + "type": "VisualSampleEntry", + "containers": ["stsd"], + "syntax": "SampleEntry('encv') {\n\tProtectionSchemeInfoBox {\n\t\tOriginalFormatBox;\t// data_format is 'resv'\n\t\tSchemeTypeBox;\n\t\tSchemeInformationBox;\n\t}\n\tRestrictedSchemeInfoBox {\n\t\tOriginalFormatBox; // data_format indicates a codec, e.g. 'avc1'\n\t\tSchemeTypeBox;\n\t\tSchemeInformationBox;\n\t}\n\t// Boxes specific to the untransformed sample entry type\n\t// For 'avc1', these would include AVCConfigurationBox\n}" + }, + { + "fourcc": "metx", + "description": "XML timed metadata", + "type": "MetaDataSampleEntry", + "containers": ["stsd"], + "syntax": "class XMLMetaDataSampleEntry() extends MetaDataSampleEntry ('metx') {\n\tutf8string content_encoding; // optional\n\tutf8list namespace;\n\tutf8list schema_location; // optional\n}" + }, + { + "fourcc": "mett", + "description": "Text timed metadata that is not XML", + "type": "MetaDataSampleEntry", + "containers": ["stsd"], + "syntax": "class TextMetaDataSampleEntry() extends MetaDataSampleEntry ('mett') {\n\tutf8string content_encoding; // optional\n\tutf8string mime_format;\n\tTextConfigBox (); // optional\n}" + }, + { + "fourcc": "urim", + "description": "Binary timed metadata identified by URI", + "type": "MetaDataSampleEntry", + "containers": ["stsd"], + "syntax": "class URIMetaSampleEntry() extends MetaDataSampleEntry ('urim') {\n\tURIbox\t\t\tthe_label;\n\tURIInitBox\t\tinit;\t\t// optional\n}" + }, + { + "fourcc": "mebx", + "description": "Timed metadata multiplex", + "type": "MetaDataSampleEntry", + "containers": ["stsd"], + "syntax": "aligned(8) class BoxedMetadataSampleEntry \n\textends MetadataSampleEntry ('mebx') {\n\tMetadataKeyTableBox();\t\t\t\t// mandatory\n\tBitRateBox ();\t\t\t\t\t\t\t// optional\n}" + }, + { + "fourcc": "fdp ", + "description": "File delivery hints", + "type": "HintSampleEntry", + "containers": ["stsd"], + "syntax": "class FDHintSampleEntry() extends HintSampleEntry ('fdp ') {\n\tunsigned int(16)\thinttrackversion = 1;\n\tunsigned int(16)\thighestcompatibleversion = 1;\n\tunsigned int(16)\tpartition_entry_ID;\n\tunsigned int(16)\tFEC_overhead;\n}" + }, + { + "fourcc": "icpv", + "description": "Incomplete video", + "type": "VisualSampleEntry", + "containers": ["stsd"], + "syntax": "class IncompleteAVCSampleEntry() extends VisualSampleEntry ('icpv'){\n\tCompleteTrackInfoBox();\n\tAVCConfigurationBox config;\n}" + }, + { + "fourcc": "pm2t", + "description": "Protected MPEG-2 Transport", + "type": "MPEG2TSSampleEntry", + "containers": ["stsd"], + "syntax": "class ProtectedMPEG2TransportStreamSampleEntry\n\textends MPEG2TSSampleEntry('pm2t') {\n\tProtectionSchemeInfoBox\t\tSchemeInformation;\n}" + }, + { + "fourcc": "prtp", + "description": "Protected RTP Reception", + "type": "RtpReceptionHintSampleEntry", + "containers": ["stsd"], + "syntax": "Class ProtectedRtpReceptionHintSampleEntry\n\textends RtpReceptionHintSampleEntry ('prtp') {\n\tProtectionSchemeInfoBox\t\tSchemeInformation;\n}" + }, + { + "fourcc": "rm2t", + "description": "MPEG-2 Transport Reception", + "type": "MPEG2TSSampleEntry", + "containers": ["stsd"], + "syntax": "class MPEG2TSReceptionSampleEntry extends MPEG2TSSampleEntry('rm2t') {}" + }, + { + "fourcc": "rrtp", + "description": "RTP reception", + "type": "HintSampleEntry", + "containers": ["stsd"], + "syntax": "class ReceivedRtpHintSampleEntry() extends HintSampleEntry ('rrtp') {\n\tuint(16)\t\thinttrackversion = 1;\n\tuint(16)\t\thighestcompatibleversion = 1;\n\tuint(32)\t\tmaxpacketsize;\n}" + }, + { + "fourcc": "rsrp", + "description": "SRTP Reception", + "type": "HintSampleEntry", + "containers": ["stsd"], + "syntax": "class ReceivedSrtpHintSampleEntry() extends HintSampleEntry ('rsrp') {\n\tuint(16)\t\thinttrackversion = 1;\n\tuint(16)\t\thighestcompatibleversion = 1;\n\tuint(32)\t\tmaxpacketsize;\n}" + }, + { + "fourcc": "rtcp", + "description": "RTCP reception hint track", + "type": "HintSampleEntry", + "containers": ["stsd"], + "syntax": "class HintSampleEntry() extends SampleEntry (protocol) {\n}" + }, + { + "fourcc": "rtp ", + "description": "RTP Hints", + "type": "HintSampleEntry", + "containers": ["stsd"], + "syntax": "aligned(8) class moviehintinformation extends Box('hnti') {\n}\n\naligned(8) class rtpmoviehintinformation extends Box('rtp ') {\n\tuint(32) descriptionformat = 'sdp ';\n\tchar sdptext[];\n}" + }, + { + "fourcc": "sbtt", + "description": "Text subtitles", + "type": "SubtitleSampleEntry", + "containers": ["stsd"], + "syntax": "class TextSubtitleSampleEntry() extends SubtitleSampleEntry ('sbtt') {\n\tutf8string content_encoding; // optional\n\tutf8string mime_format;\n\tTextConfigBox (); // optional\n}" + }, + { + "fourcc": "sm2t", + "description": "MPEG-2 Transport Server", + "type": "MPEG2TSSampleEntry", + "containers": ["stsd"], + "syntax": "class MPEG2TSServerSampleEntry extends MPEG2TSSampleEntry('sm2t') {}" + }, + { + "fourcc": "srtp", + "description": "SRTP Hints", + "type": "HintSampleEntry", + "containers": ["stsd"], + "syntax": "class SrtpHintSampleEntry() extends HintSampleEntry ('srtp') {\n\tuint(16)\t\thinttrackversion = 1;\n\tuint(16)\t\thighestcompatibleversion = 1;\n\tuint(32)\t\tmaxpacketsize;\n}" + }, + { + "fourcc": "stcp", + "description": "SRTCP reception hint track", + "type": "HintSampleEntry", + "containers": ["stsd"], + "syntax": "" + }, + { + "fourcc": "stpp", + "description": "Subtitles (Timed Text)", + "type": "SubtitleSampleEntry", + "containers": ["stsd"], + "syntax": "class XMLSubtitleSampleEntry() extends SubtitleSampleEntry ('stpp') {\n\tutf8list namespace;\n\tutf8list schema_location; // optional\n\tutf8list auxiliary_mime_types;\n\t\t\t\t// optional, required if auxiliary resources are present\n}" + }, + { + "fourcc": "stxt", + "description": "Simple timed text", + "type": "PlainTextSampleEntry", + "containers": ["stsd"], + "syntax": "class SimpleTextSampleEntry extends PlainTextSampleEntry ('stxt') {\n\tutf8string\tcontent_encoding;\t// optional\n\tutf8string\tmime_format; \n\tTextConfigBox ();\t\t\t\t\t// optional\n}" + }, + { + "fourcc": "encu", + "description": "Encrypted/Protected subtitles", + "type": "PlainTextSampleEntry", + "containers": ["stsd"], + "syntax": "" + }, + { + "fourcc": "encp", + "description": "Encrypted/Protected haptics", + "type": "HapticSampleEntry", + "containers": ["stsd"], + "syntax": "aligned(8) class HapticSampleEntry(codingname)\n\textends SampleEntry(codingname) {\n\tBox()[]\totherboxes;\n}" + }, + { + "fourcc": "enc3", + "description": "Encrypted/Protected volumetric visual", + "type": "VolumetricVisualSampleEntry", + "containers": ["stsd"], + "syntax": "class VolumetricVisualSampleEntry(codingname) \n\textends SampleEntry (codingname){\n\tunsigned int(8)[32] compressorname;\n\t// other boxes from derived specifications\n}" + }, + { + "fourcc": "resv", + "description": "Restricted video", + "type": "RestrictedSampleEntry", + "containers": ["stsd"], + "syntax": "class VisualSampleEntry('resv') extends SampleEntry ('resv'){\r\n\tunsigned int(16) pre_defined = 0;\r\n\tconst unsigned int(16) reserved = 0;\r\n\tunsigned int(32)[3]\tpre_defined = 0;\r\n\tunsigned int(16)\twidth;\r\n\tunsigned int(16)\theight;\r\n\ttemplate unsigned int(32)\thorizresolution = 0x00480000;\t// 72 dpi\r\n\ttemplate unsigned int(32)\tvertresolution = 0x00480000;\t// 72 dpi\r\n\tconst unsigned int(32)\treserved = 0;\r\n\ttemplate unsigned int(16)\tframe_count = 1;\r\n\tuint(8)[32]\tcompressorname;\r\n\ttemplate unsigned int(16)\tdepth = 0x0018;\r\n\tint(16)\tpre_defined = -1;\r\n\t// other boxes from derived specifications\r\n\tCleanApertureBox\t\t\tclap;\t\t// optional\r\n\tPixelAspectRatioBox\t\tpasp;\t\t// optional\r\n}\r\n" + }, + { + "fourcc": "resa", + "description": "Restricted audio", + "type": "AudioSampleEntry", + "containers": ["stsd"], + "syntax": "class AudioSampleEntry(codingname) extends SampleEntry (codingname){\r\n\tconst unsigned int(32)[2] reserved = 0;\r\n\tunsigned int(16) channelcount;\r\n\ttemplate unsigned int(16) samplesize = 16;\r\n\tunsigned int(16) pre_defined = 0;\r\n\tconst unsigned int(16) reserved = 0 ;\r\n\ttemplate unsigned int(32) samplerate = { default samplerate of media}<<16;\r\n\t// optional boxes follow\r\n\tBox ();\t\t// further boxes as needed\r\n\tChannelLayout();\r\n\tDownMixInstructions() [];\r\n\tDRCCoefficientsBasic() [];\r\n\tDRCInstructionsBasic() [];\r\n\tDRCCoefficientsUniDRC() [];\r\n\tDRCInstructionsUniDRC() [];\r\n\t// we permit only one DRC Extension box:\r\n\tUniDrcConfigExtension();\r\n\t// optional boxes follow\r\n\tSamplingRateBox();\r\n\tChannelLayout();\r\n}" + }, + { + "fourcc": "resa", + "description": "Restricted audio", + "type": "AudioSampleEntryV1", + "containers": ["stsd"], + "syntax": "class AudioSampleEntryV1(codingname) extends SampleEntry (codingname){\r\n\tunsigned int(16) entry_version;\t// shall be 1, \r\n\t\t\t\t\t\t\t// and shall be in an stsd with version ==1\r\n\tconst unsigned int(16)[3] reserved = 0;\r\n\ttemplate unsigned int(16) channelcount;\t// shall be correct\r\n\ttemplate unsigned int(16) samplesize = 16;\r\n\tunsigned int(16) pre_defined = 0;\r\n\tconst unsigned int(16) reserved = 0 ;\r\n\ttemplate unsigned int(32) samplerate = 1<<16;\r\n\t// optional boxes follow\r\n\tSamplingRateBox();\r\n\tBox ();\t\t// further boxes as needed\r\n\tChannelLayout();\r\n\tDownMixInstructions() [];\r\n\tDRCCoefficientsBasic() [];\r\n\tDRCInstructionsBasic() [];\r\n\tDRCCoefficientsUniDRC() [];\r\n\tDRCInstructionsUniDRC() [];\r\n\t// we permit only one DRC Extension box:\r\n\tUniDrcConfigExtension();\r\n\t// optional boxes follow\r\n\tChannelLayout();\r\n}" + }, + { + "fourcc": "resm", + "description": "Restricted metadata", + "type": "MetaDataSampleEntry", + "containers": ["stsd"], + "syntax": "class MetaDataSampleEntry(codingname) extends SampleEntry (codingname) {\r\n}" + }, + { + "fourcc": "rest", + "description": "Restricted text", + "type": "SimpleTextSampleEntry", + "containers": ["stsd"], + "syntax": "TODO: Syntax from ISOBMFF Table 8 seems to refer to wrong SampleEntry class. It should be PlainTextSampleEntry" + }, + { + "fourcc": "resu", + "description": "Restricted subtitle", + "type": "XMLSubitleSampleEntry", + "containers": ["stsd"], + "syntax": "TODO: Probably it should be SubtitleSampleEntry" + }, + { + "fourcc": "ress", + "description": "Restricted system", + "type": "MP4VisualSampleEntry", + "containers": ["stsd"], + "syntax": "System streams are defined in ISO/IEC 14496-14" + }, + { + "fourcc": "resf", + "description": "Restricted font", + "type": "FontSampleEntry", + "containers": ["stsd"], + "syntax": "class FontSampleEntry(codingname) extends SampleEntry (codingname){\r\n\t//other boxes from derived specifications\r\n}" + }, + { + "fourcc": "resp", + "description": "Restricted haptics", + "type": "HapticSampleEntry", + "containers": ["stsd"], + "syntax": "aligned(8) class HapticSampleEntry(codingname)\r\n\textends SampleEntry(codingname) {\r\n\tBox()[]\totherboxes;\r\n}" + }, + { + "fourcc": "res3", + "description": "Restricted volumteric visual", + "type": "VolumetricVisualSampleEntry", + "containers": ["stsd"], + "syntax": "class VolumetricVisualSampleEntry(codingname) \r\n\textends SampleEntry (codingname){\r\n\tunsigned int(8)[32] compressorname;\r\n\t// other boxes from derived specifications\r\n}" + } + ] +} From 23eb7cafae51319ccb6b5286989e058d29c5c9af Mon Sep 17 00:00:00 2001 From: Deniz Ugur Date: Thu, 31 Aug 2023 22:28:49 -0700 Subject: [PATCH 21/42] Fixes for `boxes.py` checks > Check if type has inheritors, if so it may be abstract class > Convert warning to error --- src/construct/boxes.py | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/src/construct/boxes.py b/src/construct/boxes.py index 993a44a..0b27729 100644 --- a/src/construct/boxes.py +++ b/src/construct/boxes.py @@ -211,11 +211,20 @@ def main(): for container in _box.containers: if isinstance(container, dict): if "type" in container: - if container["type"] not in [_box.type for _box in all_boxes]: - # Ignore '*' - if container["type"] == "*": - continue - buffer.append(f"{container['type']}") + # If type is already in all_boxes, skip + if container["type"] in [_box.type for _box in all_boxes]: + continue + + # If type is in TYPE_HIERARCHY, skip + if container["type"] in TYPE_HIERARCHY: + continue + + # If type is *, skip + if container["type"] == "*": + continue + + # Could not find the type + buffer.append(f"{container['type']}") if len(buffer) > 0: logger.error(f"Unknown types ({len(set(buffer))}): {set(sorted(buffer))}") @@ -260,9 +269,8 @@ def main(): if _box.type == "": buffer.append(f"{_box.fourcc} ({_box.type})") - # FIXME: This should be an error if len(buffer) > 0: - logger.warning( + logger.error( f"Boxes with empty type ({len(set(buffer))}): {set(sorted(buffer))}" ) From 021c230afcf6fb4669272b59d3f9081ff26e45bf Mon Sep 17 00:00:00 2001 From: Deniz Ugur Date: Fri, 1 Sep 2023 10:53:27 -0700 Subject: [PATCH 22/42] empty fourcc check --- src/construct/boxes.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/construct/boxes.py b/src/construct/boxes.py index 0b27729..5a6917a 100644 --- a/src/construct/boxes.py +++ b/src/construct/boxes.py @@ -274,6 +274,17 @@ def main(): f"Boxes with empty type ({len(set(buffer))}): {set(sorted(buffer))}" ) + # Show boxes with empty fourcc + buffer = [] + for _box in all_boxes: + if _box.incomplete: + continue + if _box.fourcc == "": + buffer.append(f"{_box.fourcc} ({_box.type})") + + if len(buffer) > 0: + logger.error(f"There are {len(set(buffer))} box(es) with empty fourcc") + # Show duplicates (same fourcc) buffer = [] for _box in all_boxes: From 58c18c8749df87fdabb0484e4e9c2fb78d20b499 Mon Sep 17 00:00:00 2001 From: Dimitri Podborski Date: Tue, 5 Sep 2023 12:17:37 -0700 Subject: [PATCH 23/42] add a new script to update features based on doc --- src/feature_extractor/spec_features.py | 2 +- src/feature_extractor/standard_features.py | 202 +++++++++++++++++++++ src/pyproject.toml | 8 +- 3 files changed, 208 insertions(+), 4 deletions(-) create mode 100644 src/feature_extractor/standard_features.py diff --git a/src/feature_extractor/spec_features.py b/src/feature_extractor/spec_features.py index d963f5a..6d7924f 100644 --- a/src/feature_extractor/spec_features.py +++ b/src/feature_extractor/spec_features.py @@ -104,7 +104,7 @@ def extract_spec_features_mp4ra(): # get/update MP4RA source if not os.path.exists(MP4RA_PATH): print(f"clone MP4RA repo {MP4RA_URL} to {MP4RA_PATH}") - Repo.clone_from(MP4RA_URL, MP4RA_PATH, branch="dev") + Repo.clone_from(MP4RA_URL, MP4RA_PATH, branch="main") else: print(f"pull MP4RA in {MP4RA_PATH}") repo = Repo(MP4RA_PATH) diff --git a/src/feature_extractor/standard_features.py b/src/feature_extractor/standard_features.py new file mode 100644 index 0000000..81a52c4 --- /dev/null +++ b/src/feature_extractor/standard_features.py @@ -0,0 +1,202 @@ +import argparse +import os +from docx import Document +import json +import re +from git import Repo +import csv + +MP4RA_PATH = "./mp4ra" +MP4RA_URL = "https://github.com/mp4ra/mp4ra.github.io.git" + + +def get_mp4ra_entries(csv_file, feature_type): + mp4ra_entries = [] + code_idx = 0 + description_idx = 1 + spec_idx = 2 + if feature_type == "item_references" or feature_type == "sample_groups": + spec_idx = 3 + csv_reader = csv.reader(csv_file, delimiter=",") + line_idx = 0 + for row in csv_reader: + line_idx += 1 + if line_idx == 1: + continue + code = row[code_idx].strip() + code = code.replace("$20", " ") + description = row[description_idx].strip() + spec = row[spec_idx].strip() + + entry = {"fourcc": code, "description": description, "spec": spec} + mp4ra_entries.append(entry) + return mp4ra_entries + + +def get_4CC_and_class(boxsyntax): + # Initialize variables to None + class_name = None + four_cc = None + + class_name_match = re.search( + r"class ([a-zA-Z0-9_]+) extends (Box|FullBox)", boxsyntax + ) + four_cc_match = re.search(r"(Box|FullBox)\('([^']+)'", boxsyntax) + + if class_name_match: + class_name = class_name_match.group(1) + if four_cc_match: + four_cc = four_cc_match.group(2) + + return class_name, four_cc + + +def _update_boxes(entries, paragraphs, mp4ra_entries): + boxes = [] + fullboxes = [] + + for paragraph in paragraphs: + matches = re.findall( + r"(class [a-zA-Z0-9_]+ extends Box\([^)]*\)\s*{[^}]*})", paragraph + ) + for match in matches: + if match not in boxes: + boxes.append(match) + matches = re.findall( + r"(class [a-zA-Z0-9_]+ extends FullBox\([^)]*\)\s*{[^}]*})", paragraph + ) + for match in matches: + if match not in boxes: + fullboxes.append(match) + + # let the user know what we found. + print(f"Found {len(boxes) + len(fullboxes)} Boxes and FullBoxes") + print(f"{5*'----'} {len(boxes)} Box'es {5*'----'}") + for box in boxes: + classname, fourcc = get_4CC_and_class(box) + print(f"{fourcc}: {classname}") + print(f"{5*'----'} {len(fullboxes)} FullBox'es {5*'----'}") + for box in fullboxes: + classname, fourcc = get_4CC_and_class(box) + print(f"{fourcc}: {classname}") + print(11 * "----") + + # print(entries) + # now see if we actually found something new + for boxsyntax in boxes: + classname, fourcc = get_4CC_and_class(boxsyntax) + foundentries = [entry for entry in entries if entry["fourcc"] == fourcc] + assert len(foundentries) <= 1, f"More than 1 entries fround for {fourcc}" + if len(foundentries) == 1: + # TODO: replace type with the classname and add parenttype Box + # entry = foundentries[0] + # if entry["type"] != classname: + # print(f'Classname/Type mismatch {fourcc}. {classname}/{entry["type"]}') + continue + description = "" + ra_entries = [ + ra_entry for ra_entry in mp4ra_entries if ra_entry["fourcc"] == fourcc + ] + if len(ra_entries) == 1: + description = ra_entries[0]["description"] + newentry = { + "fourcc": fourcc, + "description": description, + "containers": [], + "type": "Box", + "syntax": boxsyntax, + } + print(f"add new entry: {fourcc}") + entries.append(newentry) + for boxsyntax in fullboxes: + classname, fourcc = get_4CC_and_class(boxsyntax) + foundentries = [entry for entry in entries if entry["fourcc"] == fourcc] + assert len(foundentries) <= 1, f"More than 1 entries fround for {fourcc}" + if len(foundentries) == 1: + # TODO: replace type with the classname and add parenttype FullBox + # entry = foundentries[0] + # if entry["type"] != classname: + # print(f'Classname/Type mismatch {fourcc}. {classname}/{entry["type"]}') + continue + description = "" + ra_entries = [ + ra_entry for ra_entry in mp4ra_entries if ra_entry["fourcc"] == fourcc + ] + if len(ra_entries) == 1: + description = ra_entries[0]["description"] + newentry = { + "fourcc": fourcc, + "description": description, + "containers": [], + "type": "Box", + "syntax": boxsyntax, + } + print(f"add new entry: {fourcc}") + entries.append(newentry) + return len(entries) + + +def update(): + parser = argparse.ArgumentParser( + description="Update standard features based on the spec word document and MP4RA." + ) + parser.add_argument( + "-i", "--input", help="Input json file with standard features.", required=True + ) + parser.add_argument( + "-s", "--spec", help="Input specification .docx file", required=True + ) + parser.add_argument( + "--allpars", + dest="allpars", + action="store_true", + help="Use all paragraphs and not only those which are formatted with code", + ) + args = parser.parse_args() + + # get/update MP4RA + if not os.path.exists(MP4RA_PATH): + print(f"clone MP4RA repo {MP4RA_URL} to {MP4RA_PATH}") + Repo.clone_from(MP4RA_URL, MP4RA_PATH, branch="main") + else: + print(f"pull MP4RA in {MP4RA_PATH}") + repo = Repo(MP4RA_PATH) + repo.remotes.origin.pull() + + # load json file + with open(args.input, "r") as json_file: + data = json.load(json_file) + + # open and parse spec + doc = Document(args.spec) + # filter styles by string "code" in their names + codestyles = [] + for style in doc.styles: + if "code" in style.name.lower(): + codestyles.append(style) + # get text of all code paragraphs + codeparagraphs = [] + for par in doc.paragraphs: + if par.style in codestyles: + codeparagraphs.append(par.text) + elif args.allpars: + codeparagraphs.append(par.text) + + if "boxes.json" in args.input: + # get associated type from MP4RA + tmp_path = os.path.join(MP4RA_PATH, "CSV", "boxes.csv") + with open(tmp_path, "r") as f: + mp4ra_entries = get_mp4ra_entries(f, "boxes") + tmp_path = os.path.join(MP4RA_PATH, "CSV", "sample-entries-boxes.csv") + with open(tmp_path, "r") as f: + mp4ra_se_boxes = get_mp4ra_entries(f, "boxes") + mp4ra_entries += mp4ra_se_boxes + + cnt_before = len(data["entries"]) + cnt_after = _update_boxes(data["entries"], codeparagraphs, mp4ra_entries) + print(f"New entries count: {cnt_after - cnt_before}") + with open(args.input, "w") as json_file: + json.dump(data, json_file, indent=2) + else: + head, tail = os.path.split(args.input) + print(f"No support for {tail} yet implemented.") diff --git a/src/pyproject.toml b/src/pyproject.toml index a230bda..5a4ab24 100644 --- a/src/pyproject.toml +++ b/src/pyproject.toml @@ -33,9 +33,11 @@ build-backend = "poetry.core.masonry.api" [tool.poetry.scripts] # Spec features -extract-spec-features = "feature_extractor.spec_features:extract_spec_features" -update-spec-features = "feature_extractor.spec_features:update_spec_features" -check-spec-features = "feature_extractor.spec_features:check_spec_features" +# these are obsolete now (I'll keep them for now, just in case) +# extract-spec-features = "feature_extractor.spec_features:extract_spec_features" +# update-spec-features = "feature_extractor.spec_features:update_spec_features" +# check-spec-features = "feature_extractor.spec_features:check_spec_features" +update-standard-features = "feature_extractor.standard_features:update" # File features contribute-files = "feature_extractor.file_features:contribute_files" From 55ae33e8a31bd0d3b825987072f84f09cd10fd5e Mon Sep 17 00:00:00 2001 From: Dimitri Podborski Date: Tue, 5 Sep 2023 12:22:47 -0700 Subject: [PATCH 24/42] run update script on Part15 boxes using WG03N0234_20296_14496-15_FDIS_v4_clean.docx --- .gitignore | 5 +- data/standard_features/14496-15/boxes.json | 105 +++++++++++++++++++++ 2 files changed, 109 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 132b814..66bf3a9 100644 --- a/.gitignore +++ b/.gitignore @@ -360,4 +360,7 @@ pyrightconfig.json .history .ionide -# End of https://www.toptal.com/developers/gitignore/api/visualstudiocode,python,node,macos \ No newline at end of file +# End of https://www.toptal.com/developers/gitignore/api/visualstudiocode,python,node,macos + + +src/mp4ra diff --git a/data/standard_features/14496-15/boxes.json b/data/standard_features/14496-15/boxes.json index 84abf3f..2359f2f 100644 --- a/data/standard_features/14496-15/boxes.json +++ b/data/standard_features/14496-15/boxes.json @@ -342,6 +342,111 @@ ], "type": "Box", "syntax": "class LHEVCConfigurationBox extends Box('lhvC') {\n\tLHEVCDecoderConfigurationRecord() LHEVCConfig;\n}" + }, + { + "fourcc": "m4ds", + "description": "MPEG-4 descriptors", + "containers": [], + "type": "Box", + "syntax": "class MPEG4ExtensionDescriptorsBox extends Box('m4ds') {\n\tDescriptor Descr[0 .. 255];\n}" + }, + { + "fourcc": "svcC", + "description": "SVC configuration", + "containers": [], + "type": "Box", + "syntax": "class SVCConfigurationBox extends Box('svcC') {\n\tSVCDecoderConfigurationRecord() SVCConfig;\n}" + }, + { + "fourcc": "seib", + "description": "Scalability information", + "containers": [], + "type": "Box", + "syntax": "class ScalabilityInformationSEIBox extends Box('seib', size)\n{\n\tunsigned int(8*size-64)\tscalinfosei; \n}" + }, + { + "fourcc": "svcP", + "description": "SVC priority assignments", + "containers": [], + "type": "Box", + "syntax": "class SVCPriorityAssignmentBox extends Box('svcP')\n{\n\tunsigned int(8)\tmethod_count;\n\tstring PriorityAssignmentURI[method_count]; \n}" + }, + { + "fourcc": "vsib", + "description": "View scalability information", + "containers": [], + "type": "Box", + "syntax": "class ViewScalabilityInformationSEIBox extends Box('vsib', size)\n{\n\tunsigned int(8*size-64)\tmvcscalinfosei; \n}" + }, + { + "fourcc": "3sib", + "description": "MVD Scalability Information SEI Message Box", + "containers": [], + "type": "Box", + "syntax": "class MVDScalabilityInformationSEIBox extends Box('3sib', size)\n{\n\tunsigned int(8*size-64)\tmvdscalinfosei;\n}" + }, + { + "fourcc": "mvcP", + "description": "MVC priority assignment", + "containers": [], + "type": "Box", + "syntax": "class MVCViewPriorityAssignmentBox extends Box('mvcP')\n{\n\tunsigned int(8)\tmethod_count;\n\tstring PriorityAssignmentURI[method_count]; \n}" + }, + { + "fourcc": "hvtC", + "description": "HEVC Tile Configuration", + "containers": [], + "type": "Box", + "syntax": "class HEVCTileConfigurationBox extends Box('hvtC') {\n\tHEVCTileTierLevelConfigurationRecord() HEVCTileTierLevelConfig;\n}" + }, + { + "fourcc": "evcC", + "description": "EVC configuration", + "containers": [], + "type": "Box", + "syntax": "class EVCConfigurationBox extends Box('evcC') {\n\tEVCDecoderConfigurationRecord() EVCConfig;\n}" + }, + { + "fourcc": "svop", + "description": "", + "containers": [], + "type": "Box", + "syntax": "class SVCDependencyRangeBox extends Box('svop') {\n\tunsigned int(3) min_dependency_id;\n\tunsigned int(3) min_temporal_id;\n\tbit(6) reserved = 0;\n\tunsigned int(4) min_quality_id;\n\tunsigned int(3) max_dependency_id;\n\tunsigned int(3) max_temporal_id;\n\tbit(6) reserved = 0;\n\tunsigned int(4) max_quality_id;\n}" + }, + { + "fourcc": "qlif", + "description": "Layer quality assignments", + "containers": [], + "type": "Box", + "syntax": "class SVCPriorityLayerInfoBox extends Box('qlif'){\n\tunsigned int(8) pr_layer_num;\n\tfor(j=0; j< pr_layer_num; j++){\n\t\tunsigned int(8) pr_layer;\n\t\tunsigned int(24) profile_level_idc;\n\t\tunsigned int(32) max_bitrate;\n\t\tunsigned int(32) avg_bitrate;\n\t}" + }, + { + "fourcc": "vvcC", + "description": "VVC video configuration", + "containers": [], + "type": "Box", + "syntax": "class VvcConfigurationBox extends FullBox('vvcC',version=0,flags) {\n\tVvcDecoderConfigurationRecord() VvcConfig;\n}" + }, + { + "fourcc": "vvnC", + "description": "VVC Network Abstraction Layer unit configuration", + "containers": [], + "type": "Box", + "syntax": "class VvcNALUConfigBox extends FullBox('vvnC',version=0,flags) {\n\tunsigned int(6) reserved=0;\n\tunsigned int(2) LengthSizeMinusOne;\n}" + }, + { + "fourcc": "dhec", + "description": "Default HEVC extractor constructor box", + "containers": [], + "type": "Box", + "syntax": "class DefaultHevcExtractorConstructorBox extends FullBox('dhec'){\n\tunsigned int(32) num_entries;\n\tfor (i=1; i<= num_entries; i++) { \n\t\tunsigned int(8) constructor_type;\n\t\tunsigned int(8) flags; \n\t\tif( constructor_type == 0 ) \n\t\t\tSampleConstructor();\n\t\telse if( constructor_type == 2 ) \n\t\t\tInlineConstructor();\n\t\telse if( constructor_type == 3 ) \n\t\t\tSampleConstructorFromTrackGroup();\n\t\telse if( constructor_type == 6 ) \n\t\t\tNALUStartInlineConstructor ();\n\t}" + }, + { + "fourcc": "svmC", + "description": "SVC information configuration", + "containers": [], + "type": "Box", + "syntax": "class SVCMetadataSampleConfigBox extends FullBox('svmC')\n{\n\tint i;\t\t// local variable, not a field\n\tunsigned int(8) sample_statement_type;\t/* normally group, or seq */\n\tunsigned int(8) default_statement_type;\n\tunsigned int(8) default_statement_length;\n\tunsigned int(8) entry_count;\n\tfor (i=1; i<=entry_count; i++) {\n\t\tunsigned int(8) statement_type;\t// from the user extension ranges\n\t\tstring statement_namespace;\n\t}" } ] } From 360a03892452db046de8698a7e7eb4341d665656 Mon Sep 17 00:00:00 2001 From: Dimitri Podborski Date: Tue, 5 Sep 2023 13:00:34 -0700 Subject: [PATCH 25/42] wip: adding conainers --- data/standard_features/14496-15/boxes.json | 134 +++++++++++++++++++-- 1 file changed, 124 insertions(+), 10 deletions(-) diff --git a/data/standard_features/14496-15/boxes.json b/data/standard_features/14496-15/boxes.json index 2359f2f..8b400fe 100644 --- a/data/standard_features/14496-15/boxes.json +++ b/data/standard_features/14496-15/boxes.json @@ -346,69 +346,183 @@ { "fourcc": "m4ds", "description": "MPEG-4 descriptors", - "containers": [], + "containers": [ + { + "AVCSampleEntry": ["avc1", "avc3"] + }, + { + "AVC2SampleEntry": ["avc2", "avc4"] + }, + { + "SVCSampleEntry": ["svc1", "svc2"] + }, + { + "MVCSampleEntry": ["mvc1", "mvc2", "mvc3", "mvc4"] + }, + { + "MVCDSampleEntry": ["mvd1", "mvd2", "mvd3", "mvd4"] + }, + { + "A3DSampleEntry": ["a3d1", "a3d2", "a3d3", "a3d4"] + }, + { + "HEVCSampleEntry": ["hvc1", "hev1"] + }, + { + "LHEVCSampleEntry": ["lhv1", "lhe1"] + }, + { + "VvcSampleEntry": ["vvc1", "vvi1"] + }, + { + "EVCSampleEntry": ["evc1"] + } + ], "type": "Box", "syntax": "class MPEG4ExtensionDescriptorsBox extends Box('m4ds') {\n\tDescriptor Descr[0 .. 255];\n}" }, { "fourcc": "svcC", "description": "SVC configuration", - "containers": [], + "containers": [ + { + "AVCSVCSampleEntry": ["avc1", "avc3"] + }, + { + "AVC2SVCSampleEntry": ["avc2", "avc4"] + }, + { + "SVCSampleEntry": ["svc1", "svc2"] + } + ], "type": "Box", "syntax": "class SVCConfigurationBox extends Box('svcC') {\n\tSVCDecoderConfigurationRecord() SVCConfig;\n}" }, { "fourcc": "seib", "description": "Scalability information", - "containers": [], + "containers": [ + { + "AVCSVCSampleEntry": ["avc1", "avc3"] + }, + { + "AVC2SVCSampleEntry": ["avc2", "avc4"] + }, + { + "SVCSampleEntry": ["svc1", "svc2"] + } + ], "type": "Box", "syntax": "class ScalabilityInformationSEIBox extends Box('seib', size)\n{\n\tunsigned int(8*size-64)\tscalinfosei; \n}" }, { "fourcc": "svcP", "description": "SVC priority assignments", - "containers": [], + "containers": [ + { + "AVCSVCSampleEntry": ["avc1", "avc3"] + }, + { + "AVC2SVCSampleEntry": ["avc2", "avc4"] + }, + { + "SVCSampleEntry": ["svc1", "svc2"] + }, + { + "SVCMetadataSampleEntry": ["svcM"] + } + ], "type": "Box", "syntax": "class SVCPriorityAssignmentBox extends Box('svcP')\n{\n\tunsigned int(8)\tmethod_count;\n\tstring PriorityAssignmentURI[method_count]; \n}" }, { "fourcc": "vsib", "description": "View scalability information", - "containers": [], + "containers": [ + { + "AVCMVCSampleEntry": ["avc1", "avc3"] + }, + { + "AVC2MVCSampleEntry": ["avc2", "avc4"] + }, + { + "MVCSampleEntry": ["mvc1", "mvc2", "mvc3", "mvc4"] + } + ], "type": "Box", "syntax": "class ViewScalabilityInformationSEIBox extends Box('vsib', size)\n{\n\tunsigned int(8*size-64)\tmvcscalinfosei; \n}" }, { "fourcc": "3sib", "description": "MVD Scalability Information SEI Message Box", - "containers": [], + "containers": [ + { + "AVCMVCSampleEntry": ["avc1", "avc3"] + }, + { + "AVC2MVCSampleEntry": ["avc2", "avc4"] + }, + { + "MVCSampleEntry": ["mvc1", "mvc2", "mvc3", "mvc4"] + }, + { + "MVCDSampleEntry": ["mvd1", "mvd2", "mvd3", "mvd4"] + }, + { + "A3DSampleEntry": ["a3d1", "a3d2", "a3d3", "a3d4"] + } + ], "type": "Box", "syntax": "class MVDScalabilityInformationSEIBox extends Box('3sib', size)\n{\n\tunsigned int(8*size-64)\tmvdscalinfosei;\n}" }, { "fourcc": "mvcP", "description": "MVC priority assignment", - "containers": [], + "containers": [ + { + "AVCMVCSampleEntry": ["avc1", "avc3"] + }, + { + "AVC2MVCSampleEntry": ["avc2", "avc4"] + }, + { + "MVCSampleEntry": ["mvc1", "mvc2", "mvc3", "mvc4"] + } + ], "type": "Box", "syntax": "class MVCViewPriorityAssignmentBox extends Box('mvcP')\n{\n\tunsigned int(8)\tmethod_count;\n\tstring PriorityAssignmentURI[method_count]; \n}" }, { "fourcc": "hvtC", "description": "HEVC Tile Configuration", - "containers": [], + "containers": [ + { + "HEVCTileSampleEntry": ["hvt1"] + }, + { + "HEVCTileSSHInfoSampleEntry": ["hvt3"] + }, + { + "HEVCSliceSegmentDataSampleEntry": ["hvt2"] + } + ], "type": "Box", "syntax": "class HEVCTileConfigurationBox extends Box('hvtC') {\n\tHEVCTileTierLevelConfigurationRecord() HEVCTileTierLevelConfig;\n}" }, { "fourcc": "evcC", "description": "EVC configuration", - "containers": [], + "containers": [ + { + "EVCSampleEntry": ["evc1"] + } + ], "type": "Box", "syntax": "class EVCConfigurationBox extends Box('evcC') {\n\tEVCDecoderConfigurationRecord() EVCConfig;\n}" }, { "fourcc": "svop", - "description": "", + "description": "SVC dependency range", "containers": [], "type": "Box", "syntax": "class SVCDependencyRangeBox extends Box('svop') {\n\tunsigned int(3) min_dependency_id;\n\tunsigned int(3) min_temporal_id;\n\tbit(6) reserved = 0;\n\tunsigned int(4) min_quality_id;\n\tunsigned int(3) max_dependency_id;\n\tunsigned int(3) max_temporal_id;\n\tbit(6) reserved = 0;\n\tunsigned int(4) max_quality_id;\n}" From 546cd725ce27b981ad0c3b17d93c4de939616b91 Mon Sep 17 00:00:00 2001 From: Dimitri Podborski Date: Tue, 5 Sep 2023 13:04:01 -0700 Subject: [PATCH 26/42] svop container is a scif sample group related to #67 --- data/standard_features/14496-15/boxes.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/standard_features/14496-15/boxes.json b/data/standard_features/14496-15/boxes.json index 8b400fe..a367920 100644 --- a/data/standard_features/14496-15/boxes.json +++ b/data/standard_features/14496-15/boxes.json @@ -523,7 +523,7 @@ { "fourcc": "svop", "description": "SVC dependency range", - "containers": [], + "containers": ["sgpd"], "type": "Box", "syntax": "class SVCDependencyRangeBox extends Box('svop') {\n\tunsigned int(3) min_dependency_id;\n\tunsigned int(3) min_temporal_id;\n\tbit(6) reserved = 0;\n\tunsigned int(4) min_quality_id;\n\tunsigned int(3) max_dependency_id;\n\tunsigned int(3) max_temporal_id;\n\tbit(6) reserved = 0;\n\tunsigned int(4) max_quality_id;\n}" }, From c5781d1819befc10415aa28b002ea6b8ca3b7d4a Mon Sep 17 00:00:00 2001 From: Dimitri Podborski Date: Tue, 5 Sep 2023 13:21:33 -0700 Subject: [PATCH 27/42] adding conainers --- data/standard_features/14496-15/boxes.json | 33 ++++++++++++++++++---- 1 file changed, 28 insertions(+), 5 deletions(-) diff --git a/data/standard_features/14496-15/boxes.json b/data/standard_features/14496-15/boxes.json index a367920..5450650 100644 --- a/data/standard_features/14496-15/boxes.json +++ b/data/standard_features/14496-15/boxes.json @@ -530,35 +530,58 @@ { "fourcc": "qlif", "description": "Layer quality assignments", - "containers": [], + "containers": [ + { + "SVCMetadataSampleEntry": ["svcM"] + } + ], "type": "Box", "syntax": "class SVCPriorityLayerInfoBox extends Box('qlif'){\n\tunsigned int(8) pr_layer_num;\n\tfor(j=0; j< pr_layer_num; j++){\n\t\tunsigned int(8) pr_layer;\n\t\tunsigned int(24) profile_level_idc;\n\t\tunsigned int(32) max_bitrate;\n\t\tunsigned int(32) avg_bitrate;\n\t}" }, { "fourcc": "vvcC", "description": "VVC video configuration", - "containers": [], + "containers": [ + { + "VvcSampleEntry": ["vvc1", "vvi1"] + } + ], "type": "Box", "syntax": "class VvcConfigurationBox extends FullBox('vvcC',version=0,flags) {\n\tVvcDecoderConfigurationRecord() VvcConfig;\n}" }, { "fourcc": "vvnC", "description": "VVC Network Abstraction Layer unit configuration", - "containers": [], + "containers": [ + { + "VvcSubpicSampleEntry": ["vvs1"] + }, + { + "VvcNonVCLSampleEntry": ["vvcN"] + } + ], "type": "Box", "syntax": "class VvcNALUConfigBox extends FullBox('vvnC',version=0,flags) {\n\tunsigned int(6) reserved=0;\n\tunsigned int(2) LengthSizeMinusOne;\n}" }, { "fourcc": "dhec", "description": "Default HEVC extractor constructor box", - "containers": [], + "containers": [ + { + "HEVCSampleEntry": ["hvc3", "hev3"] + } + ], "type": "Box", "syntax": "class DefaultHevcExtractorConstructorBox extends FullBox('dhec'){\n\tunsigned int(32) num_entries;\n\tfor (i=1; i<= num_entries; i++) { \n\t\tunsigned int(8) constructor_type;\n\t\tunsigned int(8) flags; \n\t\tif( constructor_type == 0 ) \n\t\t\tSampleConstructor();\n\t\telse if( constructor_type == 2 ) \n\t\t\tInlineConstructor();\n\t\telse if( constructor_type == 3 ) \n\t\t\tSampleConstructorFromTrackGroup();\n\t\telse if( constructor_type == 6 ) \n\t\t\tNALUStartInlineConstructor ();\n\t}" }, { "fourcc": "svmC", "description": "SVC information configuration", - "containers": [], + "containers": [ + { + "SVCMetadataSampleEntry": ["svcM"] + } + ], "type": "Box", "syntax": "class SVCMetadataSampleConfigBox extends FullBox('svmC')\n{\n\tint i;\t\t// local variable, not a field\n\tunsigned int(8) sample_statement_type;\t/* normally group, or seq */\n\tunsigned int(8) default_statement_type;\n\tunsigned int(8) default_statement_length;\n\tunsigned int(8) entry_count;\n\tfor (i=1; i<=entry_count; i++) {\n\t\tunsigned int(8) statement_type;\t// from the user extension ranges\n\t\tstring statement_namespace;\n\t}" } From f2071c1d607a0237ab608f10661da5e20116b4e3 Mon Sep 17 00:00:00 2001 From: Dimitri Podborski Date: Tue, 5 Sep 2023 17:22:01 -0700 Subject: [PATCH 28/42] codec support --- src/feature_extractor/standard_features.py | 62 ++++++++++++++++++++-- 1 file changed, 59 insertions(+), 3 deletions(-) diff --git a/src/feature_extractor/standard_features.py b/src/feature_extractor/standard_features.py index 81a52c4..4dc0582 100644 --- a/src/feature_extractor/standard_features.py +++ b/src/feature_extractor/standard_features.py @@ -38,10 +38,12 @@ def get_4CC_and_class(boxsyntax): class_name = None four_cc = None + # Search for 'class NAME[ ]*()[ ]* extends ANY_TYPE' class_name_match = re.search( - r"class ([a-zA-Z0-9_]+) extends (Box|FullBox)", boxsyntax + r"class ([a-zA-Z0-9_]+)\s*\(\s*\)? extends ([a-zA-Z0-9_]+)", boxsyntax ) - four_cc_match = re.search(r"(Box|FullBox)\('([^']+)'", boxsyntax) + # Search for "ANY_TYPE[ ]*('4CC')" + four_cc_match = re.search(r"([a-zA-Z0-9_]+)\s*\('([^']+)'", boxsyntax) if class_name_match: class_name = class_name_match.group(1) @@ -55,6 +57,7 @@ def _update_boxes(entries, paragraphs, mp4ra_entries): boxes = [] fullboxes = [] + # filter out boxes / fullboxes for paragraph in paragraphs: matches = re.findall( r"(class [a-zA-Z0-9_]+ extends Box\([^)]*\)\s*{[^}]*})", paragraph @@ -81,7 +84,6 @@ def _update_boxes(entries, paragraphs, mp4ra_entries): print(f"{fourcc}: {classname}") print(11 * "----") - # print(entries) # now see if we actually found something new for boxsyntax in boxes: classname, fourcc = get_4CC_and_class(boxsyntax) @@ -136,6 +138,50 @@ def _update_boxes(entries, paragraphs, mp4ra_entries): return len(entries) +def _update_codecs(entries, paragraphs, mp4ra_entries): + filtered = [] + for paragraph in paragraphs: + # Search for 'extends SOME_TEXTSampleEntry' + match = re.search(r"extends\s+(\w+SampleEntry)", paragraph) + if match: + filtered.append(paragraph) + + # let the user know what we found. + print(f"Found {len(filtered)} Codecs") + for codec in filtered: + classname, fourcc = get_4CC_and_class(codec) + print(f"{fourcc}: {classname}") + print(11 * "----") + + # now see if we actually found something new + for syntax in filtered: + classname, fourcc = get_4CC_and_class(syntax) + foundentries = [entry for entry in entries if entry["fourcc"] == fourcc] + if len(foundentries) == 1: + # TODO: add parenttype FooSampleEntry + # entry = foundentries[0] + # if entry["type"] != classname: + # print(f'Classname/Type mismatch {fourcc}. {classname}/{entry["type"]}') + continue + description = "" + ra_entries = [ + ra_entry for ra_entry in mp4ra_entries if ra_entry["fourcc"] == fourcc + ] + if len(ra_entries) == 1: + description = ra_entries[0]["description"] + newentry = { + "fourcc": fourcc, + "description": description, + "containers": ["stsd"], + "type": classname, + "syntax": syntax, + } + print(f"add new entry: {fourcc}") + entries.append(newentry) + + return len(entries) + + def update(): parser = argparse.ArgumentParser( description="Update standard features based on the spec word document and MP4RA." @@ -197,6 +243,16 @@ def update(): print(f"New entries count: {cnt_after - cnt_before}") with open(args.input, "w") as json_file: json.dump(data, json_file, indent=2) + elif "codecs.json" in args.input: + # get associated type from MP4RA + tmp_path = os.path.join(MP4RA_PATH, "CSV", "sample-entries.csv") + with open(tmp_path, "r") as f: + mp4ra_entries = get_mp4ra_entries(f, "sample-entries") + cnt_before = len(data["entries"]) + cnt_after = _update_codecs(data["entries"], codeparagraphs, mp4ra_entries) + print(f"New entries count: {cnt_after - cnt_before}") + with open(args.input, "w") as json_file: + json.dump(data, json_file, indent=2) else: head, tail = os.path.split(args.input) print(f"No support for {tail} yet implemented.") From 7296ac400b7fe6c5720dfdbbf52728d62fee69d4 Mon Sep 17 00:00:00 2001 From: Dimitri Podborski Date: Tue, 5 Sep 2023 17:47:10 -0700 Subject: [PATCH 29/42] add codecs based on NALUFF WG03N0234_20296_14496-15_FDIS_v4_clean.docx --- data/standard_features/14496-15/codecs.json | 113 +++++++++++++++++++- src/feature_extractor/standard_features.py | 7 +- 2 files changed, 115 insertions(+), 5 deletions(-) diff --git a/data/standard_features/14496-15/codecs.json b/data/standard_features/14496-15/codecs.json index 02b1769..22384a2 100644 --- a/data/standard_features/14496-15/codecs.json +++ b/data/standard_features/14496-15/codecs.json @@ -103,7 +103,7 @@ { "fourcc": "avcp", "description": "AVC parameter set", - "type": "VisualSampleEntry", + "type": "AVCParameterSampleEntry", "containers": ["stsd"], "syntax": "class AVCParameterSampleEntry() extends VisualSampleEntry ('avcp'){\r\n\tAVCConfigurationBox\tconfig;\r\n}" }, @@ -247,12 +247,117 @@ "containers": ["stsd"], "syntax": "class A3DSampleEntry() extends VisualSampleEntry ('a3d4') {\r\n\tA3DConfigurationBox\ta3dconfig;\t\t// mandatory\r\n\tMVDScalabilityInformationSEIBox\tmvdscalinfosei;\t// optional\r\n\tViewIdentifierBox\tview_identifiers;\t\t// mandatory\r\n\tMPEG4ExtensionDescriptorsBox descr;\t\t// optional\tIntrinsicCameraParametersBox\tintrinsic_camera_params;\t// optional\r\n\tExtrinsicCameraParametersBox\textrinsic_camera_params\t// optional\r\n}" }, + { + "fourcc": "avc1", + "description": "Advanced Video Coding", + "containers": ["stsd"], + "type": "AVCSVCSampleEntry", + "syntax": "class AVCSVCSampleEntry() extends AVCSampleEntry ('avc1' or 'avc3') {\n\tSVCConfigurationBox\tsvcconfig;\t\t\t// optional\n\tScalabilityInformationSEIBox\tscalability;\t// optional\n\tSVCPriorityAssignmentBox\tmethod;\t\t\t// optional\n}" + }, + { + "fourcc": "avc3", + "description": "Advanced Video Coding", + "containers": ["stsd"], + "type": "AVCSVCSampleEntry", + "syntax": "class AVCSVCSampleEntry() extends AVCSampleEntry ('avc1' or 'avc3') {\n\tSVCConfigurationBox\tsvcconfig;\t\t\t// optional\n\tScalabilityInformationSEIBox\tscalability;\t// optional\n\tSVCPriorityAssignmentBox\tmethod;\t\t\t// optional\n}" + }, + { + "fourcc": "avc2", + "description": "Advanced Video Coding", + "containers": ["stsd"], + "type": "AVC2SVCSampleEntry", + "syntax": "class AVC2SVCSampleEntry() extends AVC2SampleEntry('avc2' or 'avc4') {\n\tSVCConfigurationBox\tsvcconfig;\t\t\t// optional\tScalabilityInformationSEIBox\tscalability;\t// optional\n\tSVCPriorityAssignmentBox\tmethod;\t\t\t// optional\n}" + }, + { + "fourcc": "avc4", + "description": "Advanced Video Coding", + "containers": ["stsd"], + "type": "AVC2SVCSampleEntry", + "syntax": "class AVC2SVCSampleEntry() extends AVC2SampleEntry('avc2' or 'avc4') {\n\tSVCConfigurationBox\tsvcconfig;\t\t\t// optional\tScalabilityInformationSEIBox\tscalability;\t// optional\n\tSVCPriorityAssignmentBox\tmethod;\t\t\t// optional\n}" + }, + { + "fourcc": "svc1", + "description": "Scalable Video Coding", + "containers": ["stsd"], + "type": "SVCSampleEntry", + "syntax": "// Use this if the track is NOT AVC compatible\nclass SVCSampleEntry() extends VisualSampleEntry ('svc1' or 'svc2') {\n\tSVCConfigurationBox\t\tsvcconfig;\n\tMPEG4ExtensionDescriptorsBox descr;\t// optional\n\tScalabilityInformationSEIBox\tscalability;\t// optional\n\tSVCPriorityAssignmentBox\tmethod;\t\t\t// optional\n}" + }, + { + "fourcc": "svc2", + "description": "Scalable Video Coding", + "containers": ["stsd"], + "type": "SVCSampleEntry", + "syntax": "// Use this if the track is NOT AVC compatible\nclass SVCSampleEntry() extends VisualSampleEntry ('svc1' or 'svc2') {\n\tSVCConfigurationBox\t\tsvcconfig;\n\tMPEG4ExtensionDescriptorsBox descr;\t// optional\n\tScalabilityInformationSEIBox\tscalability;\t// optional\n\tSVCPriorityAssignmentBox\tmethod;\t\t\t// optional\n}" + }, { "fourcc": "hvt1", - "description": "HEVC tile track", - "type": "VisualSampleEntry", + "description": "HEVC tile tracks", + "containers": ["stsd"], + "type": "HEVCTileSampleEntry", + "syntax": "class HEVCTileSampleEntry() extends VisualSampleEntry ('hvt1'){\n\tHEVCTileConfigurationBox\tconfig(); // optional\n}" + }, + { + "fourcc": "lht1", + "description": "Layered HEVC tile tracks", + "containers": ["stsd"], + "type": "LHEVCTileSampleEntry", + "syntax": "class LHEVCTileSampleEntry() extends VisualSampleEntry ('lht1'){\n}" + }, + { + "fourcc": "hvt3", + "description": "HEVC Tile Track with Slice Segment Header Info", + "containers": ["stsd"], + "type": "HEVCTileSSHInfoSampleEntry", + "syntax": "class HEVCTileSSHInfoSampleEntry() extends VisualSampleEntry ('hvt3'){\n\tHEVCTileConfigurationBox config(); // optional \n}" + }, + { + "fourcc": "hvt2", + "description": "HEVC slice segment data track", + "containers": ["stsd"], + "type": "HEVCSliceSegmentDataSampleEntry", + "syntax": "class HEVCSliceSegmentDataSampleEntry() extends VisualSampleEntry ('hvt2'){\n\tHEVCTileConfigurationBox\tconfig(); // optional\n}" + }, + { + "fourcc": "vvc1", + "description": "Versatile Video Coding with parameter sets only in sample entries", + "containers": ["stsd"], + "type": "VvcSampleEntry", + "syntax": "class VvcSampleEntry() extends VisualSampleEntry ('vvc1' or 'vvi1') {\n\tVvcConfigurationBox\tconfig;\n\tMPEG4ExtensionDescriptorsBox ();\t// optional\n}" + }, + { + "fourcc": "vvi1", + "description": "Versatile Video Coding with parameter sets only in sample entries", + "containers": ["stsd"], + "type": "VvcSampleEntry", + "syntax": "class VvcSampleEntry() extends VisualSampleEntry ('vvc1' or 'vvi1') {\n\tVvcConfigurationBox\tconfig;\n\tMPEG4ExtensionDescriptorsBox ();\t// optional\n}" + }, + { + "fourcc": "vvs1", + "description": "Versatile Video Coding (VVC) subpicture track that does not contain a conforming VVC bitstream", + "containers": ["stsd"], + "type": "VvcSubpicSampleEntry", + "syntax": "class VvcSubpicSampleEntry() extends VisualSampleEntry ('vvs1') {\n\tVvcNALUConfigBox config;\n}" + }, + { + "fourcc": "vvcN", + "description": "Versatile Video Coding with non-VCL (Video Coding Layer) NAL (Network Abstraction Layer) units only", + "containers": ["stsd"], + "type": "VvcNonVCLSampleEntry", + "syntax": "class VvcNonVCLSampleEntry() extends VisualSampleEntry ('vvcN') {\n\tVvcNALUConfigBox config;\n}" + }, + { + "fourcc": "evc1", + "description": "Essential Video Coding", + "containers": ["stsd"], + "type": "EVCSampleEntry", + "syntax": "class EVCSampleEntry() extends VisualSampleEntry('evc1'){\n\tEVCConfigurationBox\tconfig;\n\tMPEG4ExtensionDescriptorsBox();\t// optional\n}" + }, + { + "fourcc": "svcM", + "description": "SVC metadata", "containers": ["stsd"], - "syntax": "class HEVCTileSampleEntry() extends VisualSampleEntry ('hvt1'){\r\n\tHEVCTileConfigurationBox\tconfig(); // optional\r\n}" + "type": "SVCMetadataSampleEntry", + "syntax": "class SVCMetadataSampleEntry () extends MetadataSampleEntry('svcM')\n{\n\tSVCMetadataSampleConfigBox\tconfig;\n\tSVCPriorityAssignmentBox\tmethods;\t\t// optional\n\tSVCPriorityLayerInfoBox\t\tpriorities;\t// optional\n}" } ] } diff --git a/src/feature_extractor/standard_features.py b/src/feature_extractor/standard_features.py index 4dc0582..09e7c27 100644 --- a/src/feature_extractor/standard_features.py +++ b/src/feature_extractor/standard_features.py @@ -156,7 +156,12 @@ def _update_codecs(entries, paragraphs, mp4ra_entries): # now see if we actually found something new for syntax in filtered: classname, fourcc = get_4CC_and_class(syntax) - foundentries = [entry for entry in entries if entry["fourcc"] == fourcc] + foundentries = [ + entry + for entry in entries + if entry["fourcc"] == fourcc and entry["type"] == classname + ] + assert len(foundentries) <= 1, f"More than 1 entries fround for {fourcc}" if len(foundentries) == 1: # TODO: add parenttype FooSampleEntry # entry = foundentries[0] From ac3e8b6c2657efff26429763652a2a0049adfa04 Mon Sep 17 00:00:00 2001 From: Dimitri Podborski Date: Tue, 5 Sep 2023 18:35:05 -0700 Subject: [PATCH 30/42] entity groups --- src/feature_extractor/standard_features.py | 67 ++++++++++++++++++++-- 1 file changed, 62 insertions(+), 5 deletions(-) diff --git a/src/feature_extractor/standard_features.py b/src/feature_extractor/standard_features.py index 09e7c27..a4be7a0 100644 --- a/src/feature_extractor/standard_features.py +++ b/src/feature_extractor/standard_features.py @@ -38,15 +38,12 @@ def get_4CC_and_class(boxsyntax): class_name = None four_cc = None - # Search for 'class NAME[ ]*()[ ]* extends ANY_TYPE' - class_name_match = re.search( - r"class ([a-zA-Z0-9_]+)\s*\(\s*\)? extends ([a-zA-Z0-9_]+)", boxsyntax - ) + class_name_match = re.search(r"class ([a-zA-Z0-9_]+)", boxsyntax) # Search for "ANY_TYPE[ ]*('4CC')" four_cc_match = re.search(r"([a-zA-Z0-9_]+)\s*\('([^']+)'", boxsyntax) if class_name_match: - class_name = class_name_match.group(1) + class_name = class_name_match.group(1).strip().replace("(", "").replace(")", "") if four_cc_match: four_cc = four_cc_match.group(2) @@ -129,6 +126,8 @@ def _update_boxes(entries, paragraphs, mp4ra_entries): newentry = { "fourcc": fourcc, "description": description, + "versions": [0], + "flags": [], "containers": [], "type": "Box", "syntax": boxsyntax, @@ -187,6 +186,54 @@ def _update_codecs(entries, paragraphs, mp4ra_entries): return len(entries) +def _update_entitygroups(entries, paragraphs, mp4ra_entries): + filtered = [] + for paragraph in paragraphs: + # Search for 'extends SOME_TEXTEntityToGroupBox' + # print(paragraph) + match = re.search(r"extends\s+(EntityToGroupBox)", paragraph) + if match: + filtered.append(paragraph) + + # let the user know what we found. + print(f"Found {len(filtered)} EntityToGroupBox'es") + for entry in filtered: + classname, fourcc = get_4CC_and_class(entry) + print(f"{fourcc}: {classname}") + print(11 * "----") + + # now see if we actually found something new + for syntax in filtered: + classname, fourcc = get_4CC_and_class(syntax) + foundentries = [entry for entry in entries if entry["fourcc"] == fourcc] + assert len(foundentries) <= 1, f"More than 1 entries fround for {fourcc}" + if len(foundentries) == 1: + # TODO: change type based on classname add parenttype FooSampleEntry + # entry = foundentries[0] + # if entry["type"] != classname: + # print(f'Classname/Type mismatch {fourcc}. {classname}/{entry["type"]}') + continue + description = "" + ra_entries = [ + ra_entry for ra_entry in mp4ra_entries if ra_entry["fourcc"] == fourcc + ] + if len(ra_entries) == 1: + description = ra_entries[0]["description"] + newentry = { + "fourcc": fourcc, + "description": description, + "versions": [0], + "flags": [], + "containers": ["grpl"], + "type": classname, + "syntax": syntax, + } + print(f"add new entry: {fourcc}") + entries.append(newentry) + + return len(entries) + + def update(): parser = argparse.ArgumentParser( description="Update standard features based on the spec word document and MP4RA." @@ -258,6 +305,16 @@ def update(): print(f"New entries count: {cnt_after - cnt_before}") with open(args.input, "w") as json_file: json.dump(data, json_file, indent=2) + elif "entity_groups.json" in args.input: + # get associated type from MP4RA + tmp_path = os.path.join(MP4RA_PATH, "CSV", "entity-groups.csv") + with open(tmp_path, "r") as f: + mp4ra_entries = get_mp4ra_entries(f, "entity-groups") + cnt_before = len(data["entries"]) + cnt_after = _update_entitygroups(data["entries"], codeparagraphs, mp4ra_entries) + print(f"New entries count: {cnt_after - cnt_before}") + with open(args.input, "w") as json_file: + json.dump(data, json_file, indent=2) else: head, tail = os.path.split(args.input) print(f"No support for {tail} yet implemented.") From c8b471f31e64859c2b3cea71588840236fcbabfa Mon Sep 17 00:00:00 2001 From: Deniz Ugur Date: Tue, 5 Sep 2023 22:12:47 -0700 Subject: [PATCH 31/42] increase verbosity of defective container check --- src/construct/boxes.py | 40 +++++++++++++++++++++++++--------------- 1 file changed, 25 insertions(+), 15 deletions(-) diff --git a/src/construct/boxes.py b/src/construct/boxes.py index 5a6917a..b7c3420 100644 --- a/src/construct/boxes.py +++ b/src/construct/boxes.py @@ -1,3 +1,4 @@ +from __future__ import annotations import re import os import json @@ -25,11 +26,15 @@ class Box: flags: list = None containers: list = field(default_factory=list) syntax: str = None - incomplete: bool = False + defective: bool = False + ref: Box = None def __hash__(self): return hash(f"{self.fourcc}:{self.type}") + def __eq__(self, other): + return hash(self) == hash(other) + def serialize(self): return { "fourcc": self.fourcc, @@ -89,7 +94,7 @@ def get_all_boxes(json_file): BOXES[_spec] = _boxes -def search_box(fourcc, type=None): +def search_box(fourcc, type=None, ref=None): for value in BOXES.values(): for _box in value: if type is not None: @@ -101,7 +106,8 @@ def search_box(fourcc, type=None): return Box( fourcc=fourcc, - incomplete=True, + defective=True, + ref=ref, ) @@ -112,14 +118,14 @@ def update_container(_spec, _box): if len(container) != 4: container_boxes.append({"type": container}) else: - container_boxes.append(search_box(container)) + container_boxes.append(search_box(container, ref=_box)) elif isinstance(container, dict): for key, value in container.items(): if not isinstance(value, list): raise Exception("Unknown container type, found no list as value") for fourcc in value: - container_box = search_box(fourcc, key) - if container_box.incomplete: + container_box = search_box(fourcc, key, ref=_box) + if container_box.defective: container_box.type = key container_boxes.append(container_box) else: @@ -136,7 +142,7 @@ def update_container(_spec, _box): _box.containers.append({"fourcc": "*", "type": inheritor}) for container_box in [_box for _box in container_boxes if isinstance(_box, Box)]: - if container_box.incomplete: + if container_box.defective: if _spec not in EXTENSIONS: EXTENSIONS[_spec] = set() EXTENSIONS[_spec].add(container_box) @@ -183,15 +189,19 @@ def main(): BOXES[spec] = set() BOXES[spec] = BOXES[spec].union(extensions) - # List incomplete boxes + # List defective boxes buffer = [] for boxes in BOXES.values(): for _box in boxes: - if _box.incomplete and _box.fourcc != "file": - buffer.append(f"{_box.fourcc} ({_box.type})") + if _box.defective and _box.fourcc != "file": + ref = f"{_box.ref.fourcc} ({_box.ref.type})" + defective = f"{_box.fourcc} ({_box.type})" + buffer.append(f"{defective} < {ref}") if len(buffer) > 0: - logger.error(f"Incomplete boxes ({len(set(buffer))}): {set(sorted(buffer))}") + logger.error( + f"Defective containers found ({len(set(buffer))}): {set(sorted(buffer))}" + ) # Add spec to box and merge all for spec, boxes in BOXES.items(): @@ -206,7 +216,7 @@ def main(): # if a container has {"type": something} that isnt found in any boxes's type then its unknown buffer = [] for _box in all_boxes: - if _box.incomplete: + if _box.defective: continue for container in _box.containers: if isinstance(container, dict): @@ -232,7 +242,7 @@ def main(): # List unknown boxes buffer = [] for _box in all_boxes: - if _box.incomplete: + if _box.defective: continue for container in _box.containers: if isinstance(container, dict): @@ -264,7 +274,7 @@ def main(): # Show boxes with empty type buffer = [] for _box in all_boxes: - if _box.incomplete: + if _box.defective: continue if _box.type == "": buffer.append(f"{_box.fourcc} ({_box.type})") @@ -277,7 +287,7 @@ def main(): # Show boxes with empty fourcc buffer = [] for _box in all_boxes: - if _box.incomplete: + if _box.defective: continue if _box.fourcc == "": buffer.append(f"{_box.fourcc} ({_box.type})") From dca3ce576291ebc657d4dffe2466c540e97ee25c Mon Sep 17 00:00:00 2001 From: Dimitri Podborski Date: Wed, 6 Sep 2023 09:27:45 -0700 Subject: [PATCH 32/42] fix avcC container sample entry type --- data/standard_features/14496-15/boxes.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/data/standard_features/14496-15/boxes.json b/data/standard_features/14496-15/boxes.json index 5450650..ab88849 100644 --- a/data/standard_features/14496-15/boxes.json +++ b/data/standard_features/14496-15/boxes.json @@ -278,7 +278,10 @@ "AVC2SampleEntry": ["avc2", "avc4"] }, { - "VisualSampleEntry": ["encv", "avcp"] + "VisualSampleEntry": ["encv"] + }, + { + "AVCParameterSampleEntry": ["avcp"] } ], "type": "Box", From 504aa49b1ddeaf702188f6fad592a3ffe6e5e6fc Mon Sep 17 00:00:00 2001 From: Dimitri Podborski Date: Wed, 6 Sep 2023 10:17:42 -0700 Subject: [PATCH 33/42] update sample groups script. use tempfile module --- src/feature_extractor/standard_features.py | 61 ++++++++++++++++++++-- 1 file changed, 58 insertions(+), 3 deletions(-) diff --git a/src/feature_extractor/standard_features.py b/src/feature_extractor/standard_features.py index a4be7a0..02c1d9c 100644 --- a/src/feature_extractor/standard_features.py +++ b/src/feature_extractor/standard_features.py @@ -5,8 +5,9 @@ import re from git import Repo import csv +import tempfile -MP4RA_PATH = "./mp4ra" +MP4RA_PATH = os.path.join(tempfile.gettempdir(), "mp4ra") MP4RA_URL = "https://github.com/mp4ra/mp4ra.github.io.git" @@ -34,7 +35,9 @@ def get_mp4ra_entries(csv_file, feature_type): def get_4CC_and_class(boxsyntax): - # Initialize variables to None + # Replace special single quotes with standard single quotes + boxsyntax = boxsyntax.replace("‘", "'").replace("’", "'") + class_name = None four_cc = None @@ -189,7 +192,7 @@ def _update_codecs(entries, paragraphs, mp4ra_entries): def _update_entitygroups(entries, paragraphs, mp4ra_entries): filtered = [] for paragraph in paragraphs: - # Search for 'extends SOME_TEXTEntityToGroupBox' + # Search for 'extends EntityToGroupBox' # print(paragraph) match = re.search(r"extends\s+(EntityToGroupBox)", paragraph) if match: @@ -234,6 +237,48 @@ def _update_entitygroups(entries, paragraphs, mp4ra_entries): return len(entries) +def _update_samplegroups(entries, paragraphs, mp4ra_entries): + filtered = [] + for paragraph in paragraphs: + # Search for 'extends SOME_TEXTSampleGroupEntry' + match = re.search(r"extends\s+(\w+SampleGroupEntry)", paragraph) + if match: + filtered.append(paragraph) + + # let the user know what we found. + print(f"Found {len(filtered)} SampleGroups") + for entry in filtered: + classname, fourcc = get_4CC_and_class(entry) + print(f"{fourcc}: {classname}") + print(11 * "----") + + # now see if we actually found something new + for syntax in filtered: + classname, fourcc = get_4CC_and_class(syntax) + foundentries = [entry for entry in entries if entry["fourcc"] == fourcc] + assert len(foundentries) <= 1, f"More than 1 entries fround for {fourcc}" + if len(foundentries) == 1: + # TODO: change type based on classname add parenttype FooSampleEntry + continue + description = "" + ra_entries = [ + ra_entry for ra_entry in mp4ra_entries if ra_entry["fourcc"] == fourcc + ] + if len(ra_entries) == 1: + description = ra_entries[0]["description"] + newentry = { + "fourcc": fourcc, + "description": description, + "containers": ["sgpd"], + "type": classname, + "syntax": syntax, + } + print(f"add new entry: {fourcc}") + entries.append(newentry) + + return len(entries) + + def update(): parser = argparse.ArgumentParser( description="Update standard features based on the spec word document and MP4RA." @@ -315,6 +360,16 @@ def update(): print(f"New entries count: {cnt_after - cnt_before}") with open(args.input, "w") as json_file: json.dump(data, json_file, indent=2) + elif "sample_groups.json" in args.input: + # get associated type from MP4RA + tmp_path = os.path.join(MP4RA_PATH, "CSV", "entity-groups.csv") + with open(tmp_path, "r") as f: + mp4ra_entries = get_mp4ra_entries(f, "sample-groups") + cnt_before = len(data["entries"]) + cnt_after = _update_samplegroups(data["entries"], codeparagraphs, mp4ra_entries) + print(f"New entries count: {cnt_after - cnt_before}") + with open(args.input, "w") as json_file: + json.dump(data, json_file, indent=2) else: head, tail = os.path.split(args.input) print(f"No support for {tail} yet implemented.") From 2dcb214bd1f55798cee1258c830e9e680b71f6ed Mon Sep 17 00:00:00 2001 From: Dimitri Podborski Date: Wed, 6 Sep 2023 10:29:21 -0700 Subject: [PATCH 34/42] fullbox fixes --- data/standard_features/14496-15/boxes.json | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/data/standard_features/14496-15/boxes.json b/data/standard_features/14496-15/boxes.json index ab88849..987c53e 100644 --- a/data/standard_features/14496-15/boxes.json +++ b/data/standard_features/14496-15/boxes.json @@ -544,17 +544,21 @@ { "fourcc": "vvcC", "description": "VVC video configuration", + "versions": [0], + "flags": [], "containers": [ { "VvcSampleEntry": ["vvc1", "vvi1"] } ], - "type": "Box", + "type": "FullBox", "syntax": "class VvcConfigurationBox extends FullBox('vvcC',version=0,flags) {\n\tVvcDecoderConfigurationRecord() VvcConfig;\n}" }, { "fourcc": "vvnC", "description": "VVC Network Abstraction Layer unit configuration", + "versions": [0], + "flags": [], "containers": [ { "VvcSubpicSampleEntry": ["vvs1"] @@ -563,29 +567,33 @@ "VvcNonVCLSampleEntry": ["vvcN"] } ], - "type": "Box", + "type": "FullBox", "syntax": "class VvcNALUConfigBox extends FullBox('vvnC',version=0,flags) {\n\tunsigned int(6) reserved=0;\n\tunsigned int(2) LengthSizeMinusOne;\n}" }, { "fourcc": "dhec", "description": "Default HEVC extractor constructor box", + "versions": [0], + "flags": [], "containers": [ { "HEVCSampleEntry": ["hvc3", "hev3"] } ], - "type": "Box", + "type": "FullBox", "syntax": "class DefaultHevcExtractorConstructorBox extends FullBox('dhec'){\n\tunsigned int(32) num_entries;\n\tfor (i=1; i<= num_entries; i++) { \n\t\tunsigned int(8) constructor_type;\n\t\tunsigned int(8) flags; \n\t\tif( constructor_type == 0 ) \n\t\t\tSampleConstructor();\n\t\telse if( constructor_type == 2 ) \n\t\t\tInlineConstructor();\n\t\telse if( constructor_type == 3 ) \n\t\t\tSampleConstructorFromTrackGroup();\n\t\telse if( constructor_type == 6 ) \n\t\t\tNALUStartInlineConstructor ();\n\t}" }, { "fourcc": "svmC", "description": "SVC information configuration", + "versions": [0], + "flags": [], "containers": [ { "SVCMetadataSampleEntry": ["svcM"] } ], - "type": "Box", + "type": "FullBox", "syntax": "class SVCMetadataSampleConfigBox extends FullBox('svmC')\n{\n\tint i;\t\t// local variable, not a field\n\tunsigned int(8) sample_statement_type;\t/* normally group, or seq */\n\tunsigned int(8) default_statement_type;\n\tunsigned int(8) default_statement_length;\n\tunsigned int(8) entry_count;\n\tfor (i=1; i<=entry_count; i++) {\n\t\tunsigned int(8) statement_type;\t// from the user extension ranges\n\t\tstring statement_namespace;\n\t}" } ] From 4a79f5625d352b7463703cc9c11d3615865f2ae9 Mon Sep 17 00:00:00 2001 From: Dimitri Podborski Date: Wed, 6 Sep 2023 10:36:43 -0700 Subject: [PATCH 35/42] update only if needed --- src/feature_extractor/standard_features.py | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/src/feature_extractor/standard_features.py b/src/feature_extractor/standard_features.py index 02c1d9c..348600c 100644 --- a/src/feature_extractor/standard_features.py +++ b/src/feature_extractor/standard_features.py @@ -337,9 +337,6 @@ def update(): cnt_before = len(data["entries"]) cnt_after = _update_boxes(data["entries"], codeparagraphs, mp4ra_entries) - print(f"New entries count: {cnt_after - cnt_before}") - with open(args.input, "w") as json_file: - json.dump(data, json_file, indent=2) elif "codecs.json" in args.input: # get associated type from MP4RA tmp_path = os.path.join(MP4RA_PATH, "CSV", "sample-entries.csv") @@ -347,9 +344,6 @@ def update(): mp4ra_entries = get_mp4ra_entries(f, "sample-entries") cnt_before = len(data["entries"]) cnt_after = _update_codecs(data["entries"], codeparagraphs, mp4ra_entries) - print(f"New entries count: {cnt_after - cnt_before}") - with open(args.input, "w") as json_file: - json.dump(data, json_file, indent=2) elif "entity_groups.json" in args.input: # get associated type from MP4RA tmp_path = os.path.join(MP4RA_PATH, "CSV", "entity-groups.csv") @@ -357,9 +351,6 @@ def update(): mp4ra_entries = get_mp4ra_entries(f, "entity-groups") cnt_before = len(data["entries"]) cnt_after = _update_entitygroups(data["entries"], codeparagraphs, mp4ra_entries) - print(f"New entries count: {cnt_after - cnt_before}") - with open(args.input, "w") as json_file: - json.dump(data, json_file, indent=2) elif "sample_groups.json" in args.input: # get associated type from MP4RA tmp_path = os.path.join(MP4RA_PATH, "CSV", "entity-groups.csv") @@ -367,9 +358,11 @@ def update(): mp4ra_entries = get_mp4ra_entries(f, "sample-groups") cnt_before = len(data["entries"]) cnt_after = _update_samplegroups(data["entries"], codeparagraphs, mp4ra_entries) - print(f"New entries count: {cnt_after - cnt_before}") - with open(args.input, "w") as json_file: - json.dump(data, json_file, indent=2) else: head, tail = os.path.split(args.input) print(f"No support for {tail} yet implemented.") + + print(f"New entries count: {cnt_after - cnt_before}") + if (cnt_after - cnt_before) > 0: + with open(args.input, "w") as json_file: + json.dump(data, json_file, indent=2) From ea8b366cfc491ec058e89007e0612041d640df06 Mon Sep 17 00:00:00 2001 From: Dimitri Podborski Date: Wed, 6 Sep 2023 10:39:53 -0700 Subject: [PATCH 36/42] run update script on naluff for boxes with allpars option set --- data/standard_features/14496-15/boxes.json | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/data/standard_features/14496-15/boxes.json b/data/standard_features/14496-15/boxes.json index 987c53e..d7a8b4d 100644 --- a/data/standard_features/14496-15/boxes.json +++ b/data/standard_features/14496-15/boxes.json @@ -595,6 +595,17 @@ ], "type": "FullBox", "syntax": "class SVCMetadataSampleConfigBox extends FullBox('svmC')\n{\n\tint i;\t\t// local variable, not a field\n\tunsigned int(8) sample_statement_type;\t/* normally group, or seq */\n\tunsigned int(8) default_statement_type;\n\tunsigned int(8) default_statement_length;\n\tunsigned int(8) entry_count;\n\tfor (i=1; i<=entry_count; i++) {\n\t\tunsigned int(8) statement_type;\t// from the user extension ranges\n\t\tstring statement_namespace;\n\t}" + }, + { + "fourcc": "evsC", + "description": "Configuration for EVC slice component track", + "containers": [ + { + "EVCSliceComponentTrackSampleEntry": ["evs1", "evs2"] + } + ], + "type": "Box", + "syntax": "class EVCSliceComponentTrackConfigurationBox extends Box('evsC') {\n\tEVCSliceComponentTrackConfigurationRecord() config;\n}" } ] } From dda6c6c4fc2b87a623e9f4fd798dc00d42cd201a Mon Sep 17 00:00:00 2001 From: Dimitri Podborski Date: Wed, 6 Sep 2023 10:42:51 -0700 Subject: [PATCH 37/42] run update script on naluff for codecs with allpars option set --- data/standard_features/14496-15/codecs.json | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/data/standard_features/14496-15/codecs.json b/data/standard_features/14496-15/codecs.json index 22384a2..1d414f9 100644 --- a/data/standard_features/14496-15/codecs.json +++ b/data/standard_features/14496-15/codecs.json @@ -358,6 +358,20 @@ "containers": ["stsd"], "type": "SVCMetadataSampleEntry", "syntax": "class SVCMetadataSampleEntry () extends MetadataSampleEntry('svcM')\n{\n\tSVCMetadataSampleConfigBox\tconfig;\n\tSVCPriorityAssignmentBox\tmethods;\t\t// optional\n\tSVCPriorityLayerInfoBox\t\tpriorities;\t// optional\n}" + }, + { + "fourcc": "evs1", + "description": "Essential Video Coding slice component track without parameter sets", + "containers": ["stsd"], + "type": "EVCSliceComponentTrackSampleEntry", + "syntax": "class EVCSliceComponentTrackSampleEntry() \n extends VisualSampleEntry ('evs1' or 'evs2'){\n\tEVCSliceComponentTrackConfigurationBox\tconfig;\n}" + }, + { + "fourcc": "evs2", + "description": "Essential Video Coding slice component track without parameter sets", + "containers": ["stsd"], + "type": "EVCSliceComponentTrackSampleEntry", + "syntax": "class EVCSliceComponentTrackSampleEntry() \n extends VisualSampleEntry ('evs1' or 'evs2'){\n\tEVCSliceComponentTrackConfigurationBox\tconfig;\n}" } ] } From 7c42c4a6e2eb83534569b80f50f9569667fc2c52 Mon Sep 17 00:00:00 2001 From: Dimitri Podborski Date: Wed, 6 Sep 2023 10:55:44 -0700 Subject: [PATCH 38/42] based on v4 from MDS21454_WG03_N00561 --- data/standard_features/14496-15/spec_info.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/data/standard_features/14496-15/spec_info.json b/data/standard_features/14496-15/spec_info.json index cf07070..71f08be 100644 --- a/data/standard_features/14496-15/spec_info.json +++ b/data/standard_features/14496-15/spec_info.json @@ -1,7 +1,7 @@ { "ISO": "14496-15", "name": "NALu", - "version": 5, - "date": -1, + "version": 6, + "date": 2022, "mp4ra_reference": ["NALu Video"] } From 29140a458b348ed614c2c0c11387202ea697cbef Mon Sep 17 00:00:00 2001 From: Dimitri Podborski Date: Wed, 6 Sep 2023 11:06:05 -0700 Subject: [PATCH 39/42] add dry run option --- src/feature_extractor/standard_features.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/feature_extractor/standard_features.py b/src/feature_extractor/standard_features.py index 348600c..cee2795 100644 --- a/src/feature_extractor/standard_features.py +++ b/src/feature_extractor/standard_features.py @@ -295,6 +295,11 @@ def update(): action="store_true", help="Use all paragraphs and not only those which are formatted with code", ) + parser.add_argument( + "--dryrun", + action="store_true", + help="Don't modify json files, just show what was found.", + ) args = parser.parse_args() # get/update MP4RA @@ -363,6 +368,6 @@ def update(): print(f"No support for {tail} yet implemented.") print(f"New entries count: {cnt_after - cnt_before}") - if (cnt_after - cnt_before) > 0: + if (cnt_after - cnt_before) > 0 and args.dryrun is False: with open(args.input, "w") as json_file: json.dump(data, json_file, indent=2) From 11c3ffabdd50f2b4f6c3a3fb6c8ab343efb9e5e8 Mon Sep 17 00:00:00 2001 From: Dimitri Podborski Date: Wed, 6 Sep 2023 12:27:14 -0700 Subject: [PATCH 40/42] update based on MDS20295_WG03_N00233 boxes+codecs --- data/standard_features/14496-12/boxes.json | 69 ++++++++++++++++++--- data/standard_features/14496-12/codecs.json | 39 +++++++----- 2 files changed, 82 insertions(+), 26 deletions(-) diff --git a/data/standard_features/14496-12/boxes.json b/data/standard_features/14496-12/boxes.json index 84b23eb..2bc3c70 100644 --- a/data/standard_features/14496-12/boxes.json +++ b/data/standard_features/14496-12/boxes.json @@ -8,7 +8,7 @@ "type": "Box", "containers": [ { - "HintSampleEntry": ["rrtp"] + "ReceivedRtpHintSampleEntry": ["rrtp"] } ], "syntax": "class ReceivedSsrcBox extends Box('rssr') {\n\tunsigned int(32)\tSSRC\n}" @@ -19,7 +19,7 @@ "type": "Box", "containers": [ { - "HintSampleEntry": ["rrtp"] + "ReceivedRtpHintSampleEntry": ["rrtp"] } ], "syntax": "class timestampsynchrony() extends Box('tssy') {\n\tunsigned int(6) reserved;\n\tunsigned int(2) timestamp_sync;\n}" @@ -30,7 +30,16 @@ "type": "Box", "containers": [ { - "HintSampleEntry": ["rrtp", "srtp", "rtp ", "fdp "] + "HintSampleEntry": ["rtp "] + }, + { + "FDHintSampleEntry": ["fdp "] + }, + { + "SrtpHintSampleEntry": ["srtp"] + }, + { + "ReceivedRtpHintSampleEntry": ["rrtp"] } ], "syntax": "class timescaleentry() extends Box('tims') {\n\tuint(32)\ttimescale;\n}\n\nclass timeoffset() extends Box('tsro') {\n\tint(32)\t\toffset;\n}\n\nclass sequenceoffset() extends Box('snro') {\n\tint(32)\t\toffset;\n}" @@ -41,7 +50,13 @@ "type": "Box", "containers": [ { - "HintSampleEntry": ["rrtp", "srtp", "rtp "] + "HintSampleEntry": ["rtp "] + }, + { + "SrtpHintSampleEntry": ["srtp"] + }, + { + "ReceivedRtpHintSampleEntry": ["rrtp"] } ], "syntax": "class timescaleentry() extends Box('tims') {\n\tuint(32)\ttimescale;\n}\n\nclass timeoffset() extends Box('tsro') {\n\tint(32)\t\toffset;\n}\n\nclass sequenceoffset() extends Box('snro') {\n\tint(32)\t\toffset;\n}" @@ -52,7 +67,10 @@ "type": "Box", "containers": [ { - "HintSampleEntry": ["srtp", "rtp "] + "HintSampleEntry": ["rtp "] + }, + { + "SrtpHintSampleEntry": ["srtp"] } ], "syntax": "class timescaleentry() extends Box('tims') {\n\tuint(32)\ttimescale;\n}\n\nclass timeoffset() extends Box('tsro') {\n\tint(32)\t\toffset;\n}\n\nclass sequenceoffset() extends Box('snro') {\n\tint(32)\t\toffset;\n}" @@ -270,13 +288,13 @@ "flags": [], "containers": [ { - "MetaDataSampleEntry": ["mett"] + "TextMetaDataSampleEntry": ["mett"] }, { - "PlainTextSampleEntry": ["stxt"] + "SimpleTextSampleEntry": ["stxt"] }, { - "SubtitleSampleEntry": ["sbtt"] + "TextSubtitleSampleEntry": ["sbtt"] } ], "type": "FullBox", @@ -287,7 +305,7 @@ "description": "URI Information", "containers": [ { - "MetaDataSampleEntry": ["urim"] + "URIMetaSampleEntry": ["urim"] } ], "type": "FullBox", @@ -466,7 +484,7 @@ "description": "complete track information", "containers": [ { - "VisualSampleEntry": ["icpv"] + "IncompleteAVCSampleEntry": ["icpv"] } ], "type": "Box", @@ -1443,6 +1461,37 @@ "containers": ["file"], "type": "CompressedBox", "syntax": "aligned(8) class CompressedSubsegmentIndexBox\n\textends CompressedBox('!ssx', 'ssix') {\n}" + }, + { + "fourcc": "amve", + "description": "", + "containers": ["VisualSampleEntry"], + "type": "Box", + "syntax": "class AmbientViewingEnvironmentBox extends Box('amve'){\n\tunsigned int(32) ambient_illuminance; \n\tunsigned int(16) ambient_light_x;\n\tunsigned int(16) ambient_light_y;\n}" + }, + { + "fourcc": "keys", + "description": "", + "containers": [ + { + "BoxedMetadataSampleEntry": ["mebx"] + } + ], + "type": "Box", + "syntax": "class MetadataKeyTableBox extends Box('keys') { \n\tMetadataKeyBox[];\n}" + }, + { + "fourcc": "uri ", + "description": "URI box", + "versions": [0], + "flags": [], + "containers": [ + { + "URIMetaSampleEntry": ["urim"] + } + ], + "type": "Box", + "syntax": "class URIBox extends FullBox('uri ', version = 0, 0) {\n\tutf8string theURI;\n}" } ] } diff --git a/data/standard_features/14496-12/codecs.json b/data/standard_features/14496-12/codecs.json index e67ad14..bc2bdcf 100644 --- a/data/standard_features/14496-12/codecs.json +++ b/data/standard_features/14496-12/codecs.json @@ -54,77 +54,77 @@ { "fourcc": "metx", "description": "XML timed metadata", - "type": "MetaDataSampleEntry", + "type": "XMLMetaDataSampleEntry", "containers": ["stsd"], "syntax": "class XMLMetaDataSampleEntry() extends MetaDataSampleEntry ('metx') {\n\tutf8string content_encoding; // optional\n\tutf8list namespace;\n\tutf8list schema_location; // optional\n}" }, { "fourcc": "mett", "description": "Text timed metadata that is not XML", - "type": "MetaDataSampleEntry", + "type": "TextMetaDataSampleEntry", "containers": ["stsd"], "syntax": "class TextMetaDataSampleEntry() extends MetaDataSampleEntry ('mett') {\n\tutf8string content_encoding; // optional\n\tutf8string mime_format;\n\tTextConfigBox (); // optional\n}" }, { "fourcc": "urim", "description": "Binary timed metadata identified by URI", - "type": "MetaDataSampleEntry", + "type": "URIMetaSampleEntry", "containers": ["stsd"], "syntax": "class URIMetaSampleEntry() extends MetaDataSampleEntry ('urim') {\n\tURIbox\t\t\tthe_label;\n\tURIInitBox\t\tinit;\t\t// optional\n}" }, { "fourcc": "mebx", "description": "Timed metadata multiplex", - "type": "MetaDataSampleEntry", + "type": "BoxedMetadataSampleEntry", "containers": ["stsd"], "syntax": "aligned(8) class BoxedMetadataSampleEntry \n\textends MetadataSampleEntry ('mebx') {\n\tMetadataKeyTableBox();\t\t\t\t// mandatory\n\tBitRateBox ();\t\t\t\t\t\t\t// optional\n}" }, { "fourcc": "fdp ", "description": "File delivery hints", - "type": "HintSampleEntry", + "type": "FDHintSampleEntry", "containers": ["stsd"], "syntax": "class FDHintSampleEntry() extends HintSampleEntry ('fdp ') {\n\tunsigned int(16)\thinttrackversion = 1;\n\tunsigned int(16)\thighestcompatibleversion = 1;\n\tunsigned int(16)\tpartition_entry_ID;\n\tunsigned int(16)\tFEC_overhead;\n}" }, { "fourcc": "icpv", "description": "Incomplete video", - "type": "VisualSampleEntry", + "type": "IncompleteAVCSampleEntry", "containers": ["stsd"], "syntax": "class IncompleteAVCSampleEntry() extends VisualSampleEntry ('icpv'){\n\tCompleteTrackInfoBox();\n\tAVCConfigurationBox config;\n}" }, { "fourcc": "pm2t", "description": "Protected MPEG-2 Transport", - "type": "MPEG2TSSampleEntry", + "type": "ProtectedMPEG2TransportStreamSampleEntry", "containers": ["stsd"], "syntax": "class ProtectedMPEG2TransportStreamSampleEntry\n\textends MPEG2TSSampleEntry('pm2t') {\n\tProtectionSchemeInfoBox\t\tSchemeInformation;\n}" }, { "fourcc": "prtp", "description": "Protected RTP Reception", - "type": "RtpReceptionHintSampleEntry", + "type": "ProtectedRtpReceptionHintSampleEntry", "containers": ["stsd"], "syntax": "Class ProtectedRtpReceptionHintSampleEntry\n\textends RtpReceptionHintSampleEntry ('prtp') {\n\tProtectionSchemeInfoBox\t\tSchemeInformation;\n}" }, { "fourcc": "rm2t", "description": "MPEG-2 Transport Reception", - "type": "MPEG2TSSampleEntry", + "type": "MPEG2TSReceptionSampleEntry", "containers": ["stsd"], "syntax": "class MPEG2TSReceptionSampleEntry extends MPEG2TSSampleEntry('rm2t') {}" }, { "fourcc": "rrtp", "description": "RTP reception", - "type": "HintSampleEntry", + "type": "ReceivedRtpHintSampleEntry", "containers": ["stsd"], "syntax": "class ReceivedRtpHintSampleEntry() extends HintSampleEntry ('rrtp') {\n\tuint(16)\t\thinttrackversion = 1;\n\tuint(16)\t\thighestcompatibleversion = 1;\n\tuint(32)\t\tmaxpacketsize;\n}" }, { "fourcc": "rsrp", "description": "SRTP Reception", - "type": "HintSampleEntry", + "type": "ReceivedSrtpHintSampleEntry", "containers": ["stsd"], "syntax": "class ReceivedSrtpHintSampleEntry() extends HintSampleEntry ('rsrp') {\n\tuint(16)\t\thinttrackversion = 1;\n\tuint(16)\t\thighestcompatibleversion = 1;\n\tuint(32)\t\tmaxpacketsize;\n}" }, @@ -145,21 +145,21 @@ { "fourcc": "sbtt", "description": "Text subtitles", - "type": "SubtitleSampleEntry", + "type": "TextSubtitleSampleEntry", "containers": ["stsd"], "syntax": "class TextSubtitleSampleEntry() extends SubtitleSampleEntry ('sbtt') {\n\tutf8string content_encoding; // optional\n\tutf8string mime_format;\n\tTextConfigBox (); // optional\n}" }, { "fourcc": "sm2t", "description": "MPEG-2 Transport Server", - "type": "MPEG2TSSampleEntry", + "type": "MPEG2TSServerSampleEntry", "containers": ["stsd"], "syntax": "class MPEG2TSServerSampleEntry extends MPEG2TSSampleEntry('sm2t') {}" }, { "fourcc": "srtp", "description": "SRTP Hints", - "type": "HintSampleEntry", + "type": "SrtpHintSampleEntry", "containers": ["stsd"], "syntax": "class SrtpHintSampleEntry() extends HintSampleEntry ('srtp') {\n\tuint(16)\t\thinttrackversion = 1;\n\tuint(16)\t\thighestcompatibleversion = 1;\n\tuint(32)\t\tmaxpacketsize;\n}" }, @@ -173,14 +173,14 @@ { "fourcc": "stpp", "description": "Subtitles (Timed Text)", - "type": "SubtitleSampleEntry", + "type": "XMLSubtitleSampleEntry", "containers": ["stsd"], "syntax": "class XMLSubtitleSampleEntry() extends SubtitleSampleEntry ('stpp') {\n\tutf8list namespace;\n\tutf8list schema_location; // optional\n\tutf8list auxiliary_mime_types;\n\t\t\t\t// optional, required if auxiliary resources are present\n}" }, { "fourcc": "stxt", "description": "Simple timed text", - "type": "PlainTextSampleEntry", + "type": "SimpleTextSampleEntry", "containers": ["stsd"], "syntax": "class SimpleTextSampleEntry extends PlainTextSampleEntry ('stxt') {\n\tutf8string\tcontent_encoding;\t// optional\n\tutf8string\tmime_format; \n\tTextConfigBox ();\t\t\t\t\t// optional\n}" }, @@ -274,6 +274,13 @@ "type": "VolumetricVisualSampleEntry", "containers": ["stsd"], "syntax": "class VolumetricVisualSampleEntry(codingname) \r\n\textends SampleEntry (codingname){\r\n\tunsigned int(8)[32] compressorname;\r\n\t// other boxes from derived specifications\r\n}" + }, + { + "fourcc": "rtp ", + "description": "RTP Hints", + "containers": ["stsd"], + "type": "RtpHintSampleEntry", + "syntax": "class RtpHintSampleEntry() extends HintSampleEntry ('rtp ') {\n\tuint(16)\t\thinttrackversion = 1;\n\tuint(16)\t\thighestcompatibleversion = 1;\n\tuint(32)\t\tmaxpacketsize;\n}" } ] } From 23041c5ac868c492caefd90f80dff9ecb0cf159d Mon Sep 17 00:00:00 2001 From: Dimitri Podborski Date: Wed, 6 Sep 2023 13:06:09 -0700 Subject: [PATCH 41/42] based on MDS20295_WG03_N00233 --- data/standard_features/14496-12/sample_groups.json | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/data/standard_features/14496-12/sample_groups.json b/data/standard_features/14496-12/sample_groups.json index efe8221..8d1e739 100644 --- a/data/standard_features/14496-12/sample_groups.json +++ b/data/standard_features/14496-12/sample_groups.json @@ -64,6 +64,20 @@ "containers": ["sgpd"], "type": "VisualSampleGroupEntry", "syntax": "class TemporalLevelEntry() extends VisualSampleGroupEntry('tele')\n{\n\tbit(1)\tlevel_independently_decodable;\n\tbit(7)\treserved=0;\n}" + }, + { + "fourcc": "pasr", + "description": "Pixel Aspect Ratio Sample Grouping", + "containers": ["sgpd"], + "type": "PixelAspectRatioEntry", + "syntax": "class PixelAspectRatioEntry() extends VisualSampleGroupEntry ('pasr'){\n\tunsigned int(32) hSpacing;\n\tunsigned int(32) vSpacing;\n}" + }, + { + "fourcc": "casg", + "description": "Clean Aperture Sample Grouping", + "containers": ["sgpd"], + "type": "CleanAperture", + "syntax": "class CleanAperture Entry() extends VisualSampleGroupEntry ('casg'){\n\tunsigned int(32) cleanApertureWidthN;\n\tunsigned int(32) cleanApertureWidthD;\n\n\tunsigned int(32) cleanApertureHeightN;\n\tunsigned int(32) cleanApertureHeightD;\n\n\n\tunsigned int(32) horizOffN;\n\tunsigned int(32) horizOffD;\n\n\n\tunsigned int(32) vertOffN;\n\tunsigned int(32) vertOffD;\n\n}" } ] } From bfd1686b909f5fddcfc26d94aee542fa50ea2e61 Mon Sep 17 00:00:00 2001 From: Dimitri Podborski Date: Wed, 6 Sep 2023 13:43:54 -0700 Subject: [PATCH 42/42] based on MDS22076_WG03_N00749 --- .../23008-12/item_properties.json | 81 ++++++++++++++ .../standard_features/23008-12/spec_info.json | 4 +- src/feature_extractor/standard_features.py | 104 +++++++++++++++++- 3 files changed, 185 insertions(+), 4 deletions(-) diff --git a/data/standard_features/23008-12/item_properties.json b/data/standard_features/23008-12/item_properties.json index 927eb3c..c493c0b 100644 --- a/data/standard_features/23008-12/item_properties.json +++ b/data/standard_features/23008-12/item_properties.json @@ -287,6 +287,87 @@ "containers": ["ipco"], "type": "ItemProperty", "syntax": "class ContentLightLevelBox extends Box('clli'){\n\tunsigned int(16) max_content_light_level;\n\tunsigned int(16) max_pic_average_light_level;\n}" + }, + { + "fourcc": "wipe", + "description": "Wipe transition effect", + "versions": [0], + "flags": [], + "containers": ["ipco"], + "type": "Box", + "syntax": "class WipeTransitionEffectProperty\nextends ItemFullProperty('wipe', version=0, flags=0) {\n\tunsigned int(8) transition_direction;\n}" + }, + { + "fourcc": "zoom", + "description": "Zoom transition effect", + "versions": [0], + "flags": [], + "containers": ["ipco"], + "type": "Box", + "syntax": "class ZoomTransitionEffectProperty\nextends ItemFullProperty('zoom', version=0, flags=0) {\n\tunsigned int(1) transition_direction; \n\tunsigned int(7) transition_shape;\n}" + }, + { + "fourcc": "fade", + "description": "Fade transition effect", + "versions": [0], + "flags": [], + "containers": ["ipco"], + "type": "Box", + "syntax": "class FadeTransitionEffectProperty\nextends ItemFullProperty('fade', version=0, flags=0) {\n\tunsigned int(8) transition_direction;\n}" + }, + { + "fourcc": "splt", + "description": "Split transition effect", + "versions": [0], + "flags": [], + "containers": ["ipco"], + "type": "Box", + "syntax": "class SplitTransitionEffectProperty\nextends ItemFullProperty('splt', version=0, flags=0) {\n\tunsigned int(8) transition_direction;\n}" + }, + { + "fourcc": "stpe", + "description": "Suggested transition period", + "versions": [0], + "flags": [], + "containers": ["ipco"], + "type": "Box", + "syntax": "class SuggestedTransitionPeriodProperty\nextends ItemFullProperty('stpe', version=0, flags=0) {\n\tunsigned int(8) transition_period;\n}" + }, + { + "fourcc": "ssld", + "description": "Suggested time display duraton", + "versions": [0], + "flags": [], + "containers": ["ipco"], + "type": "Box", + "syntax": "class SuggestedTimeDisplayDurationProperty\nextends ItemFullProperty('ssld', version=0, flags=0) {\n\tunsigned int(16) duration;\n}" + }, + { + "fourcc": "mskC", + "description": "Mask item configuration", + "versions": [0], + "flags": [], + "containers": ["ipco"], + "type": "Box", + "syntax": "class MaskConfigurationProperty\nextends ItemFullProperty('mskC', version = 0, flags = 0){\n\tunsigned int(8) bits_per_pixel;\n}" + }, + { + "fourcc": "spid", + "description": "Subpicture ID property", + "versions": [0], + "flags": [], + "containers": ["ipco"], + "type": "Box", + "syntax": "class VvcSubpicIDProperty\nextends ItemFullProperty('spid', version = 0, flags = 0){\n\tVvcSubpicIDEntry sid_info; // specified in ISO/IEC\u00a014496-15\n}" + }, + { + "fourcc": "spor", + "description": "Subpicture order property", + "versions": [0], + "flags": [], + "containers": ["ipco"], + "type": "Box", + "syntax": "class VvcSubpicOrderProperty\nextends ItemFullProperty('spor', version = 0, flags = 0){\n\tVvcSubpicOrderEntry sor_info; // specified in ISO/IEC\u00a014496-15\n}" } ] } diff --git a/data/standard_features/23008-12/spec_info.json b/data/standard_features/23008-12/spec_info.json index 5b1f1f9..00bcb3b 100644 --- a/data/standard_features/23008-12/spec_info.json +++ b/data/standard_features/23008-12/spec_info.json @@ -1,7 +1,7 @@ { "ISO": "23008-12", "name": "HEIF", - "version": -1, - "date": -1, + "version": 2, + "date": 2022, "mp4ra_reference": ["HEIF"] } diff --git a/src/feature_extractor/standard_features.py b/src/feature_extractor/standard_features.py index cee2795..026c244 100644 --- a/src/feature_extractor/standard_features.py +++ b/src/feature_extractor/standard_features.py @@ -1,5 +1,6 @@ import argparse import os +import sys from docx import Document import json import re @@ -60,13 +61,13 @@ def _update_boxes(entries, paragraphs, mp4ra_entries): # filter out boxes / fullboxes for paragraph in paragraphs: matches = re.findall( - r"(class [a-zA-Z0-9_]+ extends Box\([^)]*\)\s*{[^}]*})", paragraph + r"(class [a-zA-Z0-9_]+ extends Box\s*\([^)]*\)\s*{[^}]*})", paragraph ) for match in matches: if match not in boxes: boxes.append(match) matches = re.findall( - r"(class [a-zA-Z0-9_]+ extends FullBox\([^)]*\)\s*{[^}]*})", paragraph + r"(class [a-zA-Z0-9_]+ extends FullBox\s*\([^)]*\)\s*{[^}]*})", paragraph ) for match in matches: if match not in boxes: @@ -279,6 +280,96 @@ def _update_samplegroups(entries, paragraphs, mp4ra_entries): return len(entries) +def _update_itemprops(entries, paragraphs, mp4ra_entries): + boxes = [] + fullboxes = [] + + # filter out boxes / fullboxes + for paragraph in paragraphs: + matches = re.findall( + # TODO: in HEIF we always have \n before extends, but this regex should be more flexible + r"(class [a-zA-Z0-9_]+\nextends ItemProperty\s*\([^)]*\)\s*{[^}]*})", + paragraph, + ) + for match in matches: + if match not in boxes: + boxes.append(match) + matches = re.findall( + r"(class [a-zA-Z0-9_]+\nextends ItemFullProperty\s*\([^)]*\)\s*{[^}]*})", + paragraph, + ) + for match in matches: + if match not in boxes: + fullboxes.append(match) + + # let the user know what we found. + print(f"Found {len(boxes) + len(fullboxes)} ItemProperty and ItemFullProperty") + print(f"{5*'----'} {len(boxes)} ItemProperties {5*'----'}") + for box in boxes: + classname, fourcc = get_4CC_and_class(box) + print(f"{fourcc}: {classname}") + print(f"{5*'----'} {len(fullboxes)} ItemFullProperties {5*'----'}") + for box in fullboxes: + classname, fourcc = get_4CC_and_class(box) + print(f"{fourcc}: {classname}") + print(11 * "----") + + # now see if we actually found something new + for boxsyntax in boxes: + classname, fourcc = get_4CC_and_class(boxsyntax) + foundentries = [entry for entry in entries if entry["fourcc"] == fourcc] + assert len(foundentries) <= 1, f"More than 1 entries fround for {fourcc}" + if len(foundentries) == 1: + # TODO: replace type with the classname and add parenttype Box + # entry = foundentries[0] + # if entry["type"] != classname: + # print(f'Classname/Type mismatch {fourcc}. {classname}/{entry["type"]}') + continue + description = "" + ra_entries = [ + ra_entry for ra_entry in mp4ra_entries if ra_entry["fourcc"] == fourcc + ] + if len(ra_entries) == 1: + description = ra_entries[0]["description"] + newentry = { + "fourcc": fourcc, + "description": description, + "containers": ["ipco"], + "type": "Box", + "syntax": boxsyntax, + } + print(f"add new entry: {fourcc}") + entries.append(newentry) + for boxsyntax in fullboxes: + classname, fourcc = get_4CC_and_class(boxsyntax) + foundentries = [entry for entry in entries if entry["fourcc"] == fourcc] + assert len(foundentries) <= 1, f"More than 1 entries fround for {fourcc}" + if len(foundentries) == 1: + # TODO: replace type with the classname and add parenttype FullBox + # entry = foundentries[0] + # if entry["type"] != classname: + # print(f'Classname/Type mismatch {fourcc}. {classname}/{entry["type"]}') + continue + description = "" + ra_entries = [ + ra_entry for ra_entry in mp4ra_entries if ra_entry["fourcc"] == fourcc + ] + if len(ra_entries) == 1: + description = ra_entries[0]["description"] + newentry = { + "fourcc": fourcc, + "description": description, + "versions": [0], + "flags": [], + "containers": ["ipco"], + "type": "Box", + "syntax": boxsyntax, + } + print(f"add new entry: {fourcc}") + entries.append(newentry) + return len(entries) + + def update(): parser = argparse.ArgumentParser( description="Update standard features based on the spec word document and MP4RA." @@ -363,9 +454,18 @@ def update(): mp4ra_entries = get_mp4ra_entries(f, "sample-groups") cnt_before = len(data["entries"]) cnt_after = _update_samplegroups(data["entries"], codeparagraphs, mp4ra_entries) + elif "item_properties.json" in args.input: + # get associated type from MP4RA + tmp_path = os.path.join(MP4RA_PATH, "CSV", "item-properties.csv") + with open(tmp_path, "r") as f: + mp4ra_entries = get_mp4ra_entries(f, "item-properties") + cnt_before = len(data["entries"]) + # cnt_after = _update_boxes(data["entries"], codeparagraphs, mp4ra_entries) + cnt_after = _update_itemprops(data["entries"], codeparagraphs, mp4ra_entries) else: head, tail = os.path.split(args.input) print(f"No support for {tail} yet implemented.") + sys.exit(-1) print(f"New entries count: {cnt_after - cnt_before}") if (cnt_after - cnt_before) > 0 and args.dryrun is False: