-
Notifications
You must be signed in to change notification settings - Fork 5
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
8.8 Playback over WAVE Baseline Splice Constraints #22
Comments
@dsilhavy FYI |
@nicholas-fr @rbouqueau this may require addtional test content which in turn requires additional mezzanine content. For example, it might need both tears of steel and big buck bunny. |
I've re-read the WAVE content format spec and device playback spec sections relating to baseline splice constraints. My first impression is that a CMAF switching set with 30s of some other content encoded using the same parameters as the switching set used for test 8.5 would be sufficient. The test for 8.8 would play the switching set for test 8.5, then the new switching set, then back to the switching set from test 8.5. Do people agree with this? 8.8 will be run separately for video and audio but it would be good for the content to be re-usable for 9.4 which tests the combination. Test 9.4 would probably be the same as the DASH-IF issues Dash-Industry-Forum/Test-Content#1 and following. Focusing on 9.4 for now & inspired by the DASH-IF issue, it might be best to use 30s of Big Buck Bunny. In order to meet the requirements for 9.4, it seems to me that the video and audio CMAF fragment lengths would need to be somehow aligned. In DVB, it was mentioned that multiples of 960ms may work well for video and (some) audio codecs. For DASH-IF test cases 2, Dash-Industry-Forum/Test-Content#2 and Dash-Industry-Forum/Test-Content#3, we would want to avoid perfect alignment between video and audio fragment lengths at the ends of all video fragments. For DASH-IF test cases 1 and 2, the additional test content would need the video and audio fragment lengths aligned. |
Does this mean the frame number sequence will run 1->X->1->Y->1->Z ? |
If the two switching sets are A and B then it might be this; {A,1} -> {A,X} -> {B,1} -> {B,Y} -> {A,X+1} -> {A,Z} where X is the end of a segment in A, Y is the last segment of A and Z is the last segment of A.
I have no idea. |
Some comments from our side, as I discussed this with @louaybassbouss I find the description in DPCTF 8.8 a bit confusing. Speaking in DASH terminology, it sounds like we are testing a switch of AdaptationSets with similar media types within a single period. So for instance:
If this interpretation is correct I suggest to use the same mezzanine root content for this use case and for video maybe flip it by 90 or 180 degrees. That way, there is a clear difference between the SwitchingSets/AdaptationSets but no "real" transition to a totally different content. However, the result of this test case is important for 9.4 as the same logic applies. As Jon mentioned: DPCTF 9.4 seems to map to an ad-insertion test case as we are switching between CMAF presentations. From my understanding CMAF presentations can be interpreted as DASH periods or single period DASH MPDs combined via MPD chaining. In this case it corresponds to Dash-Industry-Forum/Test-Content#1 and the following issues. For this, I suggest to use two different types of mezzanine content like BBB and ToS. Some general comments:
|
I'm glad I'm not the only one :)
That's not how I read DPCTF 5.3.3.5 and CSTF 7.2.2. I think these are the equivalent of DASH period-connected but I certainly admit I could be wrong.
I ended up seeing 8.8 as a subset of 9.4 and hence trying to work out what is wanted for 9.4 and then working backwards to 8.8.
I think this is a multi-period MPD with the periods being period-connected.
I agree. It would be good if HbbTV could use this as well.
Yes. Perhaps DVB and HbbTV logos too :)
Do you have any suggestions? I'm currently working on a document on how to generate WAVE test content from the mezzanines. |
Hi Jon,
In my opinion we should go with 1.92 and 0.96 seconds as segment duration. Shouldn't this work for Dash-Industry-Forum/Test-Content#2 and Dash-Industry-Forum/Test-Content#3 ? Example: Testcase 2Period 1Video Segment Duration: 0.96 Period 2Video Segment Duration: 0.96 Period 3 (resumes from period 1)Video Segment Duration: 0.96 Buffer@Offset = Period@start - @presentationTimeOffset Position of video segment in the buffer = 6.72 + (8.64 - 6.72) = 8.64 Testcase 3Similar to testcase 2 but ad period duration is 0.96 and we set Audio@presentationTimeOffset to 0.48. |
@dsilhavy Presumably the same original streams can cover Dash-Industry-Forum/Test-Content#1 but with the first period duration being a multiple of 1.92? |
Correct, thats what I assume as well. We can even use the short 0.96 seconds segments if required. That way audio and video segment durations differ but period boundaries are still aligned. |
@rbouqueau do we have now multi-period for this content (as described in #22 (comment))? |
Daniel just sent me his feedback on the streams generated for Dash-Industry-Forum/Test-Content#1 this morning. Will process and let you know. |
@louaybassbouss @rbouqueau I wasn't expecting multi-period content with a single MPD but two separate MPDs, one for the main content & one for the insertion. |
@jpiesing the test runner accepts only one MPD for video and one for audio. This is why we decided to use multi-period for this test (see discussion in cta-wave/Test-Content-Generation#25 (comment)). The multi-period is generated from the two single MPDs. The media segments from both single-period content will be reused. |
We need to make adjustments as described here but ok. Could we please open an issue on the Test Generation repo when it is confirmed this is needed? |
I have re-reviewed section 7 and annex A of the CSTF spec concerning splice conditioning
|
yes I interpreted it in this way and this is a good start point for our meeting next week
Regarding
|
From the July 20th meeting.
|
The mezzanine content has been generated, please see here for the details: |
@jpiesing @yanj-github we are mostly done with the implementation of supporting multiple input Audio/Video MPDs (SwitchingSets) to replace the Multi-Period implementation (Multi-Period support is still there but not used in any test). The code is available in a separate branch feature-multi-mpd for now, before we merge with the master, we need to clarify few things related to the interfaces with the OF mainly the structure of /generated/tests.json. Current structure of one item in tests.json (structure does not support multiple MPDs):{
"path": "avc_15_30_60-2021-07-07-online/sequential-track-playback__t1.html",
"video": "https://dash.akamaized.net/WAVE/vectors/2021-07-07/avc_sets/15_30_60/t1/stream.mpd",
"audio": "",
"code": "sequential-track-playback.html",
"config": {
"cmaf_track_duration": "PT0H1M0.000S",
"fragment_duration": "PT0H0M2.021S",
"representations": {
"1": {
"period": 1,
"duration": 60,
"type": "video",
"fragment_duration": 1.92
}
}
}
} This is a proposal for the structure of each item in /generated/tests.json with support of multiple MPDs/SwitchingSets:{
"path": "avc_15_30_60-2021-07-07-online/sequential-track-playback__t1_t2.html",
"video": [
"https://dash.akamaized.net/WAVE/vectors/2021-07-07/avc_sets/15_30_60/t1/stream.mpd",
"https://dash.akamaized.net/WAVE/vectors/2021-07-07/avc_sets/15_30_60/t2/stream.mpd"
],
"audio": [,],
"code": "sequential-track-playback.html",
"switchingSets": {
"video": [{
"cmaf_track_duration": "PT0H1M0.000S",
"fragment_duration": "PT0H0M1.920S",
"representations": {
"1": {
"period": 1,
"duration": 60,
"type": "video",
"fragment_duration": 1.92
}
}
},{
"cmaf_track_duration": "PT0H0M9.600S",
"fragment_duration": "PT0H0M1.920S",
"representations": {
"1": {
"period": 1,
"duration": 9.6,
"type": "video",
"fragment_duration": 1.92
}
}
}],
"audio": [,]
}
} Changes:
Below is an example of {
"playout": [[1,1,1], [1,1,2], [1,1,3], [1,1,4], [1,1,5], [2,1,1], [2,1,2], [2,1,3], [2,1,4], [2,1,5], [1,1,6], [1,1,7], [1,1,8], [1,1,9], [1,1,10] ...]
} |
@louaybassbouss I have no comments on the proposal. |
Thanks @louaybassbouss |
Our proposal is to apply to all tests. For other tests, the length of arrays will be {
"path": "avc_15_30_60-2021-07-07-online/sequential-track-playback__t1.html",
"video": [
"https://dash.akamaized.net/WAVE/vectors/2021-07-07/avc_sets/15_30_60/t1/stream.mpd",
],
"audio": [],
"code": "sequential-track-playback.html",
"switchingSets": {
"video": [{
"cmaf_track_duration": "PT0H1M0.000S",
"fragment_duration": "PT0H0M1.920S",
"representations": {
"1": {
"period": 1,
"duration": 60,
"type": "video",
"fragment_duration": 1.92
}
}
}],
"audio": []
}
} wdyt? |
Thanks @louaybassbouss and @jpiesing Q4 and Q6 are question about the configuration file. Q1: In terms of number of mpds to configure for each test, how do we stop configuration fault? Will TR stop user from doing the following by giving error message or have clear documentation to user? Q2: OF will only work when playout is configured for switching set tests and splicing tests. Will TR report failure or when playout is missing? Q3: The coratia and TOS mezzanine content has same ID. If user configure splice main and ad as same content ID such as coatia A1 and TOS A1 OF won’t be able to handle it due to detected recording has same content ID. Will TR reports error on this or we have clear documentation which state the test should not configured in this way? Q4: Regarding to the playout for switching sets test, will it remain as it is now for switching set or it will be changed? Q5: Can we have “frame rate” added in tests.json file please? OF can detect it from QR code but it is helpful for us to know frame rate to expect before OF detect the QR code. This is a blocker for us, if you can confirm this can be done it would be helpful. Q6: Is there any limitation of playout for splicing test? Or it will be robust that any values are allowed please? |
I implemented the proposed changes to the structure of the tests.json and regenerated it. You can find the new tests.json in the feature-multi-mpd branch. I've created a branch in the deploy repository for testing it. |
Hi @louaybassbouss and @FritzHeiden will you be able to add “frame rate” to the "tests.json" file please? It is currently a blocker for us. Thanks. |
I updated the generate script to include the video frame rate. You can find it on the feature-multi-mpd branch. |
@yanj-github this issue is ready from our side the only missing step is to merge it with master once you finished testing. |
For all tests that expect a single MPD such as sequential test only the first combination will be considered. All other MPDs are ignored. There is no error message. In the current set of tests, only Splicing tests expect more than 1 MPD and you can control it via the
By default, the first representation of the first MPD is played. We can end the test with an error if this is preferred.
If mezzanine content with same ID is used in the CSV, we add an increment to the filename. But the preferred way is to use different folders (last column in the CSV). You can still distinguish between the different content since the MPD URLs will be different.
I hope this is answered in last meeting
This is now added to the feature-multi-mpd
What limitations do you have in mind |
Thanks @louaybassbouss
This sounds good to me. From the branch I can see that multiple MPDs configured for switching test which confuses me. If multiple MPDs only expected for splicing tests can you kindly change it please? Q2
When playout is missing for the test which it is expected, OF will give a result saying playout parameter is missing. User will then find out configuration missing after finished the observation. I would prefer to know playout is missing earlier if I were a user. Seperate issue raised for this: #49 Q3
Thanks for this. But I think I have caused confusion here. I meant the content ID is the ID from the QR code. TOS and Croatia mezzanine have same content ID in its QR code. When user define to use same mpd for splicing tests or use mpds has content ID for splicing tests OF will reports the fault as it failed to detect the playback changes from one content to another. Q6
with "playout": [[x,y,z],.. ...] Seperate issue raised for this: #50 |
@louaybassbouss and @FritzHeiden
Just plays back from start to end there is no splicing. I have also tested the following playout:
This does splice after 30 mins and it back to begining. This is as expected. Also t1 and t2 has same content ID which makes is unable for OF to detected the change in content. Switching set should be used so can we change main ss1 and While abosent in proper splicing content (big bucket bunny), can we use t21 please? t21 has content id "K1" different to what we have in ss1. |
@yanj-github we will check. yes we can use |
I'm confused about this discussion. Is there some content missing? If we need an encoded version of one of the following & it doesn't exist, please open an issue in the test content generation project. If the mezzanine content itself is wrong (content ID?) then please open an issue in the mezzanine content project. splice_ad_bbb_AD-A1_1280x720@2..> 05-Aug-2021 10:18 5k |
@jpiesing Thanks very much. Just wanted to clearify, sorry if I didnt make it clear. Splicing ad should use splice_ad_bbb. In the meantime to unblock us to implement and check splicing logic can we have t21 instead of splicing ad in a absence of the content missing. Current t1 and t2 is not switching set and also has some content ID, OF unable to detected the content change. @louaybassbouss I am not really familar with the content downloading process between TR and the content pool. |
If splice_ad_bbb_* don't exist in encoded forms then someone needs to open an issue in the test content generation project asking romain to encode them. |
Yes closing |
Two requirements for test 8.8 are extremely unclear to me.
What are the characteristics of these? Do we have the right mezzanine content?
In the March 2nd meeting, it was suggested we might want both big buck bunny and tears of steel mezzanine content but how can we reach a decision?
Who is responsible for providing the value of the playout array?
The text was updated successfully, but these errors were encountered: