Граф коммитов

88 Коммитов

Автор SHA1 Сообщение Дата
Sylvestre Ledru 804b8b8883 Bug 1204606 - Reformat of dom/media r=jya
# skip-blame

Differential Revision: https://phabricator.services.mozilla.com/D12251

--HG--
extra : moz-landing-system : lando
2018-11-19 13:25:37 +00:00
Bryce Van Dyk 413ba3feef Bug 1487811 - P1: Update Widevine headers and C++ code to prepare for CDM interface 10 support. r=cpearce
Update content_decryption_module.h and other Widevine headers. This removes the
CDM8 interface and adds in the CDM10 and CDM11 interfaces. As such this patch
removes references to CDM8 from the code and adds some of the foundations for
supporting CDM10. Most of the CDM10 code will be implemented in another bug, but
there are a number of cases where it was straight forward to shuffle CDM8+9 code
-> CDM9+10, rather than deleting it and replacing it later.

Differential Revision: https://phabricator.services.mozilla.com/D5628

--HG--
extra : moz-landing-system : lando
2018-09-13 14:49:10 +00:00
Sylvestre Ledru 4591d82b23 Bug 1394734 - Replace CONFIG['CLANG*'] by CONFIG['CC_TYPE'] r=glandium
MozReview-Commit-ID: HbF5oT5HW6f

--HG--
extra : rebase_source : eca479b6ae4bff7f600d1cdb39e11ac2057e4e79
2017-12-07 22:09:38 +01:00
James Cheng cc08a7b5c3 Bug 1415466 - Part1 - Update content_decryption_module.h, there are no changes in the rest of headers. r=cpearce
MozReview-Commit-ID: HQUpqokQ3Eu

--HG--
extra : rebase_source : 80a0ac7adcd5a9d14fe8d9fe9f64e33eb5d286e1
2017-11-15 10:33:28 +08:00
James Cheng 64ae68efce Bug 1403830 - [Part2] Remove unnecessary code and include header using gmp-platform.h. r=cpearce
MozReview-Commit-ID: huebQ9Ihs8

--HG--
extra : rebase_source : ff8cd329bf19f4158ac435f644c4c9dae44d890c
2017-09-28 16:18:16 +08:00
James Cheng 8f80fefaf0 Bug 1403830 - [Part1] Remove gmp-decryption.h and its related code. r=cpearce
MozReview-Commit-ID: G8RHADhfd3c

--HG--
extra : rebase_source : 125098fb689e5d031f042c9b3976a8163f41ff51
2017-09-28 15:50:28 +08:00
James Cheng 7789212fcf Bug 1399754 - [Part2] Fix wrong format string. r=cpearce
MozReview-Commit-ID: 5oXE0UvGeFt

--HG--
extra : rebase_source : 92ecf466b49f4062a85f058b802c37887cabf23a
2017-09-14 17:18:00 +08:00
James Cheng 1d71cf11e9 Bug 1399754 - [Part1] Replace CDM_LOG with GMP_LOG. r=cpearce
MozReview-Commit-ID: IG3qsRGW42E

--HG--
extra : rebase_source : 0b0cd4a394a5c15ed8fa8b631c149c962297e55e
2017-09-14 16:00:58 +08:00
James Cheng daea8f027c Bug 1395468 - [Part3] Remove WidevineAdapter and its related classes. r=cpearce
We now only use the Chromium CDM interface, so there is no need to check isWidevine.
We don't use WidevineAdapter anymore so remove the related check and unused classes.

MozReview-Commit-ID: 3y1lH3OMhwL

--HG--
extra : rebase_source : 955395f3bbbd523236e9ac2480ef21093a281084
2017-08-29 17:42:25 +08:00
Kartikaya Gupta ba4b3b9101 Bug 1384233 - Remove SizePrintfMacros.h. r=froydnj
We have a minimum requirement of VS 2015 for Windows builds, which supports
the z length modifier for format specifiers. So we don't need SizePrintfMacros.h
any more, and can just use %zu and friends directly everywhere.

MozReview-Commit-ID: 6s78RvPFMzv

--HG--
extra : rebase_source : 009ea39eb4dac1c927aa03e4f97d8ab673de8a0e
2017-07-26 16:03:57 -04:00
Chris Pearce 9b79f3e2c6 Bug 1381720 - Add content_decryption_module_ext.h. r=gerald
Updates to Chromium revision 6e4c388c0117fe408b66fbede91081fb1018c5fe.

Adds Verified Media Pipeline function definitions.

MozReview-Commit-ID: 2H8mMNacQqR

