Commit Graph

49 Commits

Author SHA1 Message Date
Jeff Tinker
acb47e0f9a Move OEMCrypto_Initialize earlier
Some OEMCrypto calls are happening before OEMCrypto_Initialize.
This change moves initialization earlier so it occurs before
any other calls to OEMCrypto.

bug: 10582250
Change-Id: Ic8992e8f0738dbfeb10074a4e1543bb9931a49d5
2013-10-28 15:53:52 -07:00
Edwin Wong
c49fe08576 Fixes GTS crash on Nexus 10.
When the video packets are clear, they are being
combined into a full frame between MediaExtractor or
DecryptCallback (where packets are never > 64k) and
MediaCrypto/DecryptVideo (where we are seeing clear
packets > 64k).

The max block size to be passed to DecryptVideo is
specified as 64K, handling of packets larger than 64K
is undefined and OEM implementation-dependent. In the
Nexus 10 case, it generates a SEG. fault.

Solution:
Add mClearSizes vector to keep track of each clear
packet size for android_media_MediaExtractor_getSampleCryptoInfo()
to process.

In android_media_MediaExtractor_getSampleCryptoInfo(), if it
does not see kKeyEncryptedSizes meta data, it will not
process the clear vector that contains the actual packet
sizes. Add a kKeyEncryptedSizes meta data that contains a zero
length size packet to trick the JNI code to process the
clear packets.

related-to-bug: 9261447

Change-Id: Ib0b655a95e099856babaf649f4a95fc7f9c17d41
2013-06-18 17:26:06 -07:00
John "Juce" Bruce
e8cad9485c Cannot Rewind WVM in MediaCodec Mode
The solution previously checked in as 2e0e3 is re-introduced here. However,
the MediaCodec-compatible heuristic is not used unless WVM is in Crypto Plugin
(i.e. Media Codec) mode.

To repeat from last time: The problem here is that WVM cannot independently
seek the audio and video read heads, but the API assumes it can. WVM does the
right thing for AwesomePlayer-based playback (essentially ignoring audio
seeks) but the wrong thing for MediaCodec-based playback. For MediaCodec
mode, we should respect the first seek we get for a given destination and
ignore the second.

In this part, the new heuristic is reintroduced, but the old heuristic is
maintained for use in non-Crypto Plugin mode.

Bug: 6793514
Change-Id: I7ced2bf20af117a57eec27490b0920d906a8a684
2012-10-15 14:22:37 -07:00
Jeff Tinker
71422e7a2a Merge "[WVDRM] Fix for stuttering on low bandwidth" into jb-mr1-dev 2012-10-02 01:26:13 -07:00
Jeff Tinker
54993c50e9 [WVDRM] Fix for stuttering on low bandwidth
Reintroduces the play/pause rebuffering logic we eliminated
in JB zero day to fix double spins and slow startup - but
activates that logic only based on a comparison of the
current bandwidth measurement and the lowest bitrate track
in the movie.

Needs to be submitted with related changes in /frameworks/av

bug: 7230071
Change-Id: Ib3859a961bd3901a9c4df01eeab2b8b75f49aefe
2012-10-01 15:17:07 -07:00
Edwin Wong
ca21c93f66 Revert "When Running in MediaCodec Mode, Widevine Freezes If You Rewind"
This reverts commit 2e0e32f9f7

Change-Id: I1362839633bca4260d83f470a780d93b8de431ca

related-to-bug: 7216099
related-to-bug: 7223566
2012-09-28 17:47:37 -07:00
John "Juce" Bruce
2e0e32f9f7 When Running in MediaCodec Mode, Widevine Freezes If You Rewind
There was a subtle interaction between Widevine's libraries and MediaCodec
mode.  Widevine's code assumed (erroneously) that video seeks would always
happen before audio seeks, and because we can't seek audio and video
independently from each other, we would ignore audio seeks but respect video
seeks.  This led to a problem since MediaCodec mode calls seeks in arbitrary
order.

Fix is to always respect the first request we get to seek and ignore the
second.

