cta-wave / device-playback-task-force

9 stars 0 forks source link

Observe that the playback duration matches the duration of track #60

Closed yanj-github closed 1 year ago

yanj-github commented 4 years ago

Required Observation The playback duration of the playback matches the duration of the CMAF Track, i.e. TR[k, S] = TR [k, 1] + td[k].

Required observation of the playback duration is not correct in all tests in section 8 of CTA-5003. The calculation does not account for the duration of the last sample.

angusbell commented 4 years ago

This is about terminology.

5.3.2.4 says "The CMAF Track has samples sample[k,s] with s=1, …, S" 8.2.4 says, "The measured time when sample s is rendered is time TR[k,s]"

So TR[k, S] is the start time of the last sample, not the end time. So it shouldn't be used to describe the time the presentation ends.

haudiobe commented 2 years ago

Accepted - needs to be be fixed.

yanj-github commented 2 years ago

This observation appears to have to take account different cases such as missing frames, pre-loaded 1st frames and frozen last frame after the playback ended. It might be too complicated to present algorithm on the spec. How about the following?

The playback duration matches the duration of the CMAF Track the duration taking into account: missing starting and ending frames potential start frames being rendered before playback frozen last frame after the playback ended

For tests which has playout parameter e.g: switching set tests and splicing tests: The playback duration matches the duration of the CMAF fragments as defined in playout taking into account: missing starting and ending frames potential start frames being rendered before playback frozen last frame after the playback ended

gitwjr commented 2 years ago

@haudiobe @yanj-github I am assembling the progress of the tests including DPCAT 21 tests, applicability to observations in the spec (both main and DPCAT 12), availability of content etc., and find in reading the latest spec (1.08) and the Google Docs version of DPCAT 21 that there are currently 18 different Observations for "Playback duration matches the duration of the CMAF..." listed. Clearly some need to be different but are some simply different wording for the same observation?