--HG--
extra : rebase_source : d544d6a0c6854ccc29da6ddcc11b4efc8f621036
2017-05-29 17:14:52 +12:00
Chris Pearce c4af620223 Bug 1381720 - Update content_decryption_module.h. r=gerald
Update to chromium revision 6e4c388c0117fe408b66fbede91081fb1018c5fe.

Includes cdm::ContentDecryptionModule_9 and cdm::Host_9 definitions,
HDCP definitions, and 10 and 12 bit image format definitions.

MozReview-Commit-ID: bYH3OBSzuT

--HG--
extra : rebase_source : cfc291b3452c2154ecd1ca16a2ece0a5a42f0b5e
2017-05-29 17:14:26 +12:00
Wes Kocher b1c83de1b7 Backed out 2 changesets (bug 1381720) for linux build failures in content_decryption_module.h a=backout
Backed out changeset e4d9cb334352 (bug 1381720)
Backed out changeset 69f177823866 (bug 1381720)

MozReview-Commit-ID: DctOanJkHh7
2017-07-17 23:21:49 -07:00
Chris Pearce 97c974f065 Bug 1381720 - Add content_decryption_module_ext.h. r=gerald
Updates to Chromium revision 6e4c388c0117fe408b66fbede91081fb1018c5fe.

Adds Verified Media Pipeline function definitions.

MozReview-Commit-ID: 2H8mMNacQqR

--HG--
extra : rebase_source : dc91151c5ffe94f59346b9f4cbab587e6c0701a3
2017-05-29 17:14:52 +12:00
Chris Pearce 9901d75b55 Bug 1381720 - Update content_decryption_module.h. r=gerald
Update to chromium revision 6e4c388c0117fe408b66fbede91081fb1018c5fe.

Includes cdm::ContentDecryptionModule_9 and cdm::Host_9 definitions,
HDCP definitions, and 10 and 12 bit image format definitions.

MozReview-Commit-ID: bYH3OBSzuT

--HG--
extra : rebase_source : d062d233c9a2b59aa5ae5c6e0584ed13b7c83e6e
2017-05-29 17:14:26 +12:00
Chris Pearce 5734680cc7 Bug 1375708 - Use base::Time() instead of time(0) in WidevineDecryptor::GetCurrentWallTime(). r=gerald
On Linux some implementations of time(0) appear to be suffering from integer
overflow and giving us the wrong dates. This causes the time we expose to the
CDM to be wrong, and so licenses passed to the CDM are failing to authenticate,
and Netflix is thus broken on some Linux systems.

This is only happening in Firefox 54 and earlier, as in those versions we use
the WidevineDecryptor to talk to the CDM. In 55 (in beta) and later we use the
PChromiumCDM protocol to talk to the CDM. This doesn't use time(0) to get a
time for the CDM, so it's immune to the problem here.

So this patch makes the GetCurrentWallTime() implementation in
WidevineDecryptor match the code currently being used on Nightly and Beta in
the ChromiumCDMChild::GetCurrentWallTime() function.

Since we use the PChromiumCDM protocol to talk to the CDM on Nightly and Beta
by default, the WidevineDecryptor isn't actually being used on Nightly and
Beta. So this patch will only cause a behaviour change in Release, which still
uses the old backend. However it will make Release run the same code that we're
running in Nightly and Beta, so it should be safe to uplift to Release.

MozReview-Commit-ID: J58iDyinyQG

--HG--
extra : rebase_source : dcdf4a846f7b007526aa626db24598942f13f01d
2017-06-23 16:02:14 +12:00
Gerald Squelart 848c8517bc Bug 1349604 - Check CDM black-frame size computations. r=cpearce
MozReview-Commit-ID: BnnQn5PZPaB
2017-03-31 10:20:32 +11:00
Chris Pearce ce7bb69227 Bug 1358373 - Handle underestimating how many shmems the CDM needs to return decoded video frames to Gecko. r=gerald
The CDM process can't allocate shmems itself because it's sandboxed, so we
pre-allocate shmems in the content process and send them to the GMP process for
the CDM to use. Some sites seem to have encoded their content in such a way as
to cause the CDM to allocate and hang onto more frames than we pre-allocate; so
we run out of shmems in the GMP process, and the CDM can't allocate further
buffers to return output, and we fail.

So change the ChromiumCDMChild to allocate non-shmem-backed buffers if it runs
out of shmems, and return the result to the content process as an nsTArray.
Upon receiving that, the parent will send an extra shmem to the child, to
hopefully avoid the slow path again.

Also increase media.eme.chromium-api.video-shmems to 4, so that we're less
likely to hit this slow path in the wild. I've seen that Lightbox.co.nz and
Microsoft's EME test-drive require 4 shmems.

MozReview-Commit-ID: ISQYDkTj5uY

--HG--
extra : rebase_source : 92870f1adc7ae68e58b15443e4223012bdf0e39a
2017-04-26 15:46:09 +12:00
Iris Hsiao c43c229375 Backed out changeset 0b8bf5cb743f (bug 1358373) for build bustage. a=backout
CLOSED TREE

--HG--
extra : amend_source : f6fd0c93b8b1ff9cc111cc4bc7776dd8e2a383d0
2017-04-27 10:10:47 +08:00
Chris Pearce ecfe3c34c4 Bug 1358373 - Handle underestimating how many shmems the CDM needs to return decoded video frames to Gecko. r=gerald
The CDM process can't allocate shmems itself because it's sandboxed, so we
pre-allocate shmems in the content process and send them to the GMP process for
the CDM to use. Some sites seem to have encoded their content in such a way as
to cause the CDM to allocate and hang onto more frames than we pre-allocate; so
we run out of shmems in the GMP process, and the CDM can't allocate further
buffers to return output, and we fail.

So change the ChromiumCDMChild to allocate non-shmem-backed buffers if it runs
out of shmems, and return the result to the content process as an nsTArray.
Upon receiving that, the parent will send an extra shmem to the child, to
hopefully avoid the slow path again.

Also increase media.eme.chromium-api.video-shmems to 4, so that we're less
likely to hit this slow path in the wild. I've seen that Lightbox.co.nz and
Microsoft's EME test-drive require 4 shmems.

MozReview-Commit-ID: ISQYDkTj5uY

--HG--
extra : rebase_source : 4beba0212411a0f5867feb506bbf732f5a934fa9
2017-04-26 15:46:09 +12:00
Chris Pearce cfe7c116ce Bug 1315850 - Hook up CDM storage. r=gerald
MozReview-Commit-ID: 9gHcMZvmMfg

--HG--
extra : rebase_source : 186f35455264aaa144fd7b1887b8ca2476ac03b2
2017-03-22 16:30:54 +13:00
Chris Pearce 6f73601a0b Bug 1315850 - Implement video decoding through CDM. r=jya
At this stage, I store video frames in memory in nsTArrays rather than in
shmems just so we can get this working. Once this is working, I'll follow up
with patches to switch to storing all large buffer traffic between the CDM and
other processes in shmems.

I'm not planning on preffing this new CDM path on until that's in place.

MozReview-Commit-ID: LSTb42msWQS

--HG--
extra : rebase_source : b7f162515a1a32b2c344c11d0fa5c7004cec2e15
2017-03-09 11:32:15 +13:00
Chris Pearce a6d74267e5 Bug 1315850 - Add ChromiumAdapter which we can use instead of WidevineAdapter. r=gerald
We currently use an adapter object to adapt plugins that don't conform to the
GMP interface to the GMP interface.

We use the WidevineAdapter to talk to the CDM from the two GMP IPDL protocols.
We will be using a single protocol to talk to the Chromium CDM, so we need a
new adapter which handles that.

MozReview-Commit-ID: F7hnZ9oo9mJ

--HG--
rename : dom/media/gmp/widevine-adapter/WidevineAdapter.cpp => dom/media/gmp/ChromiumCDMAdapter.cpp
rename : dom/media/gmp/widevine-adapter/WidevineAdapter.h => dom/media/gmp/ChromiumCDMAdapter.h
extra : rebase_source : 7c08edea3c11d41eb3ecfa9c7a8ef65cf3b8ddb0
2017-03-13 16:59:34 +13:00
Chris Pearce af3f34b472 Bug 1345341 - Ensure Widevine expiration time of 0 means 'never expire'. r=jwwang
MozReview-Commit-ID: DtJnwDo7KZq

--HG--
extra : rebase_source : de55240a54c28046eda20530f610248ba2a02161
2017-03-08 17:00:07 +13:00
Chris Pearce 0310952278 Bug 1343140 - Output a black frame if Widevine CDM refuses to decode due to losing a key. r=gerald
MozReview-Commit-ID: JQon5f87FSF
2017-03-03 14:10:28 +13:00
Sebastian Hengst 945e8d94fc Backed out changeset bb2103358f84 (bug 1343140) for build bustage. r=backout on a CLOSED TREE 2017-03-06 19:34:25 +01:00
Chris Pearce d28c90112d Bug 1343140 - Output a black frame if Widevine CDM refuses to decode due to losing a key. r=gerald
MozReview-Commit-ID: JQon5f87FSF