Bug: 6793514
Change-Id: Ic9ec60e0e0f606c7a0de6283dd4c30318eebdbad
2012-09-17 15:54:42 -07:00
Edwin Wong
d72b67cdeb Add getError and setError to propagate error code from WVMMediaExtractor up to player.
Error code from the plugin is not propagated from WVMExtractorImpl.cpp to the MediaPlayer.
The two APIs addresses this issue and provide a path for the player to retrieve the last error.

Change-Id: I60040eaf2d396379eecca46bfe333c44a39c35ec
related-to-bug: 7073630
2012-09-11 17:38:57 -07:00
Jeffrey Tinker
415ce6714a Merge "Send current bandwidth info event when buffering occurs" into jb-mr1-dev 2012-08-23 17:24:37 -07:00
Jeffrey Tinker
326dde3b28 Send current bandwidth info event when buffering occurs
There is a dependent change in frameworks/av

Change-Id: Ic189654486936a501a1b45c5acb442753303d362
related-to-bug: 5883234
2012-08-23 02:01:21 -07:00
Jeffrey Tinker
14f0deafac Configure the Widevine cache buffer size via a property
The property ro.com.widevine.cachesize may be set on a device to override the
default stream buffer cache size.

related-to-bug: 6819880

Change-Id: I27da154e38289c5d1f5f2f5f424202253d0721cc
2012-08-22 09:37:36 -07:00
Edwin Wong
e9f5431e78 Revert Widevine 6.0.0 -> 4.5.0 libraries
Includes Widevine libraries Version 4.5.0.7809

Also fixed samplePlayer's MediaCodec mode not running and
WVDrmInfoRequestStatusKey returning incorrect value.

Change-Id: Ibcc6d313790670a908ada93be80d6bf55a67b4ed
related-to-bug: 6929628
related-to-bug: 6833718
related-to-bug: 6889322
2012-08-03 13:33:58 -07:00
Jeff Tinker
2c8bb4721b am d734bc25: Increase Widevine stream buffer size from 10MB to 16MB for Q
* commit 'd734bc25b01b5df40b026e658a0053cc63b8bcbd':
  Increase Widevine stream buffer size from 10MB to 16MB for Q
2012-07-13 13:40:42 -07:00
Jeff Tinker
d734bc25b0 Increase Widevine stream buffer size from 10MB to 16MB for Q
Provide better support for 1080p video streaming.

Change-Id: I3d17f7bdc631ee82b9062445dca8ebd42eaf8d8a
related-to-bug: 6818319
2012-07-13 10:20:24 -07:00
Jeff Tinker
e01879128b am 1024b041: Part of fix for double spins & faster startup
* commit '1024b041e824bb6eb232971fc4a2984d63f7e079':
  Part of fix for double spins & faster startup
2012-06-01 11:25:55 -07:00
Jeff Tinker
1024b041e8 Part of fix for double spins & faster startup
This change alters the way that the media player
interacts with the Widevine adaptive streaming buffer
logic.  It eliminates the reliance on cached buffer
duration to determine pause/play states and instead
only generates buffering events when the widevine
library is not producing data (i.e. when it is
buffering).  This eliminates unnecessary pause and
rebuffer cycles, reducing startup time and the
frequency and duration of spinners.

Multi-repo commit, depends on related changes in frameworks/av

Change-Id: I5b71f954268fbd390eed7f27db98a1bb470d5cfb
related-to-bug:6503294
related-to-bug:6463780
2012-05-31 23:26:14 -07:00
Fred Gylys-Colwell
5b88678ad7 am b83e7ca1: Merge "Fix pause at end of movie." into jb-dev
* commit 'b83e7ca14ab7241c1bbfb50dd6d97edf160f2b74':
  Fix pause at end of movie.
2012-05-31 16:38:21 -07:00
Fred Gylys-Colwell
0b7d0f3fe3 Fix pause at end of movie.
The function WVMExtractorImpl::getCachedDurationUs returns the cached buffer
size in microseconds, and sets a status to ERROR_END_OF_STREAM at the end of
the movie.  The AwesomePlayer will pause if the cache is too small and the
status is not EOS.  In bug 6277231, the player would pause just before the EOS
marker would have been seen by the Widevine library.

