Closed Bug 1810817 Opened 1 year ago Closed 1 year ago

[wmfme] Create IPDL for Media Foundation CDM and add PlayReady DRM support in Gecko EME module.

Categories

(Core :: Audio/Video: Playback, task, P2)

Desktop
Windows 10
task

Tracking

()

RESOLVED FIXED
111 Branch
Tracking Status
firefox111 --- fixed

People

(Reporter: jhlin, Assigned: jhlin)

References

(Blocks 1 open bug)

Details

Attachments

(7 files)

A initial implementation to

  • Add an IPDL protocol managed by PRemoteDecoderManager and runs on the same utility process as the MF media engine
  • Get the capabilities of the PlayReady CDM and expose them to the EME API (MediaKeySystemAccess)
  • Create the MF CDM (IMFContentDecryptionModule) to use later

To test, use the Demo unprefixed EME sample in https://testweb.playready.microsoft.com/Tool/Hwdrm

Summary: Create IPDL for Media Foundation CDM and add PlayReady DRM support in Gecko EME module. → [wmfme] Create IPDL for Media Foundation CDM and add PlayReady DRM support in Gecko EME module.
Blocks: 1811901
No longer blocks: 1811901
See Also: → 1814697
See Also: → 1814698
Type: enhancement → task
See Also: → 1814702
See Also: → 1814769
Pushed by jolin@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/5018bb13f45a
p1: move common CDM proxy functions around. r=alwu
https://hg.mozilla.org/integration/autoland/rev/cacab6822f87
p2: extract KeySystemConfig. r=alwu
https://hg.mozilla.org/integration/autoland/rev/cad21cfbc4e5
p3: initial MFCDM protocol. r=alwu
https://hg.mozilla.org/integration/autoland/rev/7090c7757040
p4: initial PlayReady DRM support. r=alwu
https://hg.mozilla.org/integration/autoland/rev/66f1559b58e3
p5: implement *Init() for MFCDM protocol. r=alwu
https://hg.mozilla.org/integration/autoland/rev/5cb2ad9409db
p6: implement WMFCDMImpl::Init(). r=alwu
https://hg.mozilla.org/integration/autoland/rev/a2e5f26278a2
p7: implement CDMProxy for MF CDM and create/init it in MediaKeys. r=alwu
Pushed by jolin@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/3c7aa682681f
p1: move common CDM proxy functions around. r=alwu
https://hg.mozilla.org/integration/autoland/rev/0c66474f6010
p2: extract KeySystemConfig. r=alwu
https://hg.mozilla.org/integration/autoland/rev/e16e293637cf
p3: initial MFCDM protocol. r=alwu
https://hg.mozilla.org/integration/autoland/rev/4be39a7ba24f
p4: initial PlayReady DRM support. r=alwu
https://hg.mozilla.org/integration/autoland/rev/07bcec895e6b
p5: implement *Init() for MFCDM protocol. r=alwu
https://hg.mozilla.org/integration/autoland/rev/eedaee18c125
p6: implement WMFCDMImpl::Init(). r=alwu
https://hg.mozilla.org/integration/autoland/rev/cfbe0be01c67
p7: implement CDMProxy for MF CDM and create/init it in MediaKeys. r=alwu

Backed out for causing assertion failures on MFCDMParent.cpp

