Closed Bug 1837061 Opened 1 year ago Closed 1 year ago

[wmfme] support HWDRM query for WMFCDM

Categories

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

task

Tracking

()

RESOLVED FIXED
116 Branch
Tracking Status
firefox116 --- fixed

People

(Reporter: alwu, Assigned: alwu)

References

(Blocks 1 open bug)

Details

Attachments

(14 files, 2 obsolete 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
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
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review

This bug will set the robustness on the capabilities properly which is returned from the MFCDM process, so that we would be able to play DRM video when capabilities from a query contain robustness.

This test page and this one can be used to test different robustness.

Depends on D180161

Eg. Hardware secure and software secure can have a completely different
supported configs.

Depends on D180162

Depends on D180272

Unfortunately IMFContentDecryptionModuleFactory::IsTypeSupported can't
get the correct result when the query is about HWDRM. It would always
return true, and it seems not checking any of features we set.

Therefore, we need to create a dummy CDM to see whether a CDM can be
created or not.

Depends on D180273

If we don't do that, returning an empty capabilities would hit the
assertion when serializing MFCDMCapabilitiesIPDL, which might be caused
by uninitialized random value.

[1]
https://searchfox.org/mozi887d4b5da89a1192lla-central/rev/0ed0fd96b7b7f066927a67db/ipc/glue/EnumSerializer.h#60-61

Depends on D180274

Attachment #9337786 - Attachment description: WIP: Bug 1837061 - part1 : support HWDRM query in MFCDM. → Bug 1837061 - part1 : support HWDRM query in MFCDM.
Attachment #9337787 - Attachment description: WIP: Bug 1837061 - part2 : print debug information for the key system config. → Bug 1837061 - part2 : print debug information for the key system config.
Attachment #9337788 - Attachment description: WIP: Bug 1837061 - part3 : remove unused member variable. → Bug 1837061 - part3 : remove unused member variable.
Attachment #9337789 - Attachment description: WIP: Bug 1837061 - part4 : allow to generate multiple key system configs for one system. → Bug 1837061 - part4 : allow to generate multiple key system configs for one system.
Attachment #9337961 - Attachment description: WIP: Bug 1837061 - part5 : compare condidate config from multiple configs to know if it's supported. → Bug 1837061 - part5 : compare condidate config from multiple configs to know if it's supported.
Attachment #9337962 - Attachment description: WIP: Bug 1837061 - part6 : query HWDRM for WMFCDM. → Bug 1837061 - part6 : query HWDRM for WMFCDM.
Attachment #9337963 - Attachment description: WIP: Bug 1837061 - part7 : do a real CDM creation check to know whether HWDRM is available. → Bug 1837061 - part7 : do a real CDM creation check to know whether HWDRM is available.
Attachment #9337964 - Attachment description: WIP: Bug 1837061 - part8 : always set persistentState and distinctiveID on MFCDMCapabilitiesIPDL to avoid incorrect value. → Bug 1837061 - part8 : always set persistentState and distinctiveID on MFCDMCapabilitiesIPDL to avoid incorrect value.
Attachment #9338146 - Attachment description: Bug 1837061 - part9 : cached capabilities for key systems in order to reduce unnecessary IPC calls. → WIP: Bug 1837061 - part9 : cached capabilities for key systems in order to reduce unnecessary IPC calls.
Attachment #9337963 - Attachment description: Bug 1837061 - part7 : do a real CDM creation check to know whether HWDRM is available. → WIP: Bug 1837061 - part7 : do a real CDM creation check to know whether HWDRM is available.
Attachment #9337964 - Attachment description: Bug 1837061 - part8 : always set persistentState and distinctiveID on MFCDMCapabilitiesIPDL to avoid incorrect value. → WIP: Bug 1837061 - part8 : always set persistentState and distinctiveID on MFCDMCapabilitiesIPDL to avoid incorrect value.
Duplicate of this bug: 1836343
Attachment #9337786 - Attachment description: Bug 1837061 - part1 : support HWDRM query in MFCDM. → WIP: Bug 1837061 - part1 : support HWDRM query in MFCDM.
Attachment #9337787 - Attachment description: Bug 1837061 - part2 : print debug information for the key system config. → WIP: Bug 1837061 - part2 : print debug information for the key system config.
Attachment #9337788 - Attachment description: Bug 1837061 - part3 : remove unused member variable. → WIP: Bug 1837061 - part3 : remove unused member variable.
Attachment #9337789 - Attachment description: Bug 1837061 - part4 : allow to generate multiple key system configs for one system. → WIP: Bug 1837061 - part4 : allow to generate multiple key system configs for one system.
Attachment #9337961 - Attachment description: Bug 1837061 - part5 : compare condidate config from multiple configs to know if it's supported. → WIP: Bug 1837061 - part5 : compare condidate config from multiple configs to know if it's supported.
Attachment #9337962 - Attachment description: Bug 1837061 - part6 : query HWDRM for WMFCDM. → WIP: Bug 1837061 - part6 : query HWDRM for WMFCDM.
Attachment #9337964 - Attachment description: WIP: Bug 1837061 - part8 : always set persistentState and distinctiveID on MFCDMCapabilitiesIPDL to avoid incorrect value. → WIP: Bug 1837061 - part7 : always set persistentState and distinctiveID on MFCDMCapabilitiesIPDL to avoid assertion caused by unintialized value during serialization.
Attachment #9338146 - Attachment description: WIP: Bug 1837061 - part9 : cached capabilities for key systems in order to reduce unnecessary IPC calls. → WIP: Bug 1837061 - part8 : cached capabilities for key systems in order to reduce unnecessary IPC calls.
Attachment #9338198 - Attachment description: WIP: Bug 1837061 - part10 : disconnect requests on the manager thread because disconnect is not threadsafe. → WIP: Bug 1837061 - part9 : disconnect requests on the manager thread because disconnect is not threadsafe.
Attachment #9338374 - Attachment description: WIP: Bug 1837061 - part11 : make MFCDMProxy refcount thread-safe. → WIP: Bug 1837061 - part10 : make MFCDMProxy refcount thread-safe.

Depends on D180497

Attachment #9337963 - Attachment is obsolete: true
Attachment #9337787 - Attachment description: WIP: Bug 1837061 - part2 : print debug information for the key system config. → Bug 1837061 - part2 : print debug information for the key system config.
Attachment #9337961 - Attachment description: WIP: Bug 1837061 - part5 : compare condidate config from multiple configs to know if it's supported. → WIP: Bug 1837061 - part5 : compare candidate config from multiple configs to know if it's supported.
Attachment #9337786 - Attachment description: WIP: Bug 1837061 - part1 : support HWDRM query in MFCDM. → Bug 1837061 - part1 : support HWDRM query in MFCDM.
Attachment #9337788 - Attachment description: WIP: Bug 1837061 - part3 : remove unused member variable. → Bug 1837061 - part3 : remove unused member variable.
Attachment #9337789 - Attachment description: WIP: Bug 1837061 - part4 : allow to generate multiple key system configs for one system. → Bug 1837061 - part4 : allow to generate multiple key system configs for one system.
Attachment #9337961 - Attachment description: WIP: Bug 1837061 - part5 : compare candidate config from multiple configs to know if it's supported. → Bug 1837061 - part5 : compare candidate config from multiple configs to know if it's supported.
Attachment #9337962 - Attachment description: WIP: Bug 1837061 - part6 : query HWDRM for WMFCDM. → Bug 1837061 - part6 : query HWDRM for WMFCDM.
Attachment #9337964 - Attachment description: WIP: Bug 1837061 - part7 : always set persistentState and distinctiveID on MFCDMCapabilitiesIPDL to avoid assertion caused by unintialized value during serialization. → Bug 1837061 - part7 : always set persistentState and distinctiveID on MFCDMCapabilitiesIPDL to avoid assertion caused by unintialized value during serialization.
Attachment #9338146 - Attachment description: WIP: Bug 1837061 - part8 : cached capabilities for key systems in order to reduce unnecessary IPC calls. → Bug 1837061 - part8 : cached capabilities for key systems in order to reduce unnecessary IPC calls.
Attachment #9338198 - Attachment description: WIP: Bug 1837061 - part9 : disconnect requests on the manager thread because disconnect is not threadsafe. → Bug 1837061 - part9 : disconnect requests on the manager thread because disconnect is not threadsafe.
Attachment #9338374 - Attachment description: WIP: Bug 1837061 - part10 : make MFCDMProxy refcount thread-safe. → Bug 1837061 - part10 : make MFCDMProxy refcount thread-safe.
Attachment #9338384 - Attachment description: WIP: Bug 1837061 - part11 : set robustness for audio as well. → Bug 1837061 - part11 : set robustness for audio as well.
Attachment #9338960 - Attachment is obsolete: true
Pushed by alwu@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/b166e029e637 part1 : support HWDRM query in MFCDM. r=jolin https://hg.mozilla.org/integration/autoland/rev/2bc87fa183d2 part2 : print debug information for the key system config. r=jolin https://hg.mozilla.org/integration/autoland/rev/f33eae9dd3c6 part3 : remove unused member variable. r=jolin https://hg.mozilla.org/integration/autoland/rev/ab4dbaa9c4f0 part4 : allow to generate multiple key system configs for one system. r=jolin https://hg.mozilla.org/integration/autoland/rev/9d3bedaac661 part5 : compare candidate config from multiple configs to know if it's supported. r=jolin https://hg.mozilla.org/integration/autoland/rev/31fa48139408 part6 : query HWDRM for WMFCDM. r=jolin https://hg.mozilla.org/integration/autoland/rev/b4ecd3852aa0 part7 : always set persistentState and distinctiveID on MFCDMCapabilitiesIPDL to avoid assertion caused by unintialized value during serialization. r=jolin https://hg.mozilla.org/integration/autoland/rev/4c8e63e3135b part8 : cached capabilities for key systems in order to reduce unnecessary IPC calls. r=jolin https://hg.mozilla.org/integration/autoland/rev/ad92333be810 part9 : disconnect requests on the manager thread because disconnect is not threadsafe. r=jolin https://hg.mozilla.org/integration/autoland/rev/bda83c36ca2d part10 : make MFCDMProxy refcount thread-safe. r=jolin https://hg.mozilla.org/integration/autoland/rev/f8540a22a2cc part11 : set robustness for audio as well. r=jolin https://hg.mozilla.org/integration/autoland/rev/9529a2650676 part12 : set the real audio and video capabilities when creating a CDM. r=jolin https://hg.mozilla.org/integration/autoland/rev/f770fd07a8e8 part13 : do a real CDM creation check to know whether HWDRM is available. r=jolin https://hg.mozilla.org/integration/autoland/rev/9d6b12a756cb part14 : remove hw secure from MFCDMInitParamsIPDL. r=jolin
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: