Closed
Bug 1381720
Opened 8 years ago
Closed 8 years ago
[EME] Update content_decryption_module.h
Categories
(Core :: Audio/Video: GMP, enhancement, P3)
Tracking
()
RESOLVED
FIXED
mozilla56
Tracking | Status | |
---|---|---|
firefox56 | --- | fixed |
People
(Reporter: cpearce, Assigned: cpearce)
References
Details
Attachments
(2 files, 1 obsolete file)
The content_decryption_module.h header in chromium tip has a number of changes that we don't have, namely:
* Support for cdm::ContentDecryptionModule_9 and cdm::Host_9 which add querying key status under various HDCP states, a storage ID.
* Removal of obsolete cdm interface version 7.
* Addition of VMP headers.
* Addition of 10 and 12 bit video formats.
We should update our headers.
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Comment 3•8 years ago
|
||
mozreview-review |
Comment on attachment 8887307 [details]
Bug 1381720 - Update content_decryption_module.h.
https://reviewboard.mozilla.org/r/158116/#review163292
r+ with maybe-nits:
::: dom/media/gmp/widevine-adapter/content_decryption_module.h:228
(Diff revision 1)
> +// Values are chosen to be consistent with Chromium's VideoPixelFormat values.
> enum VideoFormat {
> kUnknownVideoFormat = 0, // Unknown format value. Used for error reporting.
> - kYv12, // 12bpp YVU planar 1x1 Y, 2x2 VU samples.
> - kI420 // 12bpp YVU planar 1x1 Y, 2x2 UV samples.
> + kYv12 = 1, // 12bpp YVU planar 1x1 Y, 2x2 VU samples.
> + kI420 = 2, // 12bpp YUV planar 1x1 Y, 2x2 UV samples.
Looking at Chromium's VideoPixelFormat, they have I420=1 and YV12=2, but we have the reverse here!
(If that's intended, please update the comment to note the exception.)
::: dom/media/gmp/widevine-adapter/content_decryption_module.h:234
(Diff revision 1)
> + // In the following formats, each sample uses 16-bit in storage, while the
> + // sample value is stored in the least significant N bits where N is
> + // specified by the number after "P". For example, for YUV420P9, each Y, U,
> + // and V sample is stored in the least significant 9 bits in a 2-byte block.
> + kYUV420P9 = 16,
> + kYUV420P10 = 17,
> + kYUV422P9 = 18,
> + kYUV422P10 = 19,
> + kYUV444P9 = 20,
> + kYUV444P10 = 21,
> + kYUV420P12 = 22,
> + kYUV422P12 = 23,
> + kYUV444P12 = 24,
None of these new values are used in this patch.
Why have them here? (Guessing: Preparing for HDR?)
Why not have the other values 3-15, etc.?
::: dom/media/gmp/widevine-adapter/content_decryption_module.h:421
(Diff revision 1)
> + kHdcpVersion2_0,
> + kHdcpVersion2_1,
> + kHdcpVersion2_2
> +};
> +
> +struct Policy {
This line (and others) tells me you may not have run clang-format. Intentional?
Attachment #8887307 -
Flags: review?(gsquelart) → review+
Comment 4•8 years ago
|
||
mozreview-review |
Comment on attachment 8887308 [details]
Bug 1381720 - Add content_decryption_module_ext.h.
https://reviewboard.mozilla.org/r/158118/#review163296
::: commit-message-c6f05:5
(Diff revision 1)
> +Bug 1381720 - Add content_decryption_module_ext.h. r?gerald
> +
> +Updates to Chromium revision 6e4c388c0117fe408b66fbede91081fb1018c5fe.
> +
> +Adds Verified Media Pipeline funcction definitions.
"funcction" -> "function"
Attachment #8887308 -
Flags: review?(gsquelart) → review+
Comment 5•8 years ago
|
||
mozreview-review-reply |
Comment on attachment 8887307 [details]
Bug 1381720 - Update content_decryption_module.h.
https://reviewboard.mozilla.org/r/158116/#review163292
> Looking at Chromium's VideoPixelFormat, they have I420=1 and YV12=2, but we have the reverse here!
> (If that's intended, please update the comment to note the exception.)
Hmmm, now I see you've just copied the files as-is, so I guess my comments don't apply -- unless Chromium is actually wrong?
Assignee | ||
Comment 6•8 years ago
|
||
mozreview-review-reply |
Comment on attachment 8887307 [details]
Bug 1381720 - Update content_decryption_module.h.
https://reviewboard.mozilla.org/r/158116/#review163292
> Hmmm, now I see you've just copied the files as-is, so I guess my comments don't apply -- unless Chromium is actually wrong?
They're handling this conversion:
https://cs.chromium.org/chromium/src/media/mojo/services/mojo_cdm_allocator.cc?l=35&rcl=f60e35b4e3744f4a3834ceb5f2677fdb7bb24dd6
https://cs.chromium.org/chromium/src/media/cdm/ppapi/ppapi_cdm_adapter.cc?l=126&rcl=f60e35b4e3744f4a3834ceb5f2677fdb7bb24dd6
I don't want to change the header, to make it easier to spot changed from upstream and stay in sync.
> None of these new values are used in this patch.
> Why have them here? (Guessing: Preparing for HDR?)
>
> Why not have the other values 3-15, etc.?
Yes, this is in preparation for updating the CDM again.
I don't want to take these out, as I don't want to change the header.
> This line (and others) tells me you may not have run clang-format. Intentional?
Yes, I want to keep the header in sync with upstream.
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Pushed by cpearce@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/69f177823866
Update content_decryption_module.h. r=gerald
https://hg.mozilla.org/integration/autoland/rev/e4d9cb334352
Add content_decryption_module_ext.h. r=gerald
Comment 10•8 years ago
|
||
This push busted the static analysis builds and some other stuff
https://treeherder.mozilla.org/#/jobs?repo=autoland&revision=e4d9cb334352a1209d84f603ece6684e41313ae9
Backed these out for build failures on linux like https://treeherder.mozilla.org/logviewer.html#?job_id=115093423&repo=autoland
https://hg.mozilla.org/integration/autoland/rev/dab774f84155e15c894032b05dd53619af50a6f7
Flags: needinfo?(cpearce)
Comment hidden (mozreview-request) |
Comment 13•8 years ago
|
||
mozreview-review |
Comment on attachment 8888222 [details]
Bug 1381720 - Reset symbol visibility when including content_decryption_module.h.
https://reviewboard.mozilla.org/r/159172/#review164576
This is wrong for two reasons:
- We have "automatic" wrappers like the one you created, so putting content_decryption_module.h in config/system-headers would have the same effect as your patch with only a one line change.
- The error doesn't actually entirely make sense, and clang is being misleading. The actual problem is that the forward declarations at the beginning of content_decryption_module.h are inheriting the visibility from gcc_hidden.h because they're just in the form `class Foo`, while the full declarations are `class CDM_CLASS_API Foo` and thus get the visibility from CDM_CLASS_API. That is, the following patch fixes it:
--- a/dom/media/gmp/widevine-adapter/content_decryption_module.h
+++ b/dom/media/gmp/widevine-adapter/content_decryption_module.h
@@ -73,12 +73,12 @@ CDM_API const char* GetCdmVersion();
namespace cdm {
-class AudioFrames;
-class DecryptedBlock;
-class VideoFrame;
+class CDM_CLASS_API AudioFrames;
+class CDM_CLASS_API DecryptedBlock;
+class CDM_CLASS_API VideoFrame;
-class Host_8;
-class Host_9;
+class CDM_CLASS_API Host_8;
+class CDM_CLASS_API Host_9;
enum Status {
kSuccess = 0,
Attachment #8888222 -
Flags: review?(mh+mozilla) → review-
Comment 15•8 years ago
|
||
FWIW, I just filed https://bugs.llvm.org/show_bug.cgi?id=33871
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Assignee | ||
Updated•8 years ago
|
Attachment #8888222 -
Attachment is obsolete: true
Assignee | ||
Comment 18•8 years ago
|
||
Landed with Mike's fix of ensuring predeclarations of classes also have CDM_CLASS_API. Will try to get that upstreamed...
Comment 19•8 years ago
|
||
Pushed by cpearce@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/c89f2a6edabd
Update content_decryption_module.h. r=gerald
https://hg.mozilla.org/integration/autoland/rev/0482b58c7343
Add content_decryption_module_ext.h. r=gerald
![]() |
||
Comment 20•8 years ago
|
||
bugherder |
https://hg.mozilla.org/mozilla-central/rev/c89f2a6edabd
https://hg.mozilla.org/mozilla-central/rev/0482b58c7343
Status: NEW → RESOLVED
Closed: 8 years ago
status-firefox56:
--- → fixed
Resolution: --- → FIXED
Target Milestone: --- → mozilla56
You need to log in
before you can comment on or make changes to this bug.
Description
•