This repository provides the information and scripts to generate the CTA Wave Test Content.
The run-all.py profiles/csv_file
script gathers the data and content from input tables/parameters. Then it sends them for processing. Then it uploads the result.
The encode_dash.py
script is primarily about the usage of GPAC leveraging libavcodec with x264 and x265 to generate the CMAF content with some DASH manifest. The intent is to keep the size of the post-processing (e.g. manifest manipulation) as small as possible.
- Download mezzanine content from https://dash.akamaized.net/WAVE/Mezzanine/. See section below for a script.
- Launch scripts:
- Encode mezzanine content:
- Encode to conform to CTA Proposed Test content.
- Encode at least one option of source content according to media profile.
- Special codec value "copy" to bypass the encoding. Useful for proprietary codecs such as DTS or Dolby.
- Package (markup) the content with an MPD according to the CTA Content Model format.
- NB: done in Python right now, but could eventually an extension to GPAC to produce this.
- Encrypt the content in-place using GPAC encryption and manifest-forwarding capabilities.
- Upload the proposed test content to the CTA-WAVE server using SFTP.
- Update the Webpage: update database.json.
- NB: updates and merges are done manually.
- NB: the Web page code is located at https://github.com/cta-wave/Test-Content/.
- NB: when the JSON format needs to be updated, open an issue at https://github.com/cta-wave/dpctf-deploy/issues/.
- Encode mezzanine content:
- Validate that the content conforms to:
- Its own constraints and flags. Script.
- CMAF: use the DASH-IF hosted conformance tool.
- CTA WAVE Test content format needs to be extended to format validation
Sample script for mezzanine v4:
mkdir -p releases/4
cd releases/4
curl http://dash.akamaized.net/WAVE/Mezzanine/releases/4/| sed -n 's/^<IMG SRC=\"\/icons\/generic.gif\" ALT=\"\[FILE\]\"> <A HREF=\"\(.*\)\".*$/\1/p' | grep -v croatia_M1 | grep -v croatia_N1 | grep -v croatia_O1 | xargs -I % wget http://dash.akamaized.net/WAVE/Mezzanine/releases/4/%
cd ..
- Content and encoding options are documented here for AVC:
- Modify
run-all.py
to:- Modify the executable locations, input and output files location, codec media profile, framerate family to match your own.
- Make sure the DRM.xml file is accessible from the output folder.
- Inspect the input list e.g. (default).
- Run
./run-all.py csv_file
(with optionally your custom csv file as an argument), and grab a cup of tea (or coffee).
The generation of current Switching Sets (ss1 for avc, ss2 for hevc/chh1) is done by executing ss/gen_ss1.sh
and ss/gen_ss2.sh
.
The generation of current splicing tests is done by executing splice/gen_avc.sh
and splice/gen_hevc_chh1.sh
.
The generation of current chunked tests is done by executing chunked/gen.sh cfhd t16
and chunked/gen.sh chh1 t2
.
Comment/uncomment the inputs
array entries in run-all.py
. Then ./run-all.py profiles/dtsc.csv
to generate the dtsc
content.
Validation as of today is done manually.
The process of validation includes:
- A initial phase checking that required parameters according to the test content description are applied:
- Media: https://github.com/nicholas-fr/test-content-validation
- CMAF and manifests: TODO
- An API call to the DASH-IF conformance validator is done to check against MPD and CMAF conformance for CTA WAVE test content. Some conformance reported issues remain.
- The content should be amended with a conformance check output document: TODO.