--HG--
extra : rebase_source : be26f24968cee69ded5f7ceb8f1a99e25032afe5
2017-03-03 14:10:28 +13:00
Chris Pearce 756932ea4e Bug 1341894 - Correct encryption subsamples in AVCC -> AnnexB conversion. r=jya
This menas we can have GMPVideoDecoder's AVCC -> AnnexB conversion done by the H264Converter, and
simplify the code in WidevineVideoDecoder.

MozReview-Commit-ID: 3HT5VXth6LL

--HG--
extra : rebase_source : b840489edafa5dc981ba44f722d92083a40e34cd
2017-02-23 11:00:28 +13:00
Chris Pearce 6425456721 Bug 1342822 - Backed out changeset 70bc7d4e8512 (bug 1338924). r=gerald
MozReview-Commit-ID: DXGgfMMghOD

--HG--
extra : rebase_source : e5d329122754dfab6750ff2aedadc1f65a52f0f8
2017-02-27 13:58:27 +13:00
Chris Pearce 892e18f12e Bug 1342822 - Backed out changeset a379d64f8496 (Bug 1338924 patch 3). r=gerald
MozReview-Commit-ID: 4aFx52mwpQ6

--HG--
extra : rebase_source : 45cfb3aba27e93d49c5ebf64510d0143f1c57654
2017-02-27 13:57:39 +13:00
Chris Pearce 83077824b8 Bug 1341497 - Move WidevineBuffer and WidevineDecryptedBlock into WidevineUtils. r=gerald
This makes it easier to reuse in the ChromiumCDM code.

Also add an ExtractBuffer() method, which allows us to Move() the contained nsTArray
out without needing to copy the data.

MozReview-Commit-ID: 9suJSfXTVYy

--HG--
extra : rebase_source : 6eec99eb5329f3b8c3bb14d22459fee3bd95caf5
2017-02-22 15:55:38 +13:00
Iris Hsiao 97fb7c952a Backed out changeset 5ec123aec8aa (bug 1341497) for bustage 2017-02-22 11:49:25 +08:00
Chris Pearce 994e1136fd Bug 1341497 - Move WidevineBuffer and WidevineDecryptedBlock into WidevineUtils. r=gerald
This makes it easier to reuse in the ChromiumCDM code.

Also add an ExtractBuffer() method, which allows us to Move() the contained nsTArray
out without needing to copy the data.

MozReview-Commit-ID: 9suJSfXTVYy

--HG--
extra : rebase_source : 89540b254249833cf8bb09792bb33cc402977d5a
2017-02-22 15:55:38 +13:00
Chris Pearce 7e95ac21ed Bug 1341135 - Rename CDM log macro from Log to CDM_LOG. r=gerald
This prevents the Log macro from colliding with the Log function on
IPC ParamTraits definitions.

MozReview-Commit-ID: Hd2v6ilbmGc

--HG--
extra : rebase_source : d26d495878706fe5a2009dd33d226cc71193be13
2017-02-21 13:07:10 +13:00
Tom Tromey 5f8f360823 Bug 1060419 - make log_print use Printf.h, r=froydnj
MozReview-Commit-ID: BIZ1GQEZ1vs

--HG--
extra : rebase_source : 2f1f0aa12493c44f352d9a7e8683e7bb72d2d75b
2016-12-15 20:16:31 -07:00
Jean-Yves Avenard 52e09e4b68 Bug 1340129: P1. Allow empty raw frames. r=gerald
MozReview-Commit-ID: AU0QrahHtYe

--HG--
extra : rebase_source : 34604298e01db1b7b481fc55c25cb5f23e806fa2
2017-02-16 23:41:44 +01:00
Sebastian Hengst ba05030db7 Backed out changeset 5cc18343abdd (bug 1339748) for failing test_eme_canvas_blocked.html on Linux x64 asan. r=backout 2017-02-16 00:57:07 +01:00
Chris Pearce ecbbbfda10 Bug 1339748 - Convert samples to AnnexB before passing to CDMs, rather than inside CDMs. r=jya
MozReview-Commit-ID: 6i3uXC8ily9

--HG--
extra : rebase_source : 119b6bb657e2ddb36844f2a60cb80dd5ff9b1769
2017-02-15 16:03:09 +13:00
Chris Pearce c5863900ee Bug 1338924 - Throttle decrypts to 2s of content per 1s of wall time. r=gerald
This ensures we don't trigger any of the CDMs in-built throuput
limiting protections.

