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

The average segment duration is not consistent with the durations advertised by the MPD #565

Open niteeshbhat opened 5 years ago

niteeshbhat commented 5 years ago

'HbbTV-DVB DASH Validation Requirements check violated: Section 'Duration Self consistency' - The average segment duration is not consistent with the durations advertised by the MPD 0.25 vs. 2.'

Sample mpd http://refapp.hbbtv.org/livesim/02_llamav2/manifest.mpd

Average segment duration calculation is not correct in the case when one segment contains multiple sub-segment.

Also the same issue causes another error (215 repetition\s) ###'DVB check violated Section 4.5: Segment duration SHALL be at least 1 second except for the last segment of a Period', segment 1 found with duration 0.28

niteeshbhat commented 5 years ago

With a detailed analysis, it is found that the content has a problem, indicated by this error:

error### No indexing info found while 'msix' was a compatible brand: Section 6.3.4.3. of ISO/IEC 23009-1:2012(E): Each Media Segment shall carry 'msix' as a compatible brand

So the subsegment signalling is not happening in the content , however it has subsegments. And our code uses subsegment signalling i.e the presence of sidx box , to calculate proper segment durations.

So with no subsegment signalling, segment durations calculations became subsegment durations and hence it triggers the above two errors. As the problem in the content is pointed by the tool, we dont have anything to do for this issue for now.

niteeshbhat commented 5 years ago

Waqar's comments

"Agreed that msix should indicate that sidx is present, but we are not limited to using sidx box to calculate segment duration. This is then a bug. If there is no sidx, you should use segment boundary info and other information to calculate segment duration. I think this is how its already done at some other points in the backend code."