Commit Graph

55 Commits

Author SHA1 Message Date
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
John "Juce" Bruce
c6c8b6f27b Widevine Delivers Frames "Much Too Late" On Startup
Because Widevine's libraries were not seeking to the start of playback, the
first bitrate track in the video was being selected rather than the most
bandwidth-appropriate.  For low-bandwidth connections, this could lead to a
"locked to group-of-pictures" scenario where Widevine quickly realizes that it
needs to change bitrates but cannot change until the next I-frame, which at the
current bandwidth will not arrive before it runs out of data.  The result is
frames being delivered late, leading to the "Much Too Late" message from
AwesomePlayer reported in the bug.

The solution is to start playback slightly differently, allowing us to use our
adaptive streaming logic to select the initial bitrate for the video.  By
specifying a start point at the beginning of the movie instead of just "now,"
we cause a seek internally, which allows us to adapt bitrates immediately at
the start of playback rather than after it has begun.  This is the common way
of starting playback on other Widevine platforms.  Android has been an
exception until now.

Bug: 6621556
Change-Id: Iaf98106f7f597ae3f0375129ac3a93aa3cb04a2c
2012-08-23 16:49:46 -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
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
b83e7ca14a Merge "Fix pause at end of movie." into jb-dev 2012-05-31 16:34:29 -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
James Dong
7a5da70046 am 0fb73729: Added some debugging log messages for tracking down ANR related issue.
* commit '0fb73729164f2d8fc294aa49888153b88944c312':
  Added some debugging log messages for tracking down ANR related issue.
2012-05-29 16:33:40 -07:00
James Dong
0fb7372916 Added some debugging log messages for tracking down ANR related issue.
Change-Id: I2d338b5e4efbc13acdb3ed8f592d405052ecad9d
related-to-bug: 6565826
2012-05-29 14:08:36 -07:00
Fred Gylys-Colwell
9cb8f2b91b am 382a5286: Merge "Fix HLS Live Playback with Widevine DRM." into jb-dev
* commit '382a5286b5c8ccfd6fe501ed5bd53cc8630b9de4':
  Fix HLS Live Playback with Widevine DRM.
2012-05-21 11:51:38 -07:00
Jeff Tinker
5658b8dc13 resolved conflicts for merge of 98c35aa4 to master
Change-Id: I32de004b575729f9b1852517ad5df71395e0ae69
2012-05-18 05:17:44 -07:00
Fred Gylys-Colwell
382a5286b5 Merge "Fix HLS Live Playback with Widevine DRM." into jb-dev 2012-05-16 20:29:08 -07:00
Fred Gylys-Colwell
ff793bcaf0 Fix HLS Live Playback with Widevine DRM.
In WVMExtractorImpl.cpp, a structure of type WVCallbacks was not initialized.
In version 4.5.0 of the Widevine library, this is just a struct (not a class)
so it does not have a constructor method.  This record was being set with
garbage default values and was causing problems setting up playback.  This may
have caused other stability issues after we reverted to 4.5.0.  In the future,
when we push forward to version 6.0 of the Widevine library, this change should
be removed.

In WVMediaSource.cpp, a flag was set to strip off the ATDS headers.  This was
redundent, and causing seg faults, for live stream.

related-to-bug: 6454710

Change-Id: I3edeb40c731021b2f31f639416188d4a1c002cc5
2012-05-16 20:12:28 -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
1eaccb6669 Fix intermittent native fault in Widevine
Change-Id: I19e0b19eb9e53ca19dea10a46cf286fb091d7542
related-to-bug: 6432496
2012-05-02 13:10:29 -07:00
Jeff Tinker
3397e72468 Fix offline license requests and error events
Corrected a regression in error event reporting and a
mismatch in asset paths during rights acquisition.

Also requires https://android-git.corp.google.com/g/#/c/185898/

Contains Widevine libraries version 6.0.0-6957

Change-Id: I4a7603a86feaf437673fc73f0cccb6065dbcce67
related-to-bug: 6414503
2012-05-01 15:46:14 -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
9a7a7879f1 Merge "Upgrade of Widevine libraries from 4.5.0 to 6.0.0" 2012-04-06 18:11:18 -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
83be76c303 Merge "Fix an intermittent issue with HLS live streaming" 2012-04-05 12:02:45 -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
ba32a8ddb8 Fix an intermittent issue with HLS live streaming
An uninitialized return code was causing intermittent
playback failure during Widevine HLS live playback