This change checks the current play time against the total movie duration.  If
there is less than 10 seconds left in the movie, the EOS flag is set.

related-to-bug: 6277231

Change-Id: I8dbf60c82c41df485185f85e72452aab0a6a9686
2012-05-31 16:01:42 -07:00
Jeff Tinker
5658b8dc13 resolved conflicts for merge of 98c35aa4 to master
Change-Id: I32de004b575729f9b1852517ad5df71395e0ae69
2012-05-18 05:17:44 -07:00
Jeff Tinker
e9c40a625c Fix native fault in WVMMediaSource::DecryptCallback
This change resolves a lifetime issue between the media extractor
and media sources.  The extractor was being passed as a context
object to a callout in the WV libs.  In some cases, a pointer to
the extractor would be delivered to the callout after the extractor
had been released.  This change assigns the responsibility of the
lifetime of the context object to the media source, to ensure that
a ref is always held on the context object during the lifetime of
the media source.

Change-Id: Ic7a57a1c8496a4798fe590ec356b8a19a4f69967
related-to-bug: 6502322
2012-05-16 19:08:25 -07:00
Jeff Tinker
35064be9c6 Revert Widevine 6.0.0 -> 4.5.0 libraries
DO NOT MERGE

Source and library changes to roll back to 4.5.0, including
maintaining the DRM HAL support.

Includes Widevine libraries 4.5.0-7111

Change-Id: I420c6990748e95ad7516ecb2397ebf7707a157f4
related-to-bug: 6492434
2012-05-14 15:06:13 -07:00
Jeff Tinker
ec2d703970 Fix ERROR_IO due to timeout on video stream and corrupt samples
This change applies to the wv extractor when used in conjunction
with new MediaCodec model.

Change-Id: I999990ff41d35641110a58472f1cdb8c4c7db02e
related-to-bug: 5986621
2012-05-01 13:10:42 -07:00
Jeff Tinker
a9f82e979f Add CryptoPluginMode to WV extractor
Allows the WV extractor to run in a mode that is compatible with
the DRM CryptoPlugin HAL API, where decryption is deferred
until the encrypted data is sent through the CryptoPlugin to
the codec.

This patch does:
 (1) Adds a flag mCryptoPluginMode that controls this behavior
     [Note: need framework support to enable/disable this]
 (2) Accumulates information in track metadata to delineate
     crypto unit boundaries for the CryptoPlugin

related-to-bug: 5986621

Change-Id: I3318d5cde38c7b02a7bdb56aca9aece852c9781c
2012-04-26 14:50:28 -07:00
Jeff Tinker
462dc030f8 Upgrade of Widevine libraries from 4.5.0 to 6.0.0
Upload for Dave Parsons

6.0.0 Widevine libraries contain the features required
to support multiple audio tracks and subtitles.  This
is establishing the baseline for those features.

Change-Id: If12074bb2e4364c8107339e2f69453c40698e91f
related-to-bug: 5880566
2012-04-05 15:49:32 -07:00
Jeff Tinker
efd3647691 /vendor/widevine portion of removing YouTube-specific error codes
Multi-repository change. See also update to MediaErrors.h in
a separate CL.

related-to-bug: 5883949

Change-Id: I505486a86a87b690aa13f813f4b88edd386382ce
2012-04-03 16:09:05 -07:00
Jeff Tinker
835420c31d Fix videos app bandwidth accounting for streaming over 4G
Attribute traffic on socket descriptors to UID of videos app

Multi-repository commit, see also changes in frameworks/base/media.

Includes Widevine library version 4.5.0.6153

Change-Id: I5ddf1b7b758edc82d48a788fc30616d90cab4bd0
related-to-bug: 5434244
2012-03-08 15:08:47 -08:00
Jeff Tinker
c3949b1967 Changed license headers from AOSP to Google copyright
Change-Id: I3587e290cf49755e06354118fbf877d189508ce8
related-to-bug: 5833045
2012-01-24 15:27:50 -08:00
James Dong
9fd21a7798 Implement WV side of the separation of sniffing and decrypt session initialization.
Further optimization may be done to further speed up a drm content playback session