[task 2023-02-05T15:30:39.677Z] 15:30:39     INFO - Assertion failure: aKeySystem.EqualsLiteral(kPlayReadyKeySystemName), at /builds/worker/checkouts/gecko/dom/media/ipc/MFCDMParent.cpp:69
[task 2023-02-05T15:30:39.749Z] 15:30:39     INFO - #01: mozilla::MFCDMParent::MFCDMParent(nsTSubstring<char16_t> const&, mozilla::RemoteDecoderManagerParent*, nsISerialEventTarget*) [dom/media/ipc/MFCDMParent.cpp:69]
[task 2023-02-05T15:30:39.760Z] 15:30:39     INFO - #02: mozilla::RemoteDecoderManagerParent::AllocPMFCDMParent(nsTSubstring<char16_t> const&) [dom/media/ipc/RemoteDecoderManagerParent.cpp:263]
[task 2023-02-05T15:30:39.761Z] 15:30:39     INFO - #03: mozilla::PRemoteDecoderManagerParent::OnMessageReceived(IPC::Message const&) [s3:gecko-generated-sources:9f32e8a4f4f70428f411fa1336fc6f98ca492a5f95ae742b7bd08a7c58a266415ef31937f193edffe7ba7221013c5ec17bd5ef1ccfd0ab622ab64aef9487bece/ipc/ipdl/PRemoteDecoderManagerParent.cpp::390]
[task 2023-02-05T15:30:39.762Z] 15:30:39     INFO - #04: mozilla::ipc::MessageChannel::DispatchAsyncMessage(mozilla::ipc::ActorLifecycleProxy*, IPC::Message const&) [ipc/glue/MessageChannel.cpp:1800]
[task 2023-02-05T15:30:39.763Z] 15:30:39     INFO - #05: mozilla::ipc::MessageChannel::DispatchMessage(mozilla::ipc::ActorLifecycleProxy*, mozilla::UniquePtr<IPC::Message,mozilla::DefaultDelete<IPC::Message> >) [ipc/glue/MessageChannel.cpp:1725]
[task 2023-02-05T15:30:39.764Z] 15:30:39     INFO - #06: mozilla::ipc::MessageChannel::RunMessage(mozilla::ipc::ActorLifecycleProxy*, mozilla::ipc::MessageChannel::MessageTask&) [ipc/glue/MessageChannel.cpp:1525]
[task 2023-02-05T15:30:39.767Z] 15:30:39     INFO - #07: mozilla::ipc::MessageChannel::MessageTask::Run() [ipc/glue/MessageChannel.cpp:1632]
[task 2023-02-05T15:30:39.768Z] 15:30:39     INFO - #08: mozilla::TaskQueue::Runner::Run() [xpcom/threads/TaskQueue.cpp:266]
[task 2023-02-05T15:30:39.770Z] 15:30:39     INFO - #09: nsThreadPool::Run() [xpcom/threads/nsThreadPool.cpp:342]
[task 2023-02-05T15:30:39.771Z] 15:30:39     INFO - #10: nsThread::ProcessNextEvent(bool, bool*) [xpcom/threads/nsThread.cpp:1220]
[task 2023-02-05T15:30:39.771Z] 15:30:39     INFO - #11: NS_ProcessNextEvent(nsIThread*, bool) [xpcom/threads/nsThreadUtils.cpp:477]
[task 2023-02-05T15:30:39.772Z] 15:30:39     INFO - #12: mozilla::ipc::MessagePumpForNonMainThreads::Run(base::MessagePump::Delegate*) [ipc/glue/MessagePump.cpp:300]
[task 2023-02-05T15:30:39.772Z] 15:30:39     INFO - #13: MessageLoop::RunInternal() [ipc/chromium/src/base/message_loop.cc:381]
[task 2023-02-05T15:30:39.773Z] 15:30:39     INFO - #14: MessageLoop::RunHandler() [ipc/chromium/src/base/message_loop.cc:375]
[task 2023-02-05T15:30:39.774Z] 15:30:39     INFO - #15: MessageLoop::Run() [ipc/chromium/src/base/message_loop.cc:357]
[task 2023-02-05T15:30:39.775Z] 15:30:39     INFO - #16: nsThread::ThreadFunc(void*) [xpcom/threads/nsThread.cpp:386]
[task 2023-02-05T15:30:39.921Z] 15:30:39     INFO - #17: _PR_NativeRunThread(void*) [nsprpub/pr/src/threads/combined/pruthr.c:399]
[task 2023-02-05T15:30:39.936Z] 15:30:39     INFO - #18: pr_root(void*) [nsprpub/pr/src/md/windows/w95thred.c:139]
[task 2023-02-05T15:30:39.939Z] 15:30:39     INFO -  fix-stacks: error: failed to read debug info file `ucrtbase.pdb` for `C:\Windows\System32\ucrtbase.dll`
[task 2023-02-05T15:30:39.939Z] 15:30:39     INFO -  fix-stacks: note: this is expected and harmless for all PDB files on opt automation runs
[task 2023-02-05T15:30:39.939Z] 15:30:39     INFO -  fix-stacks: The system cannot find the file specified. (os error 2)
[task 2023-02-05T15:30:39.940Z] 15:30:39     INFO - #19: o_iswdigit [C:\Windows\System32\ucrtbase.dll + 0x44f9f]
[task 2023-02-05T15:30:39.941Z] 15:30:39     INFO - #20: BaseThreadInitThunk [C:\Windows\System32\KERNEL32.DLL + 0x1fa29]
[task 2023-02-05T15:30:40.036Z] 15:30:40     INFO - #21: DllBlocklist_Initialize [Z:\task_167560217985931\build\application\firefox\mozglue.dll + 0x7db58]
[task 2023-02-05T15:30:40.047Z] 15:30:40     INFO - #22: RtlGetAppContainerNamedObjectPath [C:\Windows\SYSTEM32\ntdll.dll + 0x67a9e]
[task 2023-02-05T15:30:40.048Z] 15:30:40     INFO - #23: RtlGetAppContainerNamedObjectPath [C:\Windows\SYSTEM32\ntdll.dll + 0x67a6e]
[task 2023-02-05T15:30:40.048Z] 15:30:40     INFO - [Parent 4160, IPC I/O Parent] WARNING: [1.1]: Ignoring message 'EVENT_MESSAGE' to unknown peer 82EAAEC008C99DF6.D3700A5569249F74: file /builds/worker/checkouts/gecko/ipc/glue/NodeController.cpp:344
[task 2023-02-05T15:30:40.049Z] 15:30:40     INFO - [Parent 4160, IPC I/O Parent] WARNING: [1.1]: Ignoring message 'EVENT_MESSAGE' to unknown peer 82EAAEC008C99DF6.D3700A5569249F74: file /builds/worker/checkouts/gecko/ipc/glue/NodeController.cpp:344
[task 2023-02-05T15:30:40.050Z] 15:30:40     INFO - [Parent 4160, IPC I/O Parent] WARNING: [1.1]: Ignoring message 'EVENT_MESSAGE' to unknown peer 82EAAEC008C99DF6.D3700A5569249F74: file /builds/worker/checkouts/gecko/ipc/glue/NodeController.cpp:344
[task 2023-02-05T15:30:40.050Z] 15:30:40     INFO - [Parent 4160, IPC I/O Parent] WARNING: [1.1]: Rejecting introduction request from '75B700D48393DA6E.481938EC933081CB' for unknown peer '82EAAEC008C99DF6.D3700A5569249F74': file /builds/worker/checkouts/gecko/ipc/glue/NodeController.cpp:675
[task 2023-02-05T15:30:40.051Z] 15:30:40     INFO - [Child 88, IPC I/O Child] WARNING: [75B700D48393DA6E.481938EC933081CB]: Could not be introduced to peer 82EAAEC008C99DF6.D3700A5569249F74: file /builds/worker/checkouts/gecko/ipc/glue/NodeController.cpp:605
[task 2023-02-05T15:30:40.051Z] 15:30:40     INFO - ### XPCOM_MEM_BLOAT_LOG defined -- logging bloat/leaks to C:\Users\task_167560217985931\AppData\Local\Temp\tmpq08rbfwh.mozrunner\runreftest_leaks_utility_pid2728.log
[task 2023-02-05T15:30:40.052Z] 15:30:40     INFO - [2728, Main Thread] WARNING: XPCOM_MEM_BLOAT_LOG is set, disabling native allocations.: file /builds/worker/checkouts/gecko/tools/profiler/core/platform.cpp:345
[task 2023-02-05T15:30:40.691Z] 15:30:40     INFO - Assertion failure: aAdditionalFeature.Last() == u',', at /builds/worker/checkouts/gecko/dom/media/ipc/MFCDMParent.cpp:121
[task 2023-02-05T15:30:40.757Z] 15:30:40     INFO - #01: mozilla::FactorySupports(Microsoft::WRL::ComPtr<IMFContentDecryptionModuleFactory>&, nsTString<char16_t> const&, nsTString<char> const&, nsTString<char> const&, nsTString<char16_t> const&) [dom/media/ipc/MFCDMParent.cpp:121]
[task 2023-02-05T15:30:40.765Z] 15:30:40     INFO - #02: mozilla::MFCDMParent::RecvGetCapabilities(std::function<void (const mozilla::MFCDMCapabilitiesResult &)>&&) [dom/media/ipc/MFCDMParent.cpp:184]
[task 2023-02-05T15:30:40.766Z] 15:30:40     INFO - #03: mozilla::PMFCDMParent::OnMessageReceived(IPC::Message const&) [s3:gecko-generated-sources:369085b72ee883b509340b432c7600f5e1ffaddf55dbaef3ee8655bf865a1fa94bafd6944dc1c3e7d496a0e45b393c2ffe85c8e9d58b1b3e5a6222945d74834e/ipc/ipdl/PMFCDMParent.cpp::140]
[task 2023-02-05T15:30:40.767Z] 15:30:40     INFO - #04: mozilla::PRemoteDecoderManagerParent::OnMessageReceived(IPC::Message const&) [s3:gecko-generated-sources:9f32e8a4f4f70428f411fa1336fc6f98ca492a5f95ae742b7bd08a7c58a266415ef31937f193edffe7ba7221013c5ec17bd5ef1ccfd0ab622ab64aef9487bece/ipc/ipdl/PRemoteDecoderManagerParent.cpp::291]
[task 2023-02-05T15:30:40.767Z] 15:30:40     INFO - #05: mozilla::ipc::MessageChannel::DispatchAsyncMessage(mozilla::ipc::ActorLifecycleProxy*, IPC::Message const&) [ipc/glue/MessageChannel.cpp:1800]
[task 2023-02-05T15:30:40.768Z] 15:30:40     INFO - #06: mozilla::ipc::MessageChannel::DispatchMessage(mozilla::ipc::ActorLifecycleProxy*, mozilla::UniquePtr<IPC::Message,mozilla::DefaultDelete<IPC::Message> >) [ipc/glue/MessageChannel.cpp:1725]
[task 2023-02-05T15:30:40.770Z] 15:30:40     INFO - #07: mozilla::ipc::MessageChannel::RunMessage(mozilla::ipc::ActorLifecycleProxy*, mozilla::ipc::MessageChannel::MessageTask&) [ipc/glue/MessageChannel.cpp:1525]
[task 2023-02-05T15:30:40.772Z] 15:30:40     INFO - #08: mozilla::ipc::MessageChannel::MessageTask::Run() [ipc/glue/MessageChannel.cpp:1632]
[task 2023-02-05T15:30:40.774Z] 15:30:40     INFO - #09: mozilla::TaskQueue::Runner::Run() [xpcom/threads/TaskQueue.cpp:266]
[task 2023-02-05T15:30:40.775Z] 15:30:40     INFO - #10: nsThreadPool::Run() [xpcom/threads/nsThreadPool.cpp:342]
[task 2023-02-05T15:30:40.777Z] 15:30:40     INFO - #11: nsThread::ProcessNextEvent(bool, bool*) [xpcom/threads/nsThread.cpp:1220]
[task 2023-02-05T15:30:40.777Z] 15:30:40     INFO - #12: NS_ProcessNextEvent(nsIThread*, bool) [xpcom/threads/nsThreadUtils.cpp:477]
[task 2023-02-05T15:30:40.778Z] 15:30:40     INFO - #13: mozilla::ipc::MessagePumpForNonMainThreads::Run(base::MessagePump::Delegate*) [ipc/glue/MessagePump.cpp:300]
[task 2023-02-05T15:30:40.778Z] 15:30:40     INFO - #14: MessageLoop::RunInternal() [ipc/chromium/src/base/message_loop.cc:381]
[task 2023-02-05T15:30:40.779Z] 15:30:40     INFO - #15: MessageLoop::RunHandler() [ipc/chromium/src/base/message_loop.cc:375]
[task 2023-02-05T15:30:40.780Z] 15:30:40     INFO - #16: MessageLoop::Run() [ipc/chromium/src/base/message_loop.cc:357]
[task 2023-02-05T15:30:40.781Z] 15:30:40     INFO - #17: nsThread::ThreadFunc(void*) [xpcom/threads/nsThread.cpp:386]
[task 2023-02-05T15:30:40.781Z] 15:30:40     INFO - #18: _PR_NativeRunThread(void*) [nsprpub/pr/src/threads/combined/pruthr.c:399]
[task 2023-02-05T15:30:40.782Z] 15:30:40     INFO - #19: pr_root(void*) [nsprpub/pr/src/md/windows/w95thred.c:139]
[task 2023-02-05T15:30:40.782Z] 15:30:40     INFO - #20: o_iswdigit [C:\Windows\System32\ucrtbase.dll + 0x44f9f]
[task 2023-02-05T15:30:40.783Z] 15:30:40     INFO - #21: BaseThreadInitThunk [C:\Windows\System32\KERNEL32.DLL + 0x1fa29]
[task 2023-02-05T15:30:40.783Z] 15:30:40     INFO - #22: DllBlocklist_Initialize [Z:\task_167560217985931\build\application\firefox\mozglue.dll + 0x7db58]
[task 2023-02-05T15:30:40.783Z] 15:30:40     INFO - #23: RtlGetAppContainerNamedObjectPath [C:\Windows\SYSTEM32\ntdll.dll + 0x67a9e]
[task 2023-02-05T15:30:40.784Z] 15:30:40     INFO - #24: RtlGetAppContainerNamedObjectPath [C:\Windows\SYSTEM32\ntdll.dll + 0x67a6e]
Pushed by jolin@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/22064d2ea972
p1: move common CDM proxy functions around. r=alwu
https://hg.mozilla.org/integration/autoland/rev/f78a668162db
p2: extract KeySystemConfig. r=alwu
https://hg.mozilla.org/integration/autoland/rev/286e23b2fd09
p3: initial MFCDM protocol. r=alwu
https://hg.mozilla.org/integration/autoland/rev/8fb54c90e452
p4: initial PlayReady DRM support. r=alwu
https://hg.mozilla.org/integration/autoland/rev/5ef35f4a673a
p5: implement *Init() for MFCDM protocol. r=alwu
https://hg.mozilla.org/integration/autoland/rev/2761e91e1df9
p6: implement WMFCDMImpl::Init(). r=alwu
https://hg.mozilla.org/integration/autoland/rev/a4643bed933b
p7: implement CDMProxy for MF CDM and create/init it in MediaKeys. r=alwu
See Also: → 1815546
Regressions: 1815546
See Also: 1815546
See Also: → 1815553
See Also: → 1815583
Flags: needinfo?(jolin)
Regressions: 1815762
Regressions: 1816105
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: