Dash-Industry-Forum / DASH-IF-Conformance

This repository provides the source code for MPEG-DASH/DASH-IF Conformance Software/Validator. It has been extended according to further standards, such as CMAF, DVB-DASH, HbbTV, and CTA WAVE.
https://conformance.dashif.org/
Other
67 stars 28 forks source link

Warnings not present in segment validation JSON results when running tool via CLI #613

Closed nicholas-fr closed 1 year ago

nicholas-fr commented 1 year ago

When running the tool via a Docker image build with the latest development branch (https://github.com/Dash-Industry-Forum/DASH-IF-Conformance/commit/626fe38b47b1988b07249e8673e0f82d8cb571ce), on the CTA WAVE test vectors, with segment validation enabled, some warnings occur that are not reported in the JSON results.

Is it the intention to include this information in the JSON results at some point?

For example after running:

php Process_cli.php --cmaf --ctawave --segments https://dash.akamaized.net/WAVE/vectors/cfhd_sets/12.5_25_50/t34/2022-10-17/stream.mpd

The following can be found in stderr.txt for that session:

root@80d4d1513f39:/var/www/html/Utils/sessions/1667985563# cat stderr.txt
../src/ValidateAtoms.cpp : 4000 : colr atom of type nclx found, the software does not handle colr atoms of this type.
../src/ValidateAtomList.cpp : 2331 : WARNING: In moov-1:udta-1 - unknown/unexpected atom 'meta'
###        styp not at the begining of a segment (abs. file offset 944), this is unexpected
../src/PostprocessData.cpp : 229 : Warning: tfdt base media decode time 2.000000 not equal to accumulated decode time 0.000000 for track 1 for the first fragment of the movie.
According to DASH-IF IOP Section 3.2.8 @bandwidth of the Representation (300000 bps) is set too high given the @minimumBufferTime (2 s), the minimum @bandwidth value required to conform is 152095 bps.

For reference:


root@80d4d1513f39:/var/www/html/Utils/sessions/1667985563# cat logger.txt
{"parse_segments":true,"source":"https:\/\/dash.akamaized.net\/WAVE\/vectors\/cfhd_sets\/12.5_25_50\/t34\/2022-10-17\/stream.mpd","entries":{"MPEG-DASH Common":{"verdict":"PASS","BeforeMPD":{"verdict":"PASS"},"MPD":{"verdict":"PASS","info":["Schematron output: 0XLink resolving successful\n\n\nMPD validation successful - DASH is valid!\n\n\nSchematron validation successful - DASH is valid!\n\n\n"],"test":[{"spec":"MPEG-DASH","section":"Commmon","test":"Schematron Validation","messages":["XLink resolving succesful","MPD validation succesful","Schematron validation succesful"],"state":"PASS"}]},"BeforeRepresentation":{"verdict":"PASS"},"Representation":{"verdict":"PASS"},"BeforeAdaptationSet":{"verdict":"PASS"},"AdaptationSet":{"verdict":"PASS"},"Period":{"verdict":"PASS"}},"Stats":{"LastWritten":"2022-11-09 09:19:47"},"CMAF":{"verdict":"PASS","BeforeMPD":{"verdict":"PASS"},"MPD":{"verdict":"PASS"},"BeforeRepresentation":{"verdict":"PASS"},"Representation":{"verdict":"PASS"},"BeforeAdaptationSet":{"verdict":"PASS"},"AdaptationSet":{"verdict":"PASS","test":[{"spec":"CMAF","section":"Presentation Checks","test":"Attempting to open switching sets for adaptationSet 0","messages":["Files exist"],"state":"PASS"},{"spec":"CMAF","section":"Section 7.3.6","test":"Presentation duration needs to be known for validation","messages":["Presentation duration is known"],"state":"PASS"}]},"Period":{"verdict":"PASS"}},"CTA-WAVE":{"verdict":"PASS","BeforeMPD":{"verdict":"PASS"},"MPD":{"verdict":"PASS"},"BeforeRepresentation":{"verdict":"PASS"},"Representation":{"verdict":"PASS"},"BeforeAdaptationSet":{"verdict":"PASS","test":[{"spec":"CTAWAVE","section":"Presentation Checks","test":"Attempting to open switching sets for adaptationSet ","messages":["Files exist"],"state":"PASS"},{"spec":"CTAWAVE","section":"Informative","test":"Wave set conformance to CMAF Presentation Profile","messages":["No conformance found"],"state":"PASS"}]},"AdaptationSet":{"verdict":"PASS"},"Period":{"verdict":"PASS"}},"verdict":"PASS"},"verdict":"PASS","enabled_modules":[{"name":"MPEG-DASH Common"},{"name":"CMAF"},{"name":"CTA-WAVE"}]}
andyburras commented 1 year ago

Also looks to be the case with a non-Docker installation.

andyburras commented 1 year ago

UPDATE: Looks to be much wider than just warnings. For e.g. running with options '&dashif&cmaf&dvb&hbbtv', all the below are in the GUI reports but do not appear in the CLI report:

../src/ValidateAtoms.cpp : 345 : Warning for ISO/IEC 14496-12 'tkhd' alternateGroup must be 0 not 1

###        sample type not 'dac3' as it should be for codec 'ac-3'

###        ### HbbTV check violated: Section E.3.1.1. "The track run box (trun) shall allow negative composition offsets in order to maintain audio visual presentation synchronization", but unsigned offsets found 

According to DASH-IF IOP Section 3.2.8 @bandwidth of the Representation (192000 bps) is set too high given the @minimumBufferTime (1 s), the minimum @bandwidth value required to conform is 185437 bps.

###'HbbTV-DVB DASH Validation Requirements check violated: Section 'Segments' - Start time "-0.0053333333333333" within the segment 1 is not consistent with the timing indicated by the MPD "30".

 (14 repetition\s) ###'HbbTV-DVB DASH Validation Requirements check violated: Section 'Segments' - Start time "1.9786666666667" within the segment 2 is not consistent with the timing indicated by the MPD "32".

###'HbbTV-DVB DASH Validation Requirements check violated: Section 'Periods' - The accumulated duration of the segments [29.98seconds] in the representation does not match the period duration[30seconds].

Note also that fatal system errors are silently ignored in the output. It took quite a bit of head scratching until I discovered that temp/idXXXXXX/myphp-error.log had an entry "PHP Fatal error: Uncaught Error: Call to a member function getElementsByTagName()..."

Which means the command-line implementation is unusable.

(As an aside, the report also had lots of embedded escape codes which can mess up trying to autoamatically parse the results?)

dsilhavy commented 1 year ago

Segment Validation output is now included in the results of the validator and the UI