related-to-bug: 5725548

Change-Id: Ife69deaf5d2d70bba812fe1a48d9268d8e9530f7
2012-01-12 16:12:39 -08:00
James Dong
444dc2a845 Revert "Fix ANRs due to Widevine DRM plugin sniff taking too long."
We need to do this because with this patch, SHA/MD5 module may get stuck and cause power consumption regression.

This reverts commit 95d4dc7776.

related-to-bug: 5739618
2011-12-14 11:05:53 -08:00
Jeff Tinker
95d4dc7776 Fix ANRs due to Widevine DRM plugin sniff taking too long.
Add a Widevine-specific format sniffer to avoid having to
refetch data from the remote server.

related-to-bug: 5725548

Change-Id: I622e39930f8d243111e4731557b0df17c4e2651d
2011-12-07 21:09:04 -08:00
Jeffrey Tinker
f5fa8f2017 Changes for calling the level 1 decrypt callout
Change-Id: Iccf76b59a64491952ee11ee2ed1a0e707a529f88
2011-10-07 19:25:20 -07:00
Jeff Tinker
ba335957e9 Widevine extractor changes to support secure media buffer playback.
Supports either secure or insecure buffer configurations, depending
on the build-time flag REQUIRE_SECURE_BUFFERS.

Change-Id: I5b8150315eced4ed9be656b73d91485a6216819d
2011-06-30 15:47:43 -07:00
Jeffrey Tinker
40d160cc3f am 66d9ff5f: Fix for 4198445 HC - Support for Widevine Live Streaming (adaptive)
* commit '66d9ff5fb5f99ba77e02a4719e4c65aec2aa8c4a':
  Fix for 4198445 HC - Support for Widevine Live Streaming (adaptive)
2011-06-02 13:58:08 -07:00
Jeffrey Tinker
66d9ff5fb5 Fix for 4198445 HC - Support for Widevine Live Streaming (adaptive)
Change-Id: Id3a8a997fb1186c6af6e94f2fc2d4788238a0452
2011-05-26 11:25:05 -07:00
Jeffrey Tinker
fda2f64112 am 8c5545ef: Merge "Fix for b/4198446 HC - Support for Widevine Adaptive VOD Fix for b/4075745 libWVStreamControlAPI crashes when dlopened() and dlclosed() Added error logging to diagnose problems such as b/4430078 Playback of newly rented movie fails with "licens
* commit '8c5545ef76f39094b016986c7deec02df682356d':
  Fix for b/4198446 HC - Support for Widevine Adaptive VOD Fix for b/4075745 libWVStreamControlAPI crashes when dlopened() and dlclosed() Added error logging to diagnose problems such as b/4430078 Playback of newly rented     movie fails with "license expired"
2011-05-24 12:57:28 -07:00
Jeffrey Tinker
8c5545ef76 Merge "Fix for b/4198446 HC - Support for Widevine Adaptive VOD Fix for b/4075745 libWVStreamControlAPI crashes when dlopened() and dlclosed() Added error logging to diagnose problems such as b/4430078 Playback of newly rented movie fails with "license expired"" into honeycomb-mr2 2011-05-23 18:12:05 -07:00
Jeffrey Tinker
07b60098b3 Fix for b/4198446 HC - Support for Widevine Adaptive VOD
Fix for b/4075745 libWVStreamControlAPI crashes when dlopened() and dlclosed()
Added error logging to diagnose problems such as b/4430078 Playback of newly rented
    movie fails with "license expired"

Includes Widevine library build Version 4.5.0.3682

Change-Id: I5708bb3fb92f05a3dd1768620157a795ccebd57a
2011-05-23 18:05:39 -07:00
Jeffrey Tinker
18b17056c9 am 3d18aaa2: Merge "Fix for b/4380963 Log spam from widevine drm on I/O error WVMFileSource: mDataSource-readAt returned error -1004" into honeycomb-mr2
* commit '3d18aaa20712642aecb21c2df818b194ab43abe1':
  Fix for b/4380963 Log spam from widevine drm on I/O error WVMFileSource: mDataSource-readAt returned error -1004