8.2.5 (Video), 8.5.5.1 (General), 8.6.5.1 (General), 8.7.5.1 (General), 8.8.5.1 (General), 8.9.5.1 (General), 8.10.5.1 (General), 8.11.5.1 (General), 8.13.2/8.14.2 (incomplete - states "Same as 8.8), 8.18.5, 8.22.5: "The playback duration of the playback matches the duration of the CMAF Track, i.e. TR [k, S] = TR [k, 1] + td[k]".

8.3.5: The playback duration of the playback matches the duration of the CMAF Track starting from the presentation time of the first sample, i.e. TR[k, S] = TR [k, s1] + td[k] - tf[k,i= random_access_fragment].

8.4.5: The playback duration of the playback matches the duration of the CMAF Track starting from the presentation time of the first sample, i.e. TR[k, S] = TR [k, s1] + td[k] - random_access_time.

8.15.6 (General): The playback duration of the playback matches the duration of the CMAF Track, i.e. TR [k, S] = TR [k, 1] + td[k]. The playback duration matches the duration of the CMAF fragments as defined in playout taking into account:

8.16.6.6/8.17.5 (General): The playback duration matches the duration of the CMAF fragments as defined in playout taking into account:

8.21.5:The playback duration is larger or equal to the duration of the CMAF fragments as defined in playout, i.e.TR[k, S] >= TR [k, 1] + td[k] and TR[l, S] >= TR [l, 1] + td[l]

8.21.5: The playback duration fulfills: TR[k, S] <= TR [k, 1] + td[k] + gap_duration +/- tolerance

8.12.6 (incomplete section): The duration of playback matches the duration of the CMAF Presentation, i.e. Last frame is presented at T2 + duration of the CMAF Track.

yanj-github commented 2 years ago

Thanks @gitwjr for the summary this is helpful. For all the duration check observations it needs to take into account for:

It is so complicated to write down detailed algorithm, therefore, I was suggesting just put which factors need to be considered will be enough. What I have suggested on my previous comment, it will cover most duration observations for normal tests. However, for some tests such as splicing and switching tests playback is depends on playout parameters to load the fragment that is defined. So, the duration need to check against duration of the CMAF fragments as defined in playout. Also, for random access tests access point need to be considered.

For some specific test (some of those newly added), there is a delay, such as mse_reset_tolerance, added to the duration which might require longer duration tolerance.

gitwjr commented 1 year ago

Jan 31, 2023: @yanj-github @angusbell @haudiobe I reviewed all entries for "Playback duration". It appears that there has been substantial work done on this in the spec with many changing since my last review. The pertinent sections and the text for each are below to simplify review and comparison. Assuming the changes are correct and complete, we should be able to close this issue. The pertinent sections and the text for each are below to simplify review and comparison. - Bill Rose

8.2.5.1 (General); 8.6.5.1; 8.7.5.1; 8.9.5.1; 8.10.5.1; 8.12.6.1; 8.19.5.1; 8.21.5.1; 9.2.5.1; 9.6.5.1; (General): "The playback duration of the playback matches the duration of the CMAF Track, i.e. TR [k, S] = TR [k, 1] + td[k] taking into account:

8.3.5.1: (General) "The playback duration of the playback matches the duration of the CMAF Track starting from the presentation time of the first sample, i.e. TR[k, S] = TR [k, s1] + td[k] - tf[k,i= random_access_fragment] taking into account: • missing starting and ending frames • potential start frames being rendered before playback • frozen last frame after the playback ended"

8.4.5.1: (General) "The playback duration matches the duration of the CMAF Track, i.e., TR[k, S] = TR [k, s1] + td[k] - random_access_time, taking into account: • missing starting and ending frames • potential start frames being rendered before playback • frozen last frame after the playback ended"

8.5.5.1; 8.8.5.1; 8.11.5.1; 8.16.6.1; 9.4.5.1; (General) "The playback duration matches the duration of the CMAF fragments as defined in playout taking into account: • missing starting and ending frames. • potential start frames being rendered before playback. • frozen last frame after the playback ended."

8.13.2/8.14.2 - states "Playback Observation: Same as 8.8".

8.15.6.1; (General): The playback duration matches the duration of the CMAF fragments as defined in playout taking into account: mse_reset_tolerance missing starting and ending frames potential start frames being rendered before playback frozen last frame after the playback ended"

8.17.5.1; 8.22.5.1; (General): "The playback duration matches the duration of the CMAF Track, i.e. TR[k, S] = TR [k, 1] + td[k] taking into account: ○ missing starting and ending frames. ○ potential start frames being rendered before playback. ○ frozen last frame after the playback ended. ○ waiting_duration as the time to wait before appending new data to the buffer after a stall event."

8.18.5.1 (General): "The first presentation playback duration is equal to or greater than the duration of the “second_playout_switching_time” and the second presentation playback duration matches the second presentation duration, taking into account: • missing starting and ending frames. • potential start frames being rendered before playback. • potential extra first presentation frames being rendered after the “second_playout_switching_time”. • frozen last first presentation frame or blank frames after the “second_playout_switching_time”. • frozen last frame after the playback ended."

8.20.5.1; (General) "The playback duration matches the duration of the CMAF Track, i.e., TR[k, S] = TR [k, 1] + td[k] taking into account: ○ missing starting and ending frames. ○ potential start frames being rendered before playback. ○ frozen last frame after the playback ended. ○ The duration of the gap, only for “vod” mode. ○ The stall tolerance margin stall_tolerance_margin."

8.23.5.1; (General) "The playback duration matches the duration of the CMAF Track, i.e. TR[k, S] = TR [k, 1] + td[k] taking into account: ○ Missing starting and ending frames. ○ Potential start frames being rendered before playback. ○ Frozen last frame after the playback ended. ○ Skipped frames between random_access_from and random_access_to."

9.3.5.1; (General) "he playback duration matches the duration of the CMAF Track, i.e., TR[k, S] = TR [k, 1] + td[k] taking into account: ○ missing starting and ending frames ○ potential start frames being rendered before playback ○ frozen last frame after the playback ended ○ Skipped frames earlier the than random_access_fragment."

yanj-github commented 1 year ago

For 8.18 test: The following wording is a bit difficult to follow: • frozen last first presentation frame or blank frames after the “second_playout_switching_time”. • frozen last frame after the playback ended. How about chane them to - • frozen last frames after the “second_playout_switching_time” and the playback ended.

9.3 is same as 8.3. Wording for 9.3 is not wrong in general it saying same thing as 8.3, but it is eaiser to maintan the document to make wordings same. I suggest to make 9.3 same as 8.3.

All others looks fine to me.

gitwjr commented 1 year ago

Bill Rose changed the spec per Yan's comment in DPCTF spec v1.37.

@yanj-github Per your second recommendation it is not clear which parts of 9.3 wording should be made the same as 8.3. I can make the changes but need more guidance on what text in 9.3 should match 8.3.

rcottingham commented 1 year ago

Hi Bill, Essentially you can copy the 8.3.5.1 General -> Point 1) and replace s9.3.5.1 -> General -> Point 1) i.e. the correct wording is:

The playback duration matches the duration of the CMAF Track, i.e., TR[k, S] = TR [k, s1] + td[k] - tf[k,i= random_access_fragment] taking into account:

  • missing starting and ending frames
  • potential start frames being rendered before playback
  • frozen last frame after the playback ended
gitwjr commented 1 year ago

Thanks. Will.do with other changes to the next version. Won't be until early next week when I get back to the office.

Get Outlook for Androidhttps://aka.ms/AAb9ysg


From: rcottingham @.> Sent: Wednesday, March 8, 2023 12:28:58 PM To: cta-wave/device-playback-task-force @.> Cc: Bill Rose @.>; Mention @.> Subject: Re: [cta-wave/device-playback-task-force] Observe that the playback duration matches the duration of track (#60)

Hi Bill, Essentially you can copy the 8.3.5.1 General -> Point 1) and replace s9.3.5.1 -> General -> Point 1) i.e. the correct wording is:

The playback duration matches the duration of the CMAF Track, i.e., TR[k, S] = TR [k, s1] + td[k] - tf[k,i= random_access_fragment] taking into account:

— Reply to this email directly, view it on GitHubhttps://github.com/cta-wave/device-playback-task-force/issues/60#issuecomment-1460542217, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ADYR3ASEO6A43UVD3XLLSWTW3C6VVANCNFSM4J4MQNAQ. You are receiving this because you were mentioned.Message ID: @.***>

gitwjr commented 1 year ago

Change implemented in DPCTF v1.42