[wmfme] Use WMFCDMProxy in the media engine playback framework
Categories
(Core :: Audio/Video: Playback, task, P2)
Tracking
()
Tracking | Status | |
---|---|---|
firefox113 | --- | fixed |
People
(Reporter: alwu, Assigned: alwu)
References
(Blocks 1 open bug)
Details
Attachments
(6 files)
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review |
This bug is about hooking the CDM proxy into the media engine by passing a CDM proxy ID over IPC. However, this bug won't make DRM video playback work now, because there are still some missing pieces which we haven't implemented yet.
Assignee | ||
Comment 1•1 year ago
|
||
For media engine playback, we would like to let ExternalStateMachine
being aware of the CDM proxy, so that it can pass the the Id of MFCDM
actor to the remote media engine via MFMediaEngineChild in following
patches.
Assignee | ||
Comment 2•1 year ago
|
||
Depends on D171800
Assignee | ||
Comment 3•1 year ago
|
||
Depends on D171801
Assignee | ||
Comment 4•1 year ago
|
||
Depends on D171802
Assignee | ||
Comment 5•1 year ago
|
||
Depends on D171803
Assignee | ||
Comment 6•1 year ago
|
||
A quick update. Currently I encountered an error of key mismatching while connecting MFCDM into the media engine pipeline. First, there is a class SamplesWaitingForKey
that would guard the decoding until we get a usable keyid. It would use the keyId in the sample to set a listener on CDMCap. When keyid becomes usable in the MFCDM process, we get a keyid from the key session, and send it back to the content process. When we set that received keyid in the content process, we would set it on CDMCap and CDMcap would notify the listener if it find any matched keyid.
However, when I tested this on dash.js, I found the keyIds from samples are different from the keyIds from the key session, so SamplesWaitingForKey
would never be notified about the key being usable. Currently, I don't have much progress on this issue.
In addition, I also used this tool to parse the pssh box from the init data, and see another keyid (<KID>....</KID) which is even different from above two (from sample/from key session). So maybe we don't actually need to wait for key? Because now we won't even decrypt samples, decrypt + decode would all happen inside the MFCDM.
One interesting thing I found in EME spec is this, which might indicate expecting the keyId in the first sample equal to the key Id in the init data is not correct.
However, there is no requirement that Initialization Data contain any or all key IDs used in the media data or media resource.
Now I don't have any good explanation or method to handle this issue, I will split it into another bug and try to land the basic patches in this bug first.
Updated•1 year ago
|
Updated•1 year ago
|
Updated•1 year ago
|
Updated•1 year ago
|
Updated•1 year ago
|
Assignee | ||
Comment 7•1 year ago
|
||
We didn't set the length of aByteArrayOut
before, which results in an
empty array size, so its content didn't get passed over IPC.
Depends on D171804
Pushed by alwu@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/e0a4ae573d25 part1 : add another layer for setting CDM proxy. r=jolin https://hg.mozilla.org/integration/autoland/rev/751bdba95291 part2 : send CDM proxy id to the MF CDM process. r=jolin https://hg.mozilla.org/integration/autoland/rev/d3a683a93cf7 part3 : print cdm id in the log. r=jolin https://hg.mozilla.org/integration/autoland/rev/cf79d0de211f part4 : set CDMProxy to the media engine. r=jolin https://hg.mozilla.org/integration/autoland/rev/59d2d028031c part5 : fix incorrect assertion. r=jolin https://hg.mozilla.org/integration/autoland/rev/4ef516b179bf part6 : fix empty key id and print it out in the log. r=jolin
Comment 9•1 year ago
|
||
Assignee | ||
Updated•1 year ago
|
Assignee | ||
Comment 10•1 year ago
|
||
Try result looks good.
Comment 11•1 year ago
|
||
Pushed by alwu@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/f9ed9cd299e9 part1 : add another layer for setting CDM proxy. r=jolin https://hg.mozilla.org/integration/autoland/rev/4af290b14c8f part2 : send CDM proxy id to the MF CDM process. r=jolin https://hg.mozilla.org/integration/autoland/rev/a1fe2a6536e9 part3 : print cdm id in the log. r=jolin https://hg.mozilla.org/integration/autoland/rev/a33ca6190ab1 part4 : set CDMProxy to the media engine. r=jolin https://hg.mozilla.org/integration/autoland/rev/2a3f0707a210 part5 : fix incorrect assertion. r=jolin https://hg.mozilla.org/integration/autoland/rev/ecc2d74ea855 part6 : fix empty key id and print it out in the log. r=jolin
Comment 12•1 year ago
|
||
Backout merged to central: https://hg.mozilla.org/mozilla-central/rev/dd01acf64e8f
Comment 13•1 year ago
|
||
bugherder |
https://hg.mozilla.org/mozilla-central/rev/f9ed9cd299e9
https://hg.mozilla.org/mozilla-central/rev/4af290b14c8f
https://hg.mozilla.org/mozilla-central/rev/a1fe2a6536e9
https://hg.mozilla.org/mozilla-central/rev/a33ca6190ab1
https://hg.mozilla.org/mozilla-central/rev/2a3f0707a210
https://hg.mozilla.org/mozilla-central/rev/ecc2d74ea855
Description
•