In order to contribute new conformance files to the framework the contributor needs to follow these steps:
- Make sure files are small in size. Only file format features are of interest. Follow the best practices to reduce the file size, e.g. for video use small resolution etc.
- Don't use spaces in folders or filenames.
- Bring an input contribution to MPEG which describes the files you are contributing.
- For each file there shall be the following information:
- Short description of the file.
- Copyright information
- For each file there should be the following information
- List of user defined features taken from specifications. E.g. ISOBMFF user_defined.json
- Associated files (if applicable). These are files which are required for processing of the conformance file.
- For each file there shall be the following information:
- Upload files (either in a zip together with the contribution or by providing a URL which can be used to obtain the files).
During the MPEG meeting the File Format group will collect and review the files and open a pull request to the conformance repository using the above information. After opening the PR, automation scripts will run GPAC's MP4Box and export the metadata from each file into a JSON with a suffix _gpac.json
.
Because the MP4Box will not be able to parse new features which are currently being standardized, the contributor of the files will need to provide additional information about features / boxes the files are containing. This step comes after the PR has been opened for the conformance files to be contributed. The contributor has to follow these steps to appropriately fix the possible issues with the MP4Box’s output:
- Checkout the branch associated with the contributor’s PR
- Provide file structure for each file. For that you have two options:
- (Recommended) For each contribution’s MP4Box extension file (suffix with
_gpac.ext.json
)- If the file does not exist, then there were no unknown boxes found in the file.
- Go through all the unknown boxes and provide the structure of that box and its descendants.
- If a node is not related to your contribution, you can just skip it.
- Modify the MP4Box output file directly. Either with a modified version of MP4Box or manually.
- Be sure to add
manualDump: true
property to your MP4Box output. - This is also available via
--preserve-gpac-output
flag onpoetry run contribute-files
command.
- Be sure to add
- (Recommended) For each contribution’s MP4Box extension file (suffix with
- Add the relevant boxes to the standard features as well. Without that this contribution wouldn't be shown in the conformance search tool.
- If necessary for each conformance metadata file
<filename>.json
add or edit other fields. In particular checkassociated_files
,features
,license
or add additional information tonotes
. - Commit and push your modifications to that branch.
- CI scripts will validate the structure of the file and run tests to see if it’s okay to use it.
If you are providing your own MP4Box output, and set the
manualDump
flag totrue
, then our automation scripts won't update your MP4Box output file.
The PR will be accepted after all edits are done to completely describe conformance files in the associated PR. When the File Format group decides the file should be published, the published flag will be changed to true and the file will move from under_consideration directory to a published directory.
All the JSON files in this repository conform to a schema found within this repository. You can view all the available schemas here. For example, MP4Box outputs conform to the schema found here. Upon analyzing the schema, you will notice that we require the presence of @Type
(fourcc) in all boxes as a bare minimum.
This is most likely a task of a conformance coordinator or a File Format Group Chair.
- install python-poetry
- install GPAC
Make sure both are added to your PATH
environment variable, so you can call poetry
and MP4Box
from any directory using terminal.
- Create a new branch:
The best practice is to name the branch including the MPEG document number which was used to provide an input contribution to MPEG e.g.m12345_isobmff_samplegroups
. - Checkout this new branch.
Let's say you have gathered files from an input contribution m12345
in a folder like (sub-directories are also allowed):
compact_sample_groups
├── samplegroups_defrag_compact.mp4
├── samplegroups_defrag_normal.mp4
└── samplegroups_fragmeted.mp4
and now you want to add them to a new branch m12345_<spec>_<feature>
which you already checked out.
Go to the src
folder and run the contribute-files
command:
cd src
poetry install #(if you are using for the first time)
poetry run contribute-files -i <path_to_your_files_dir>
The script will ask you several questions. e.g.: who is the contributor (company name), ask for a short description of each file and will create (or update) the json files inside file_features
directory.
Create a pull request with the new (or modified) files.
TBD
TBD