MozReview-Commit-ID: EgNn8WpUZZg
2017-02-10 22:20:43 +13:00
Chris Pearce 4c05a6c492 Bug 1338924 - Pass duration of sample being decrypted to CDM. r=gerald
MozReview-Commit-ID: 3UujuYPpfJi
2017-02-14 11:29:32 +13:00
Jean-Yves Avenard 16bf821b42 Bug 1325707: P3. Fix coding style. r=gerald
Fixed coding style of files encountered in P1 and P2.

MozReview-Commit-ID: LApVu9K2oto

--HG--
extra : rebase_source : e3bb296baaec9df2011ff312fec2eda19dd125e6
2017-02-07 09:15:59 +01:00
Jean-Yves Avenard ec59353902 Bug 1325707: P2. Handle OOM conditions when creating MediaRawData object. r=gerald
MozReview-Commit-ID: HtkhrT36Kf4

--HG--
extra : rebase_source : febe0c4114d8d888b152db3f7b5331c0fb32f442
2017-02-07 09:03:36 +01:00
Chris Pearce 4757b59a5b Bug 1337159 - Use MOZ_LOG for WidevineAdapter logging. r=gerald
This works, at least on Windows, if the NSPR_LOG_FILE is set at a file
in the OS temp dir. This means we can turn on CDM logging in release
builds, in the sandboxed child process, without needing to recompile
to #define on logging.

This will make debugging issues with the CDM easier.

MozReview-Commit-ID: 6cAxMy4lv3T

--HG--
extra : rebase_source : eb75bba8e0dc38d1a0137cef28b7589ded43351a
2017-02-07 10:12:06 +13:00
Chris Pearce 302ca1dbee Bug 1332530 - Remove GMP enum storage names. r=gerald
Note: Only the Adobe GMP used enum storage, so not that it's unused we may
as well remove this.

MozReview-Commit-ID: JtmQ69eJzaI

--HG--
extra : rebase_source : 29929e680dc1692b957b34ce274c4944743768e8
2017-01-20 15:06:00 +13:00
Chris Pearce 6b15c34475 Bug 1332530 - Remove librlz and EME/GMP device binding code. r=gerald
MozReview-Commit-ID: FzJ220XlrJi

--HG--
extra : rebase_source : 0945a3b46bcc90de9b48f56da46090cb2f777411
2017-01-20 13:47:48 +13:00
Jay Harris 7c7fa081d8 Bug 1333979 - Adds a check in the WidevineVideoDecoder before shutting down r=cpearce
DeinitializeDecoder will now only be called if InitializeDecoder has been called first

MozReview-Commit-ID: 93WexomWp92

--HG--
extra : rebase_source : 96dfa5666041340d56fbfce7a46fb7f8f67181dc
2017-01-27 10:54:04 +13:00
Jay Harris 0536ef6a6e Bug 1318965 - Adds a dummy WidevineDecoder so the CDM doesn't crash if the Decryptor has been destroyed r=cpearce
MozReview-Commit-ID: D8tCJRKF1vn

--HG--
extra : rebase_source : ad40c4b48d6cf6ce03d4592048902f37c39718fd
extra : histedit_source : c2f3213c9582e88ffcc8d0af5948e9b194f9be4a
2017-01-17 14:10:11 +13:00
Jay Harris 1bcf5b83cb Bug 1318965 - Fixes some bugs in the Widevine logging code and improves existing logging r=cpearce
MozReview-Commit-ID: 6ov80Xwi8OR

--HG--
extra : rebase_source : 1975ebdf7a1020c7e178e181559bdc1d9f9456d5
extra : histedit_source : 09f5788602ac73e778f56874c732703a44325666
2017-01-17 14:03:25 +13:00
Jay Harris c723828bd0 Bug 1318965 - Fixes a bug in the WidevineAdapter wherein session load failures were not adapted correctly r=cpearce
MozReview-Commit-ID: 2ze4d8EuHr9

--HG--
extra : rebase_source : 366f8da20f5b511eafcdcd20113d04d268f6321b
extra : histedit_source : 50f128f838b277a4287358e42c91fa95c67bb2fd
2016-12-20 14:35:55 +13:00
Wes Kocher 07fd8cebf7 Backed out 3 changesets (bug 1318965) for frequent media test failures a=backout
Backed out changeset 3f756d8ee4cf (bug 1318965)
Backed out changeset 4bdf65d60c9e (bug 1318965)
Backed out changeset c1e2b6c14a7f (bug 1318965)

MozReview-Commit-ID: 6CPk5oS5AOw

--HG--
extra : source : babe3f8a0258fb592e17a590450de6ceb09460c3
2017-01-13 13:23:31 -08:00