2011-05-19 17:21:24 -07:00
Jeffrey Tinker
c89fe73868 Fix for b/4380963 Log spam from widevine drm on I/O error WVMFileSource: mDataSource-readAt returned error -1004
Change-Id: I001d496bc59aa6465c20f85dfade364f4cca33de
2011-05-17 21:27:45 -07:00
Jeffrey Tinker
cc09fa33d4 am 88aa52ff: Merge "Implement new heartbeat error codes" into honeycomb-mr1
* commit '88aa52ffdfbb40fcd29059011259a3ba76e51e1d':
  Implement new heartbeat error codes
2011-04-27 12:28:57 -07:00
Jeffrey Tinker
a6758ad20e Implement new heartbeat error codes
Related to defect b/4322415

Change-Id: I2bd41e70dcb64a03a94b3770732149a6f2489a8e
2011-04-27 11:14:13 -07:00
Jeffrey Tinker
767717376d am 18617b93: fix for b/4126624 Widevine DRM client not sending heartbeats
* commit '18617b93c67b87bd4b8a6eb5e5d0c6e23fe82d32':
  fix for b/4126624 Widevine DRM client not sending heartbeats
2011-03-25 14:54:18 -07:00
Jeffrey Tinker
18617b93c6 fix for b/4126624 Widevine DRM client not sending heartbeats
Added some missing parameters to the heartbeat message, found in end-to-end
testing with youtube.  Also enabled heartbeats on client builds.

Change-Id: I445fb0cb168e63a041f0ecf828eaad493143a648
2011-03-25 14:02:08 -07:00
Jeffrey Tinker
a39b73cec3 am ba5fa0ef: Fixes for b/4149416:expired license refresh, b/4126624:heartbeats, b/4171055: inconsistent license modes Also includes b/3500025: A/V resync issues
* commit 'ba5fa0ef570f6ca3524f8158a23371528930f0fc':
  Fixes for b/4149416:expired license refresh, b/4126624:heartbeats, b/4171055: inconsistent license modes Also includes b/3500025: A/V resync issues
2011-03-25 10:13:54 -07:00
Jeffrey Tinker
ba5fa0ef57 Fixes for b/4149416:expired license refresh, b/4126624:heartbeats, b/4171055: inconsistent license modes
Also includes b/3500025: A/V resync issues

Change-Id: Ib885d7219d211b188f38e9427bdaecd10fbd7329
2011-03-25 07:20:49 -07:00
Jeffrey Tinker
2d1694854c am 3a1e0f37: Integration with moto secure keybox storage and add obfuscation of security-related symbols (3513413, 4083757). Also 3481645 - log spam and 3302187 - error handling
* commit '3a1e0f3768f8c586700c00ac3b6a2a5f00cb32b5':
  Integration with moto secure keybox storage and add obfuscation of security-related symbols (3513413, 4083757).  Also 3481645 -  log spam and 3302187 - error handling
2011-03-14 17:45:50 -07:00
Jeffrey Tinker
3a1e0f3768 Integration with moto secure keybox storage and add obfuscation of security-related symbols (3513413, 4083757). Also 3481645 - log spam and 3302187 - error handling
Change-Id: Ic11ed7ad57717e88b6f0f2991d8bbb9e1251d546
2011-03-11 14:10:43 -08:00
Gloria Wang
14761c80a9 Fix for bug 3477330
This patch fixs a crash bug caused by using a NULL DecryptHandle pointer in the DRM Framework.
Fix by using sp<DecryptHandle> instead.

Change-Id: I1355d4719857ab64ad6cd12803fcf19e45bb50a0
2011-03-10 14:32:11 -08:00
Gloria Wang
0f9922ff77 Move all Widevine code which have dependency on vendor modules from framework/base to vendor/widevine
Change-Id: I2b43e90c279391436f1bbb18ebd64961bec4f9ee
2011-02-18 22:52:12 -08:00