Change-Id: Ib45176e7f91e2b6ccf0eb4185c6d58d3be0229b4
related-to-bug: 6277231
2012-04-02 22:10:04 -07:00
Jeff Tinker
c5a49d2e73 Fix Widevine HLS live streaming
Change-Id: I566b693f7f0e9a7b7c8111fb654f79bcd927e02d
related-to-bug: 6178393
2012-03-15 17:34:58 -07:00
James Dong
bab8ed4582 Move away from MediaDebug and use ADebug instead
Change-Id: Id904857259a5de0b77f09716315ceb8f665af4e0
2012-02-08 15:17:27 -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
Steve Block
7284b7e7f3 Rename (IF_)LOGE(_IF) to (IF_)ALOGE(_IF) DO NOT MERGE
See https://android-git.corp.google.com/g/#/c/157220

Bug: 5449033
Change-Id: I9b2273ef758c78d927591c1a0a9f988de739742c
2012-01-08 10:17:01 +00:00
Steve Block
b443024341 Merge "Rename (IF_)LOGI(_IF) to (IF_)ALOGI(_IF) DO NOT MERGE" 2012-01-05 14:08:24 -08:00
Jeff Tinker
ddf87803c7 am f66301bd: Report correct decrypted video length to OMX codec
* commit 'f66301bddb27f6dc5abb0fa0b4d368d7ff6c6840':
  Report correct decrypted video length to OMX codec
2012-01-04 21:51:51 -08:00
Steve Block
8d8df85113 Rename (IF_)LOGI(_IF) to (IF_)ALOGI(_IF) DO NOT MERGE
See https://android-git.corp.google.com/g/156801

Bug: 5449033
Change-Id: Ib8dfa140669788229a5a59d5849907c92393225c
2012-01-04 20:06:42 +00:00
Steve Block
efe632956d Rename (IF_)LOGD(_IF) to (IF_)ALOGD(_IF) DO NOT MERGE
See https://android-git.corp.google.com/g/156016

Bug: 5449033
Change-Id: I2d28198c2fc4622a090f4d830cbb311fe522749c
2012-01-03 22:33:09 +00:00
Jeff Tinker
f66301bddb Report correct decrypted video length to OMX codec
Change-Id: I8f869cfbb0ee74d03d1b0cb14c422c4b78b3692d
related-to-bug: 5772593
2011-12-16 16:10:32 -08:00
Jeffrey Tinker
f5fa8f2017 Changes for calling the level 1 decrypt callout
Change-Id: Iccf76b59a64491952ee11ee2ed1a0e707a529f88
2011-10-07 19:25:20 -07:00
Edwin Wong
6aaee145d8 Additional changes for b/5081725 as per code review by Jeff Tinker. Missed allocating buffer for HLS case.
BUG: 5081725

Change-Id: I21439a5dcce38102a943ade966b5fa79f3d1a686
2011-09-12 14:07:45 -07:00
Edwin Wong
ba14720f8e Widevine HLS live stream support for L1 secure playback.
Check in for Jeff Tinker.
BUG 5081725

Change-Id: If1d828e97319788ab52c6f15a7782a1da63d8f20
2011-09-08 15:11:37 -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
bf52c8873a am e262a49b: Merge "Fix for b/4279535 Seeking in a video causes it to start form beginning" into honeycomb-mr1
* commit 'e262a49b8dd85317efad07cfe17abc2b71d3caad':
  Fix for b/4279535 Seeking in a video causes it to start form beginning
2011-04-28 13:04:56 -07:00
Jeffrey Tinker
e7768d52b0 Fix for b/4279535 Seeking in a video causes it to start form beginning
Use a longer timeout than normal when seeking

Change-Id: I8c1306818e5fffefc15c33bd4f412f9346e8dc7e
2011-04-27 19:31:18 -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
68d1266b52 am c78c1461: Merge "Partial fix for 4181654 hang in seeking after seeking to the end" into honeycomb-mr1
* commit 'c78c1461df1e5b36374bb6f5a1da2090a5baba88':
  Partial fix for 4181654 hang in seeking after seeking to the end
2011-03-30 16:33:34 -07:00
Jeffrey Tinker
f9eea89828 Partial fix for 4181654 hang in seeking after seeking to the end
Also prevents player from becoming unresponsive as described in 3510047.

Change-Id: I3350990c46641e48c34e9a64598157c8af77dcc5
2011-03-29 08:32:29 -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
d0eca66cc7 am 1dd66696: Merge "Fix for b/3504638 wv - when the Widevine client receives a stop play response from the heartbeat need an error event to pass to app" into honeycomb-mr1
* commit '1dd666966d64c42f9e8d78424506eaf44071ed03':
  Fix for b/3504638 wv - when the Widevine client receives a stop play response from the heartbeat need an error event to pass to app
2011-03-16 14:40:00 -07:00
Jeffrey Tinker
656ec45728 Fix for b/3504638 wv - when the Widevine client receives a stop play response from the heartbeat need an error event to pass to app
Change-Id: I6d0635e791c0b8537318c47113d533841a1e5555
2011-03-15 23:49:31 -07:00