Closed Bug 1039149 (DASH-IF) Opened 7 years ago Closed 5 years ago

Tracking bug for DASH-IF player support for EME/MSE

Categories

(Core :: Audio/Video: Playback, defect, P5)

x86_64
Linux
defect

Tracking

()

RESOLVED WORKSFORME
Tracking Status
firefox44 --- verified
firefox45 --- verified
firefox46 --- verified
firefox47 --- verified

People

(Reporter: ajones, Unassigned)

References

(Depends on 1 open bug, Blocks 1 open bug, )

Details

Attachments

(2 obsolete files)

The dashif player doesn't work in the same configuration that is working for YouTube on MP4. See also 

https://bugzilla.mozilla.org/show_bug.cgi?id=778617#c20
The DASH IF uses the dash.js project https://github.com/Dash-Industry-Forum/dash.js as its reference player. We're eager to get it working with Firefox. It is built to play back DASH presentations conforming to the DASH-AVC/264 guidelines http://dashif.org/w/2013/08/DASH-AVC-264-v2.00-hd-mca.pdf (essentially ISOBMFF containers, H.264 video codec, HE-AACv2 audio, SMPTE-TT captions, ondemand and live profiles, common encryption). Conforming test vectors can be found at http://dashif.org/testvectors/. If there are any questions, reach us via our list server at https://groups.google.com/d/forum/dashjs. Bugs against dash.js can be filed at https://github.com/Dash-Industry-Forum/dash.js/issues?state=open. Identify yourself as Mozilla and we'll hop on it :)

Cheers

Will
(on behalf of Microsoft, Akamai, Digital Primates, Google and the other dash.js contributors).
Summary: Support needed for dashif player → Tracking bug for dashif player support
(In reply to Will Law from comment #1)
> Conforming test vectors can be found at http://dashif.org/testvectors/.

YouTube plays successfully with patch and prefs in 1040550 although the adaptive is broken as per bug 1024858. I tried the Single Resolution Multi-Rate Test Vector 1 (among others) and it sat with a buffer length at 0.

I will investigate this further next week. However I would also welcome any clues that you can give me.
Assignee: nobody → ajones
Status: NEW → ASSIGNED
Unassigning because this is a tracking bug.
Assignee: ajones → nobody
Status: ASSIGNED → NEW
@AnthonyJones - The ftyp should be present in the init segments but is not required in the media segments. Can you reference a url that shows an example of content that is missing the 'ftyp' atom and we'll look in to it?
(In reply to Will Law from comment #6)
> @AnthonyJones - The ftyp should be present in the init segments but is not
> required in the media segments. Can you reference a url that shows an
> example of content that is missing the 'ftyp' atom and we'll look in to it?

The first test vector starts with a 'moov' atom. http://dashif.org/reference/players/javascript/1.0.0/index.html?mpd=http://dash.edgesuite.net/dash264/TestCases/1a/netflix/exMPD_BIP_TC1.mpd
Assignee: nobody → ajones
Status: NEW → ASSIGNED
Attachment #8464326 - Attachment is obsolete: true
Attachment #8464326 - Flags: review?(kinetik)
Attachment #8459972 - Attachment is obsolete: true
Assignee: ajones → nobody
(In reply to Anthony Jones (:kentuckyfriedtakahe, :k17e) from comment #7)
> (In reply to Will Law from comment #6)
> > @AnthonyJones - The ftyp should be present in the init segments but is not
> > required in the media segments. Can you reference a url that shows an
> > example of content that is missing the 'ftyp' atom and we'll look in to it?
> 
> The first test vector starts with a 'moov' atom.
> http://dashif.org/reference/players/javascript/1.0.0/index.html?mpd=http://
> dash.edgesuite.net/dash264/TestCases/1a/netflix/exMPD_BIP_TC1.mpd

That manifest specifies two source files

http://dash.edgesuite.net/dash264/TestCases/1a/netflix/ElephantsDream_H264BPL30_0500.264.dash
http://dash.edgesuite.net/dash264/TestCases/1a/netflix/ElephantsDream_AAC48K_064.mp4.dash

Both do contain 'ftyp' as the first box. the character-mapped (hex to ascii) first 32 bytes containing the ftyp box for the representations respectively are:

... ftypiso2....isomiso2dashiso6

and

... ftypmp42....isomiso2dashiso6

It should be noted though that this is on-demand profile content, hence there is no separate initialization segment, the single segment provided is self-initializing. In other words, all top-level boxes (ftyp, moov, moof and mdat) exist in this single segment.
The 'ftyp' is in the file but the player is only returning a range for the 'moov' box and that dictates what gets appended. It can be demonstrated by this change here:

--- a/app/js/dash/BaseURLExtensions.js
+++ b/app/js/dash/BaseURLExtensions.js
@@ -220,7 +220,7 @@ Dash.dependencies.BaseURLExtensions = function () {
                 // We have the entire range, so continue.
                 start = pos - 8;
                 end = start + size - 1;
-                irange = start + "-" + end;
+                irange = 0 + "-" + end;
 
                 self.debug.log("Found the initialization.  Range: " + irange);
                 deferred.resolve(irange);

The range for the 'ftyp' box needs to be plumbed up so that gets appended as well.
This bug is necessary for basic playback of EME video on Windows.
Blocks: eme-m1
No longer blocks: eme-m1
Priority: -- → P5
The current plan is that Yury will be helping with DASH-IF support.
Alias: DASH-IF
Assignee: nobody → ydelendik
Summary: Tracking bug for dashif player support → Tracking bug for DASH-IF player support for EME/MSE
State of DASH-IF:

- The current version of DASH-IF was migrated to the event based framework (dijon), which make it harder to implement/use current EME API (see https://github.com/Dash-Industry-Forum/dash.js/pull/377)
- Created pilot patch for the reference implementation to make EME implemented per new spec in Firefox Nightly work with the player (which similar to the PR 377; see https://github.com/yurydelendik/dash.js/)
- Online demo of the player that uses video encoded with clearkey at http://people.mozilla.org/~ydelendik/tmp/eme-3/test.html
- Old format of the requestMediaKeySystemAccess parameter does not match the new spec -- see bug 1134066.
Depends on: 1140688
Depends on: 1140690
Depends on: 1140729
Anthony: does DASH-IF support need to block Adobe MVP? Do you think we should create a new tracking bug just for the subset of adobe-eme bugs that block partner testing/release?
Flags: needinfo?(ajones)
It no longer needs to block.
Flags: needinfo?(ajones)
Depends on: 1136050
Depends on: 1189987
Component: Audio/Video → Audio/Video: Playback
Depends on: 1131952
DASH.js works in Firefox. The ftyp atom issue from comment has been fixed in DASH.js [1]. We have been reporting other DASH.js issues on their GitHub issue tracker.

[1] https://github.com/Dash-Industry-Forum/dash.js/pull/210
Assignee: ydelendik → nobody
Status: ASSIGNED → RESOLVED
Closed: 5 years ago
Resolution: --- → WORKSFORME
You need to log in before you can comment on or make changes to this bug.