Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ad Insertion content - Testcase 1 - Aligned content and period boundaries #1

Closed
dsilhavy opened this issue Mar 1, 2021 · 23 comments
Closed
Labels
approved DASH-IF approved test vector available Test vector is available dash-if-agreed Requested by DASH-IF test team (don't mess with it, otherwise you are in trouble)

Comments

@dsilhavy
Copy link
Contributor

dsilhavy commented Mar 1, 2021

A short description of the use case for the new test content.
This test content is supposed to demonstrate the insertion of a midroll ad in a static MPD. In this testcase the segment- and period boundaries are perfectly aligned (as shown in the Figure below).

Ad Insertion Testcases

Test content requirements

  • A multiperiod MPD with three periods
  • Period 1 and 3 are continuous, Period 2 is an ad period
  • Segment and period boundaries shall be aligned. For instance, audio and video segments can be 1.92 seconds with 25fps and 48khz. The first period might end at 9.6 seconds.
  • The duration of each period is no longer than 10 seconds.
  • All periods contain a single video and a single audio AdaptationSet.
  • The content shall be encoded/packaged with CMAF and H.264 avc1
  • Segment addressing should include at least:
    • SegmentTemplate with $number$
    • SegmentTimeline with $number$ or $time$
    • If possible: SegmentBase

Relation to CTA WAVE Test Vector database

  • For the main content use Tears of Steel.
  • For the ad test content use Big Buck Bunny.
@dsilhavy dsilhavy added the request Request for a new test content label Mar 1, 2021
@haudiobe
Copy link
Contributor

haudiobe commented Mar 2, 2021

TaC 2021/03/02:

@haudiobe haudiobe added missing-CMAF-content CMAF content is missing missing-mezzanine Mezzanine content is missing prio-high High Priority dash-if-agreed Requested by DASH-IF test team (don't mess with it, otherwise you are in trouble) labels Mar 2, 2021
@TobbeEdgeware
Copy link

The proposed content is 24Hz. I'd suggest to convert to 25Hz in order to get same frame rate as used for live including the nx1.92s segment duration.

@jpiesing
Copy link

jpiesing commented Mar 4, 2021

@juhajoki @Murmur This looks very like what you are working on ....

@Murmur
Copy link

Murmur commented Mar 4, 2021

@jpiesing this is a static mpd manifest I believe, meaning all <Period> elements are available on initial manifest load. No type=dynamic refresh events, no injection of new periods at runtime on new mdp reload event.

This topic still gives good details about the alignments, such as video(h264) an audio(aac) segments to have an equal perfect segment durations. This is something not easy to get with an integer 2,3,4,.. sec segments for aac codec.
AAC audio frame samples is 1024 per packet

@Murmur
Copy link

Murmur commented Apr 23, 2021

Is it a mistake to have <BaseURL>https://dash.akamaized.net/dashif/ad-insertion-testcase1/batch2/counter/b/ad-insertion-testcase1.mpd</BaseURL> value ending to a manifest.mpd as well?

Can you provide your ffmpeg+mp4box command lines for creating this content such as CMAF and 1.92s segmenting?

@rbouqueau
Copy link
Collaborator

Is it a mistake

Yes, thanks for reporting!

Can you provide your ffmpeg+mp4box command lines for creating this content such as CMAF and 1.92s segmenting?

See here https://github.com/Dash-Industry-Forum/Test-Content/blob/e31b16f3fd188b00988de2906910f40c23fb98e2/ad-insertion-testcase1.sh. I've just created the PR.

NB1: it uses one-liner commands using GPAC only (wherever possible).

NB2: the refresh time of the server is quite long. So fixes may take time to apply.

@rbouqueau
Copy link
Collaborator

Comment from today's call: favour this client version: https://reference.dashif.org/dash.js/nightly/samples/dash-if-reference-player/index.html

@dsilhavy
Copy link
Contributor Author

I did a check in dash.js and Shaka, please find the test results and observations here:
https://docs.google.com/spreadsheets/d/1OLRzskFmO5yL_kJpF6cILrO_uy-USrTmvsWZHEgqgtw/edit

@Murmur
Copy link

Murmur commented May 14, 2021

We have done this multiperiod(main content, adverts, static mpd) a little over a year ago. We also test manifest events on this one. Feel free to test run but nightly build most likely stalled at 1m55s in a main content(after first adverts, see burn-in timestamp).
https://refapp.hbbtv.org/videos/00_llama_multiperiod_v1/manifest.mpd
https://reference.dashif.org/dash.js/nightly/samples/dash-if-reference-player/index.html

We are compiling a similar scenario for a dynamic(live) test content.

@rbouqueau
Copy link
Collaborator

@dsilhavy the @MediaPresentationDuration was not referenced in the document but is fixed. Still working on the other items.

@rbouqueau
Copy link
Collaborator

@dsilhavy I checked the duration of the periods and they seem ok.

To dump the mpd as a file I used gpac -i URL.mpd -o file.mp4. And I used MP4Box -info to inspect the durations.

I'm going to generate a new batch of files soon.

The other mandatory points should be fixed so I generated a batch3:

@dsilhavy
Copy link
Contributor Author

dsilhavy commented Jun 7, 2021

@rbouqueau Thanks for the new vectors, I added a second tab to the Spreadsheet: https://docs.google.com/spreadsheets/d/1OLRzskFmO5yL_kJpF6cILrO_uy-USrTmvsWZHEgqgtw/edit#gid=498241230

Overall it looks good, I see a minor problem in dash.js having a small gap in the end for all testvectors.

https://dash.akamaized.net/dashif/ad-insertion-testcase1/batch4/real/a/ad-insertion-testcase1.mpd has a major issue between period 2 and 3 in both dash.js and Shaka. Might be related to differences between PTO and tfdt->bmdt in the audio segments.

@rbouqueau
Copy link
Collaborator

I think I fixed the real/a content: https://dash.akamaized.net/dashif/ad-insertion-testcase1/batch5/real/a/ad-insertion-testcase1.mpd

To summarize, since the AUs boundaries are exactly where we cut the Periods, working in the encoded or raw domain shouldn't make any difference. But it does so I switched to raw.

I also applied the same patch in an attempt to fix the Jumping to end of stream because of gap from 28.677133 to 28.8. Gap duration: 0.1228669999999994 messages. I'd be happy if we could have a look together at what's happening. An inspection of the content shows that the durations seem fine but I may be missing something.

@dsilhavy
Copy link
Contributor Author

dsilhavy commented Jun 8, 2021

@rbouqueau Thanks for the feedback.

Regarding gap jumping:

Jumping to end of stream because of gap from 28.677133 to 28.8. Gap duration: 0.1228669999999994

The problem was that we did not call MSE.endOfStream if the last period was prebuffered once the previous period is still playing. This fixed here Dash-Industry-Forum/dash.js@a1297a2 . Changes should be visible in nightly.

@rbouqueau
Copy link
Collaborator

We can remove the following labels after comments in the CTA-WAVE DTCTF call today:

  • missing-CMAF-content
  • missing-mezzanine

Once I get access to the appropriate information on the Interoperability WG I assume I'll have to regenerate the vectors.

@haudiobe haudiobe removed missing-mezzanine Mezzanine content is missing missing-CMAF-content CMAF content is missing request Request for a new test content labels Oct 5, 2021
@haudiobe
Copy link
Contributor

haudiobe commented Oct 5, 2021

Test content is good - needs to be published and announced, please add to data base.

@haudiobe haudiobe added add-to-database Needs to be added to DASH-IF Test content data base approved DASH-IF approved test vector and removed prio-high High Priority labels Oct 5, 2021
@rbouqueau
Copy link
Collaborator

rbouqueau commented Oct 14, 2021

@haudiobe
Copy link
Contributor

Test Call 2021/11/12:

@haudiobe haudiobe added available Test vector is available and removed add-to-database Needs to be added to DASH-IF Test content data base labels Nov 12, 2021
@haudiobe
Copy link
Contributor

This one is available - announce to DASH-IF IOP

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
approved DASH-IF approved test vector available Test vector is available dash-if-agreed Requested by DASH-IF test team (don't mess with it, otherwise you are in trouble)
Projects
None yet
Development

No branches or pull requests

6 participants