History log of /frameworks/av/media/libstagefright/include/AwesomePlayer.h
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
344a1b9bb5cba14a0771c8b416466678aff3215f 02-May-2014 Lajos Molnar <lajos@google.com> am 113f2122: am 5fa3f7af: am b52675e9: Merge "Smooth out AwesomePlayer"

* commit '113f2122662856f2482836f1b4c585a050888afa':
Smooth out AwesomePlayer
1b78c4b1484c7d4c12b9a87329dc8d4b6e8c0c37 30-Apr-2014 Lajos Molnar <lajos@google.com> Smooth out AwesomePlayer

Use clock estimator to smooth out audio time stamps.

Change-Id: Iec1ff30c011069d06ff8051fc4839d00895463d6
1b86fe063badb5f28c467ade39be0f4008688947 29-Jan-2014 Andreas Huber <andih@google.com> FINAL ATTEMPT: HTTP services are now provided from JAVA and made available to media code

Change-Id: I9f74a86e70422187c9cf0ca1318a29019700192d
42c5ae81036d4002da3fe1e3b1016131ba737e74 27-Sep-2013 Marco Nelissen <marcone@google.com> Prevent onPrepared callback from being called twice


Change-Id: If6845c832d114629282f0b03f904a37c3325208e
cbaffcffee6418d678806e63097c19fe26d48fe0 15-Aug-2013 Lajos Molnar <lajos@google.com> Add MEDIA_STARTED/PAUSED/STOPPED events to media players

This is needed for the MediaTimeProvider java interface, so it does not
continually poll for current media time.

Note: NuPlayer and AwesomePlayer do not correctly handle stop (pause
instead), so for those we will signal PAUSED.

Signed-off-by: Lajos Molnar <lajos@google.com>
Change-Id: I3c61e1bda475f131323f475c18a42e3ec66c9ae1
Bug: 10326117
94ea60f975c3eb7ce6d2a4430538a42a5fc3babd 14-May-2013 Richard Fitzgerald <rf@opensource.wolfsonmicro.com> stagefright: offload playback support

Offloading of compressed audio decoding to audio DSP
is implemented for audio only, non streamed content.
when the datasource is

- Create an offloaded sink when playing a compressed
- Send metadata to audio HAL
- Return sink start error to AwesomePlayer so that a
new player for PCM audio can be created in case of problem.
- Forward stream end and tear down callback events to AwesomePlayer
- Stop the sink and wait for stream end callback when EOS is reached.
- Pause and restart the sink if needed before flushing when seeking
(otherwise flush is a no op).
- For current media time, directly query the render position from the
sink and offset by the start position (seek to time)


- When initializing the audio decoder, check with audio policy manager
if offloading is supported. If yes, create the software decoder in
case a reconfiguration is needed but connect the audio track directly
to the AudioPlayer.
- In case of error when starting the AudioPlayer, reconnect the software
decoder (OMXSource) and recreate a PCM AudioPlayer.
- Handle AudioPlayer tear down event by detroying and recreating the
AudioPlayer to allow transitions between situations were offloading
is supported or not.
- Force tear down of offloaded AudioPlayer when paused for a certain time:
This will close the sink and allow the DSP to power down.

- Added helper methods:
- send meta data to audio ia sink setParameters
- query audio policy manager if offloading is supported for a
given audio content

Change-Id: I115842ce424f947b966d45e253a74d3fd5df9aae
Signed-off-by: Eric Laurent <elaurent@google.com>
ad3af3305f024bcbbd55c894a4995e449498e1ba 25-Mar-2013 Richard Fitzgerald <rf@opensource.wolfsonmicro.com> Public API changes for audio offload support.

NOTE: this does _not_ include all private member variables added
to classes as part of offload support. Only public/protected functions
and stubs functions/variables needed to make the changes buildable.

- isOffloadSupported() added to audio policy service
A stub implementation is required to build, this always returns false
- setParameters() added to IAudioTrack
A stub implementation is required to build, this always returns

- CBlk flag for stream end

- Change AudioSystem::getRenderPosition() to take an audio_output_t
so caller can specify which output to query

- Add AudioSystem::isOffloadSupported()
This is fully implemented down to the AudioFlinger function
AudioPolicyServer::isOffloadSupported() which is just a stub
that always returns false.

- Add EVENT_STREAM_END to AudioTrack interface.
STREAM_END is used to signal when the hardware has actually finished
playing all the data it was sent.

- Add event type enumeration to media player interface AudioSink callbacks
so that the same callback can be used to handle multiple types of
event. For offloaded tracks we also have to handle STREAM_END and
TEAR_DOWN events

- Pass audio_offload_info_t to various functions used for opening outputs,
tracks and audio players. This passes additional information about the
compressed stream down to the HAL when using offload.
For publicly-available APIs this is an optional parameter (for some of
the internal and low-level APIs around the HAL interface it is mandatory)

- Add getParameters() and setParameters() API to AudioTrack
Currently dummy implementations.

- Change AudioPlayer contructor so that it takes a set of bitflags defining what
options are required. This replaces the original bool which only specified
whether to use deep buffering.

- Changes to StageFright class definition related to handling tearing-down of
an offloaded track when we need to switch back to software decode

- Define new StageFright utility functions used for offloaded tracks
Currently dummy implementations.

- AudioFlinger changes to use extended audio_config_t.
Fills in audio_offload_info_t member if this info is passed in when
opening an output.

- libvideoeditor changes required to add the new event type parameter
to AudioSink callback functions

- libmediaplayerservice changes required to add the new event type parameter
to AudioSink callback functions

Change-Id: I3ab41138aa1083d81fe83b886a9b1021ec7320f1
Signed-off-by: Richard Fitzgerald <rf@opensource.wolfsonmicro.com>
Signed-off-by: Eric Laurent <elaurent@google.com>
8ba01021b573889802e67e029225a96f0dfa471a 18-Dec-2012 Andy McFadden <fadden@android.com> Rename ISurfaceTexture and SurfaceTexture

The C++ class names don't match what the classes do, so rename
ISurfaceTexture to IGraphicBufferProducer, and SurfaceTexture to

Bug 7736700

Change-Id: I64520a55f8c09fe6215382ea361c539a9940cba5
c374dae535b83d9b499dd9fe8f9dabdb8b0ac9fd 20-Jul-2012 James Dong <jdong@google.com> Added a callback to signal when the rendering of the video frame just occurred

Change-Id: Ifbd78606ffc33483aecebf02cb18e0e52af9624d
related-to-bug: 6851811
ab7a2e544643edcb2e09ed5f204580afd763edc1 27-Apr-2012 James Dong <jdong@google.com> Switch audio tracks at runtime

o The switching is not allowed if there is an audio seek operation ongoing.

o related-to-bug: 6110705

Change-Id: Ib92a165f3984aa033d97800184d3d17319522db5
6a3969cc3bcbfc84dbcc27aa726eb96bc03a830b 03-May-2012 Edwin Wong <edwinwong@google.com> Removed mutex lock in addTextSource, and rename to addTextSource_l
to indicate this method needs to be called with a lock hold.

Change-Id: I7e99f0a622e7de49c288be09dd4fc955bbca390b
related-to-bug: 5629511
related-to-bug: 5542712
4f6eed0d1c7972a983c075bdcf03089569e13fe1 30-Apr-2012 James Dong <jdong@google.com> Impl for supporting two video scaling modes

o allows the video scaling mode to change at any time
o also remove the scaling mode logic in OMXCodec.cpp

o related-to-bug: 5454345

Change-Id: I6f1714eb0c2774591ce650d56c1e779b8afd085f
514bcaf1e842e8e90fbeabf35e7e654622b75b02 17-Apr-2012 James Dong <jdong@google.com> Handle the case when there is no timed text track

o also replaced mTimedTextLock with mLock, since there is no particular reason to use a separate lock for timed text

o related-to-bug: 6110705

Change-Id: Ia687e96956692c42d492e57992e5721ca1e8e18b
eec46abb88dcc50621fd2d3f17a6b8d24fd07a19 12-Apr-2012 James Dong <jdong@google.com> Fix for multiple audio/timed track feature implementation - part one

o getTrackInfo now returns all tracks, rather than just the timed text tracks.
o the index of the track info is kept to the same as the track index if the
track is not from an external source
o correctly maps the selectTrack() and unselectTrack() calls to the right
track index

1) note that the selectTrack() and unselectTrack() only works for timed text
track at present; 2) the lock is timed text specific

o related-to-bug: 6110705

Change-Id: Ib1feeef2184bc992930ace0d1197b6c00a2636d7
f9d660a5e0196240add5daf0199f128d471e592c 16-Feb-2012 Insun Kang <insun@google.com> Defines MediaPlayer APIs to support multiple audio/video/timedtext

o Newly introduced APIs are (MediaPlayer):
getTrackInfo() / addExternalSource() / enableTrack() / disableTrack().

o Timed text tracks are supported only, for now.

o TODOs:
- Define the audio/video behavior for enableTrack and disableTrack.
- Refactoring AwesomePlayer / TimedTextDriver so that all types of
track index can be managed in the correct order and be ready for
supporting audio/video tracks.
(MediaExtractor and MediaSource for text file might be necessary.)

Change-Id: Idb85e1b3f2ed49a64f377d05472dd6663ce94e07
7c5b72c1ea1a7a8ec40c1364e5e32043799c811f 10-Feb-2012 James Dong <jdong@google.com> Change the signature of method addTextSource() in AwesomePlayer

o avoid a unnecessary copy constructor call

Change-Id: Ib598bbe42d42a835549e2d29502c6f196f859874
6655174826330afe66ef766258181ae8c11f3f6c 11-Jan-2012 Insun Kang <insun@google.com> First step of refactoring 'timedtext' code.

1. Removed dependency of TimedTextPlayer on AwsomePlayer.
2. Generalized TimedTextParser to TimedTextSource and its subclasses.

1. Introduced TimedTextDriver, TimedTextPlayer (new implementation),
TimedTextSource (and its subclasses).
2. Removed TimedTextParser.

Remaining TODOs
1. Revise VideoVidew, Gallery3D app, AwesomePlayer to check if
'pause' and 'resume' works well.
2. Consider revising MediaPlayer APIs such as setParameter() ->
addTextSource(). Need more thoughts.

Change-Id: Ie0c4f15b9690102de755cef6940f8c31ccf78e27
9d2f386dd2885eaffa11fd494ae258bb09fe6397 10-Jan-2012 James Dong <jdong@google.com> Separate sniffing from session initialization

This avoid lengthy/duplicate sniffing for drm plugins when a decrypt session is opened

o The change is backward compatibile in that no update is required
for existing drm plug-ins if they do not plan to provide separate

related-to-bug: 5725548

Change-Id: I7fc4caf82d77472da4e2bc7b5d31060fb54fd84c
c34233e673c9791e137456d0c427d58db184b690 16-Nov-2011 Andreas Huber <andih@google.com> Make sure not to cancel pending seek/EOS notifications on a cache underrun...

or they are lost for good.

Change-Id: I2f9f53efb05db4077961137c9dc8c27edac4ec62
related-to-bug: 5544907
3901e5d87573447db33fb9930871a1f5266a9b2c 25-Oct-2011 Andreas Huber <andih@google.com> Remove surface legacy APIs and code.

All surfaces are now supported through surface textures.

Change-Id: I95dd823e7099c0c32a48a1121624149dcc29d9c6
2bfdd428c56c7524d1a11979f200a1762866032d 12-Oct-2011 Andreas Huber <andih@google.com> NuPlayer is now taking on the task of streaming over RTSP.

Change-Id: Ie204db8810807f1e7981959e34dc0149e5d9563a
02f6e988107bc13ebe4828b734ea0fc3d9d11ae0 01-Sep-2011 Andreas Huber <andih@google.com> Guard the audio notifications with a separate lock to avoid deadlocks during reset.

Change-Id: I9a97372e1f777d1cbd6774cac2ed34b4b8cd9392
related-to-bug: 5179827
63970b42f101c87db7cfd26d43b0d300260b1582 29-Aug-2011 Andreas Huber <andih@google.com> Return an error to the client instead of asserting if decoder instantiation fails

after a surface change.

Change-Id: Ic7758cbeb107032db68a1c3b8e2984710a12dd8b
related-to-bug: 5212725
14f95746466fb6abdbbf33ee26d92ebf3fbef98f 12-Aug-2011 James Dong <jdong@google.com> Some decoders require more gentle treatment

We sacrifice A/V sync to some extent to enable the decoder to recover from
temporary bottlenecks.

Change-Id: I16195091ad752bfad4c70869cdd7e9f28ca3a118
related-to-bug: 5180142
5442cb59e8483e18b3a02400d431d167ea7074b3 14-Jul-2011 Andreas Huber <andih@google.com> If audio startup fails while executing MediaPlayer::start() do NOT post an error

notification, the error returned by MediaPlayer::start() will suffice.

Change-Id: I49bd8d42078f039e5e6d8d4fed4f7f55dc5ff82a
related-to-bug: 5020200
9b80c2bdb205bc143104f54d0743b6eedd67b14e 01-Jul-2011 Andreas Huber <andih@google.com> Charge network traffic to the uid of the process using the MediaPlayer.

Change-Id: I2bcb54b8232afd3fc7ee16289f37c7a7b3f23067
related-to-bug: 4517282
a0b1d4b161599c2bb2a47119e50c51e75bbe980e 08-Jun-2011 Andreas Huber <andih@google.com> Make dumpsys(media.player) more useful by having AwesomePlayer populate it.

Change-Id: I12ba7d542331a8293d67a0d47378b8be4f777759
5b1b8a93a07326f1cbc627f09e02988375189e0a 26-May-2011 James Dong <jdong@google.com> Send estimated bandwidth value as informational event when cache fetcher pauses

o Application can make informed decision about the available network bandwidth
when cache fetcher pauses.

o Application can also adjust how frequently the bandwidth is estimated within
a range from one second to one minute.

Change-Id: I90068001343e79da1886de03c565537787e1580b
965d08ba16ee82bc85f69546360c18e7da907406 11-May-2011 Gloria Wang <gwang@google.com> For out of band timed text support (timed text in a separate file).

Change-Id: I9e024a63eb9bf6f839deee3c7766a66e63126c96
e39350924f4e743ec04cc9640526e06990c8cbda 19-May-2011 James Dong <jdong@google.com> resolved conflicts for merge of a8939e0d to master

Change-Id: I090479ed09618e1aa3685ca79e16202d9c82f523
681755fc0d0797506456f46a2a10555916d6be32 21-Apr-2011 Andreas Huber <andih@google.com> Using widevine:// to stream adaptive bitrate wvm content no longer

uses stagefright's http cache but defers caching to the WVMExtractor, which
now has the responsibility of reporting buffer status/duration.

Change-Id: Ieec64a20203977fd0a61d0c6834da124de78bfa2
related-to-bug: 4390283
c0dfc5b02d4179769bbdd25c10d430576ec09568 10-May-2011 Andreas Huber <andih@google.com> Properly honour any pending seek request when reading the first buffer after

starting the audio player.

Change-Id: Ibedc1804a8c444e4d0f5be4eb87b22ed5d2c367d
7a1e3e81264189e23a1db2b174e1b5a5d4c7d1c3 04-May-2011 Gloria Wang <gwang@google.com> Initial CL for the timed text support:
- Add support for MP4 timed text
- Add API for app to turn on/off a text track
- Add timed text metadata(language) in the MediaMetadataRetriever

Change-Id: I0055beba38ac761627dbcc6d581ae9582d68bb94
4f9e47f2c03ce36261c4717cd7e131d7940bb068 26-Apr-2011 Gloria Wang <gwang@google.com> Add setParameter/getParameter to MediaPlayer API.
for bug 1982947

Change-Id: If3f40e4f18cbba155af29944af38bdc627f8cd53
c33b033d11b781719d7f8dd2a63a826f09bb3593 12-Apr-2011 Andreas Huber <andih@google.com> Merge "Experimental support for changing the video surface/texture on an active mediaplayer"
dab59b5a4956b7e9b1ffc64a0676e7990579934e 01-Apr-2011 Andreas Huber <andih@google.com> Remove legacy hack to only drop frames every other late frame

Change-Id: I197e568d292341c330efb394c41aa9af0e74b081
related-to-bug: 4203195
84b343f29063fbfa2ee61b2e3d37ba059ca507d4 22-Mar-2011 Andreas Huber <andih@google.com> Delay signaling the end of audio playback until all frames have actually played.

Change-Id: I1fa07358a885a818fd0a5d7da425740f86095e10
related-to-bug: 3404000
150694cda0842d38a9358fe8d1fcb4fb4a76599e 14-Mar-2011 Andreas Huber <andih@google.com> Experimental support for changing the video surface/texture on an active mediaplayer

Change-Id: Ia7a5126e9311dc1c721ab2aef54bd698151c88cd
b5ce361d19e69fe156f7188c9ee0f4734b259874 25-Feb-2011 Gloria Wang <gwang@google.com> Fix for bug 3477330
This patch fixs a crash bug caused by using a NULL DecryptHandle pointer.
Fix by using sp<DecryptHandle> instead.

Change-Id: Icbd59858385e8256125a615a3c82656b25319d44
1156dc913a5ba7b2bc86489468d4914430f03d14 09-Mar-2011 Andreas Huber <andih@google.com> An HTTP datasource for stagefright using the chromium code.

Use of this new datasource is now the default unless overwritten by

adb shell setprop media.stagefright.use-chromium false

Change-Id: I156a8eb9a1fff1cb537b4aec6cf3e8e6052be81e
18eb42eca6949158e630eae38a70db8f837c17c8 25-Feb-2011 Andreas Huber <andih@google.com> Merge "Alternate patch for late video issue: seek only the video ahead to the next"
827b55c5f3409b68ef57816208220d8804693e44 24-Feb-2011 Andreas Huber <andih@google.com> Merge "Suppress the logging of URLs when in incognito mode."
7314fa17093d514199fedcb55ac41136a1b31cb3 24-Feb-2011 Andreas Huber <andih@google.com> Suppress the logging of URLs when in incognito mode.

Change-Id: Ib951b495eae15669e160ef54686eab0eeb9b366a
related-to-bug: 3336575
64bb6983690bf994d904591145a3cdd6373bdbe6 24-Feb-2011 Andreas Huber <andih@google.com> Alternate patch for late video issue: seek only the video ahead to the next

syncframe after the current audio media position, leave audio untouched.

Change-Id: Ia9fa8e205467e5460c8219afd396bddd09fcfb46
related-to-bug: 3375737
1173118eace0e9e347cb007f0da817cee87579ed 09-Feb-2011 Glenn Kasten <gkasten@google.com> Bug 3438258 Add SurfaceTexture as MediaPlayer sink

This change enables the use of a SurfaceTexture in place of a Surface
as the video sink for an android.media.MediaPlayer. The new API
MediaPlayer.setTexture is currently hidden.

This includes:
- New Java and C++ interfaces
- C++ plumbing and implementation (JNI, Binder)
- Stagefright AwesomePlayer and NuPlayer use ANativeWindow
(either Surface or SurfaceTextureClient)

Change-Id: I2b568bee143d9eaf3dfc6cc4533c1bebbd5afc51
ed8d14f6a934072cd012992c4ef16990a54baa9a 16-Feb-2011 Andreas Huber <andih@google.com> Remove legacy, AwesomePlayer-based http live implementation.

Change-Id: I455d0faa5612dcd4d2bb6f2b3c7b64a1caaabf69
f1958f9442bc937e1f8c8d9175901500b944b021 14-Feb-2011 Andreas Huber <andih@google.com> Enable cancelling the rtsp connection process early.

Change-Id: Ie2059c54541ad8c675944d71b39c772b0f6f04c8
related-to-bug: 3452699
f03034408506051f2f836e59305fcd5f662bf19a 11-Feb-2011 Andreas Huber <andih@google.com> Start playing (and decoding) audio only after the first video frame has been decoded.

if there's both audio and video content. This gives the video decoder an opportunity
to fill its internal buffer queue at the start of playback.

Change-Id: Ib2c95753b430e4e47207953b913b607024a328d7
related-to-bug: 3431702
100a4408968b90e314526185d572c72ea4cc784a 08-Feb-2011 Andreas Huber <andih@google.com> Change timestamp handling in RTSP, remove unused, experimental, gtalk support

related-to-bug: 3216447

NTP timestamp handling is now done at a higher layer than before.

Change-Id: I9fb23f1335110ec59e534f9aa0fe6f6a6406dd52
2b1222f8938356669672f35e0e53e176c78c40ef 07-Feb-2011 Andreas Huber <andih@google.com> Display a single (still-)frame of video after seeking while paused.

Change-Id: Ia78bf29ba6d649043e70c49913725cecdf918c03
related-to-bug: 3392259
b45c01c2b8588ff431b511151666a55a39f0a6ae 16-Jan-2011 James Dong <jdong@google.com> Fix the presentation video resolution when it is different from the actual image resolution of the video.

bug - 3352413

Change-Id: I8f08f3896e9fb90f09119dccdb88b82af60f79f2
ccb3506ed1845121b94f4e27244e61a46eb19815 17-Jan-2011 Dharmaray Kundargi <dharmaray@google.com> integrate videoeditor preview player.

Change-Id: I83084f494605c8e6f4d198afa8c36f9e29579667
145e68fc778275963189b02a1adcbe27cce4d769 12-Jan-2011 Andreas Huber <andih@google.com> Increase cache size and low-watermark threshold, also

MediaPlayer now sends out MEDIA_INFO,MEDIA_INFO_VIDEO_TRACK_LAGGING messages
to the JAVA client informing it how much (if at all) the video lags behind
audio (arg2 is the media delay in ms).

Change-Id: I6933f573d8597a35112e4b5ee0fcb826a7f6ddd1
related-to-bug: 3335220
aee6c07b3572bf2510cd9e7d29c454fcfedde31d 06-Jan-2011 pmehendale <pmehendale@nvidia.com> Awesomeplayer : Frame dropping logic change

Changed late frame drop policy, now we are dropping only 1 in 8,
late (> 40ms) frames. Dropping every late frame result in lot of noticible
pauses, usually with peaky bitrate activity these pauses become more prominant.
Dropping few frames is still required to allow overall playback chain,
to regain the performance.
Experimentally decided to drop Max one late frame in 8.

Change-Id: If20848d619a76aaf8179b1e5c3155610e3bc85fd
a44153c1a57202fb538659eb50706e60454d6273 04-Dec-2010 Andreas Huber <andih@google.com> Squashed commit of the following:

commit 9254c845d7c82976fd4b8be406ce4b17eeb0e119
Author: Andreas Huber <andih@google.com>
Date: Fri Dec 3 15:26:12 2010 -0800

Remove obsolete code from the cached data source.

Change-Id: I794b986ac8977cbc834dff189221a636ba564e36

commit 2ee33711064c58c53ba65ed9e63dd4b01ec2380e
Author: Andreas Huber <andih@google.com>
Date: Fri Dec 3 15:23:13 2010 -0800

LiveSource is dead, long live LiveSession.

Change-Id: Ibcd0731ecf9c94f0b3e5db3d53d012d9da2a1c66

commit 9eabb2c3cd8571ab859bdeae0aa7f655c414d8fa
Author: Andreas Huber <andih@google.com>
Date: Fri Dec 3 12:49:31 2010 -0800

Respect explicitly signalled discontinuities.

Change-Id: I3c0c16a2de7a99742d25db7d1b2ff0258de52271

commit 7f7f7b6b906b6ece6e4d43af7fd5f494e805c5e5
Author: Andreas Huber <andih@google.com>
Date: Fri Dec 3 11:45:57 2010 -0800

Better protection against syncword emulation in AAC ADTS content.

Change-Id: I867e80a4556dd46d24ab3e781177c248a5221719

commit fe765766582efcc350aed01135ea603576adccf6
Author: Andreas Huber <andih@google.com>
Date: Fri Dec 3 09:15:59 2010 -0800

New implementation of http live driving code.

Change-Id: I31ddf3d6a0d5929b121be704a2b9c3d6775f7737

Change-Id: Id8d1829c8fcb173756965013f848c1d426ef1048
e2b1028852120bcfded33b8f06f66b780437fe92 23-Nov-2010 Andreas Huber <andih@google.com> Support streaming data across binder boundaries.

Change-Id: Ifbac61406dcb81343765f99ccba08bd90f9274cc
f5ab57c2d5e02af7483c94eddb177e4f5c9e9892 22-Nov-2010 Andreas Huber <andih@google.com> Squashed commit of the following:

commit 0870f7bdd10a7cd36087d723d1957d8e1b967ca7
Author: Andreas Huber <andih@google.com>
Date: Mon Nov 22 12:57:04 2010 -0800

set_surface_crop doesn't seem to work right yet, stop using it in the SoftwareRenderer.

Change-Id: If0a24f78b7810a6cecaa82eb4f23d0f90c22cc42

commit 4767b52bee3a54ae117a8708d6832276a44e6a6a
Author: Andreas Huber <andih@google.com>
Date: Mon Nov 22 11:14:57 2010 -0800

info->mMediaBuffer may still be NULL at this point...

Change-Id: I25a71569015b1bb87f1ea7efff7588958774426f

commit 0cef79874e1f1ddb10b7402177a87d3cffc7de92
Author: Andreas Huber <andih@google.com>
Date: Mon Nov 22 10:55:12 2010 -0800

QCOM's YVU420 color format conversion has now been tested.

Change-Id: I7fef4b642a928af15d42f006f7cdc107d5ff1d67

commit 84fe05a6c969ede0ce8a85a530e110afca07c7a7
Author: Andreas Huber <andih@google.com>
Date: Mon Nov 22 09:59:50 2010 -0800

Removed remaining traces of suspend/resume. Proper reporting of video dimensions based on cropping rectangle.

Change-Id: Ib238b80cbc1f19e7d312f2422eb5e9ab6b06b1bc

commit 50970cdc837c5c498bcf0cb61b436196ca9e2ef7
Author: Andreas Huber <andih@google.com>
Date: Fri Nov 19 16:11:06 2010 -0800

Revamped Software Renderer respects the crop rectangle.

Removed obsolete ADRENO support code.

Change-Id: I984cbc8a99c4d97e09e7d1b1292099c88b9ae535

commit 8abbc6a5608bff650f968540f24a2eab75f254ed
Author: Andreas Huber <andih@google.com>
Date: Fri Nov 19 16:10:41 2010 -0800

The metadata retriever now respects the crop rectangle while capturing a video frame.

Change-Id: Id3377176060086d16717f62c77ce26fabe899050

commit 2d42e4466609d304e88bd2cdd6eb7b297340cc21
Author: Andreas Huber <andih@google.com>
Date: Fri Nov 19 16:09:50 2010 -0800

Changed ColorConverter APIs to be more general.

Clients can now refer to crop rectangles in both source and destination.

Change-Id: Ief151d736818396d0389ec04e7df5650e3ad7c04

commit 273184303d54a54febd3e9c3dd4df30507ea78b5
Author: Andreas Huber <andih@google.com>
Date: Fri Nov 19 15:04:06 2010 -0800

The stagefright commandline tool now writes the extracted video frame to /sdcard/out.jpg

Change-Id: Ieb2ab3fda7a7cd9294beccb8db0eed75096eeef4

commit 2d43390328cadf4ba94c1c3c02e4fb30baa29690
Author: Andreas Huber <andih@google.com>
Date: Fri Nov 19 14:36:55 2010 -0800

The AVC software decoder now properly advertises the cropping rectangle.

Change-Id: Idb7a8a7e2fde5740f0fc34b7e8c92eca2577104b

commit 9a7ed23c2fac8ce19dce7a34a603acee945a89f6
Author: Andreas Huber <andih@google.com>
Date: Fri Nov 19 13:40:39 2010 -0800

OMXCodec now signals a format change if the cropping rectangle changes.

...and puts the cropping info into its output format.

Change-Id: I3ffbd8e877ba286fe06a82c536ef20d92548d2e2

commit efe0323947029df1c502599ccc288c8d676dfd31
Author: Andreas Huber <andih@google.com>
Date: Fri Nov 19 11:29:39 2010 -0800

Stagefright's MetaData object now supports rectangle items.

Change-Id: I5667bb5ee6622c76104b99fb57f60abb802a8504

Change-Id: I27cb78f2c5e0353f95fdfc5cb53991949ed75b70
0a5ca668c6f7d45706e9aec4a1dfec0aacc6d233 16-Nov-2010 Andreas Huber <andih@google.com> Remove all traces of legacy renderer support in stagefright.

Change-Id: I17b8e0dbf53fca37c96830c41131b4bc0c24ca6d
34ef0f32c8fc0186236a27e07405328cc1f7c56d 12-Nov-2010 Andreas Huber <andih@google.com> Make sure the prefetcher is actively fetching data if we pause playback due to cache underrun.

Change-Id: Id5f4b7a0387137380dcd39995390a8e0d084b4b3


aceaaf303422bbe3a7b8d9cdb96495dbf8109c23 26-Oct-2010 Gloria Wang <gwang@google.com> resolved conflicts for merge of 965f960e to master

Change-Id: I63cec8ffb3593216da1de03428134d89e75b9338
a9741a9232c81eaf59179acef91f5be46c42264e 26-Oct-2010 Gloria Wang <gwang@google.com> resolved conflicts for merge of 9084631d to gingerbread-plus-aosp

Change-Id: Ie2b675d50bfca3f33aee80f1a67c9f03d1f97472
dcd25efb46c41c8d24a0a9cf61fb57f84149709e 22-Jun-2010 Gloria Wang <gwang@google.com> DRM framework support:
- add a sniffer for DRM files
- add DRMSource and DRMExtractor for es_based DRM
- add pread in FileSource.cpp for container_based DRM
- add native DRM framework API calls in the player for
DRM audio/video playback

Change-Id: I4b9ef19165c9b4f44ff40eeededb9a665e78a90f
6a05c9e912aeb8bfe1ef99516def91a177a481b6 19-Oct-2010 Andreas Huber <andih@google.com> If we basically finished the preparation phase and are only buffering enough data to start playback, cancel this early on reset().

Change-Id: I71a59d5e019e7b9ec3d9375d6231cc301ad3999b
74e1e56dfa15be0ffea82c60d81846c4f6615421 19-Oct-2010 Andreas Huber <andih@google.com> am 2d00c605: am 52bea277: Merge "If we encounter video stream EOS while seeking we may still need to seek audio." into gingerbread

Merge commit '2d00c6050977f3e03665fbfef93f4f6aed041a63'

* commit '2d00c6050977f3e03665fbfef93f4f6aed041a63':
If we encounter video stream EOS while seeking we may still need to seek audio.
4769cc92740e3ab58e9263d42553c12bbf79e3be 19-Oct-2010 Andreas Huber <andih@google.com> If we encounter video stream EOS while seeking we may still need to seek audio.

Change-Id: Ie260942247b6810ca94e86328a3725d75b12181d
related-to-bug: 3108724
6fed68ded4ab2c042b7ca14409a24aee916313d5 15-Oct-2010 Andreas Huber <andih@google.com> am bb5d7c21: am 5f423917: Merge "Attempt to derive the avg. bitrate of the entire stream from metadata." into gingerbread

Merge commit 'bb5d7c21615128630fc9d08274bb14ca01e2124b'

* commit 'bb5d7c21615128630fc9d08274bb14ca01e2124b':
Attempt to derive the avg. bitrate of the entire stream from metadata.
7fbdb0903dfbf70b314a74e64e28fb880cdb9247 13-Oct-2010 Andreas Huber <andih@google.com> Attempt to derive the avg. bitrate of the entire stream from metadata.

related-to-bug: 3093224
Change-Id: I4726b023373e04468cc12fd64f7fe6ee923add95
250e051e564e3b6f5a88314379d5e145a2b5615f 11-Oct-2010 Andreas Huber <andih@google.com> am cac43e8a: am beffefa2: Merge "RTSP seeking is now asynchronous, MediaPlayer is not notified that the seek is complete until it actually is. Ignore seek requests on live streams." into gingerbread

Merge commit 'cac43e8a2ce59c1151d5a2028330b2a769591d22'

* commit 'cac43e8a2ce59c1151d5a2028330b2a769591d22':
RTSP seeking is now asynchronous, MediaPlayer is not notified that the seek is complete until it actually is. Ignore seek requests on live streams.
0e4d896cb9ab813131c45b3b1fcd4cc66d341468 10-Oct-2010 Andreas Huber <andih@google.com> am bb708373: am 949f7d90: Merge "Work to support switching transport streams mid-stream and signalling discontinuities to the decoder." into gingerbread

Merge commit 'bb70837397e3fb437b7b4443b37d7a83c11e6e43'

* commit 'bb70837397e3fb437b7b4443b37d7a83c11e6e43':
Work to support switching transport streams mid-stream and signalling discontinuities to the decoder.
0dcd837af4169bdb6fb2a0c384722dc4f57433c6 09-Oct-2010 Andreas Huber <andih@google.com> RTSP seeking is now asynchronous, MediaPlayer is not notified that the seek is complete until it actually is. Ignore seek requests on live streams.

Change-Id: Ie61230cd60dd6c682baf72529100369ad6291189
related-to-bug: 3073955
2eb16c2250c57a8009ab58e9aeb1606ab62bbbbc 07-Oct-2010 Andreas Huber <andih@google.com> am 56ee1080: am 17bc4f65: Merge "Make sure to call AudioTrack::stop() instead of AudioTrack::pause() after submitting all samples to AudioTrack to make sure those remaining samples are actually played out." into gingerbread

Merge commit '56ee1080f004110bff622e5b60c243d9cabfe120'

* commit '56ee1080f004110bff622e5b60c243d9cabfe120':
Make sure to call AudioTrack::stop() instead of AudioTrack::pause() after submitting all samples to AudioTrack to make sure those remaining samples are actually played out.
2a4d22d79e927f2245537921e10fc5fda1c47a29 08-Sep-2010 Andreas Huber <andih@google.com> Work to support switching transport streams mid-stream and signalling discontinuities to the decoder.

Change-Id: I7150e5e7342e1117c524856b204aadcb763e06ed
related-to-bug: 2368598
b2e3954c94717e43b3dc9b880564f166cfbbc0a2 05-Oct-2010 Andreas Huber <andih@google.com> Make sure to call AudioTrack::stop() instead of AudioTrack::pause() after submitting all samples to AudioTrack to make sure those remaining samples are actually played out.

Change-Id: Id574a0203efcb5e565f1b0fe77869fc33b9a9d56
fb9b87b6c22d940e5e7cb4b5e7cfae99015a0131 28-Sep-2010 Andreas Huber <andih@google.com> am d6c30e8c: am be045061: Merge "Instead of constantly polling the AudioPlayer to see if it reached EOS or finished seeking, initiate the notification from the AudioPlayer when the event happens." into gingerbread

Merge commit 'd6c30e8c1521bc584f33500b8ee897dafdfec023'

* commit 'd6c30e8c1521bc584f33500b8ee897dafdfec023':
Instead of constantly polling the AudioPlayer to see if it reached EOS or finished seeking, initiate the notification from the AudioPlayer when the event happens.
ed54ad0f8619ae416b0968ade6248894cbfc4dba 28-Sep-2010 Andreas Huber <andih@google.com> Instead of constantly polling the AudioPlayer to see if it reached EOS or finished seeking, initiate the notification from the AudioPlayer when the event happens.

Change-Id: I43875b6adaf96d4e982ef3dfc3d6c8f7034ac51d
related-to-bug: 3036592
49ce029a6b62681c576a51f963d734eccd4eaccd 03-Sep-2010 Andreas Huber <andih@google.com> am 8e11c822: am 9fee0b2a: Ogg files can be tagged to be automatically looping, this setting always overrides the MediaPlayer\'s setLooping setting.

Merge commit '8e11c82247151085fa165c76bfbc157bc6091ca4'

* commit '8e11c82247151085fa165c76bfbc157bc6091ca4':
Ogg files can be tagged to be automatically looping, this setting always overrides the MediaPlayer's setLooping setting.
8ae49d87b98d57d6758b0c51b95e28a6581a79f1 03-Sep-2010 Andreas Huber <andih@google.com> Ogg files can be tagged to be automatically looping, this setting always overrides the MediaPlayer's setLooping setting.

Change-Id: Ifb564c6cdf6137eac14869f9ca7d471f05a5556a
related-to-bug: 2974691
511ea9823b1ab1d45eb86607cb291878c70b26ae 03-Sep-2010 Andreas Huber <andih@google.com> am af7a7c34: am cc4a38c6: Merge "Properly buffer a certain amount of data on streaming sources before finishing prepare()." into gingerbread

Merge commit 'af7a7c34e0752db2b8ec3dd7fa6e8d486ea010dc'

* commit 'af7a7c34e0752db2b8ec3dd7fa6e8d486ea010dc':
Properly buffer a certain amount of data on streaming sources before finishing prepare().
8650e1960905097f6f1d6aa462ccb1c93c656834 03-Sep-2010 Andreas Huber <andih@google.com> Properly buffer a certain amount of data on streaming sources before finishing prepare().

Change-Id: I39bf3c6dafcbe003b51dea4795742dcd8548f207
related-to-bug: 2875110
9fbd6ae6b6d9f3eb791a3385df6fed3524531bd4 28-Aug-2010 Andreas Huber <andih@google.com> am 05c1cada: am 577615c9: Merge "Better support for rtsp (normal play-)time display. Better seek support, timeout if no packets arrive for too long." into gingerbread

Merge commit '05c1cadaeaf272a70acc889bfccd607648058470'

* commit '05c1cadaeaf272a70acc889bfccd607648058470':
Better support for rtsp (normal play-)time display. Better seek support, timeout if no packets arrive for too long.
8d342970108926c4ea355c90d26a2a353ec0fd47 27-Aug-2010 Andreas Huber <andih@google.com> Better support for rtsp (normal play-)time display. Better seek support, timeout if no packets arrive for too long.

Change-Id: Id491541a6ae501604cda815f8e961a3bfe26db7d
related-to-bug: 2556656
5ac7b5def64625fdc9cfaf1bbdd013f5ada241f3 25-Aug-2010 Andreas Huber <andih@google.com> am 67ca90b3: am 6b6ae996: Merge "A first shot at proper support for seeking of rtsp streams." into gingerbread

Merge commit '67ca90b339feb8bb6889ca289a9dbc82c447b0d2'

* commit '67ca90b339feb8bb6889ca289a9dbc82c447b0d2':
A first shot at proper support for seeking of rtsp streams.
cce326fe43411855aca2f719e505b051bc4b61b3 24-Aug-2010 Andreas Huber <andih@google.com> A first shot at proper support for seeking of rtsp streams.

Change-Id: I9604f2d09feedc0074c0e715be58e719d4483760
related-to-bug: 2556656
5daeb129a2c2ba3d14ccd94af283b5f561c783ea 16-Aug-2010 Andreas Huber <andih@google.com> Squashed commit of the following:

commit 35cc68814a9537c31fde146e171e7b0bbdfe211e
Author: Andreas Huber <andih@google.com>
Date: Mon Aug 16 08:48:42 2010 -0700

Only enable support for yuv to yuv conversion on passion, where it's available, use the slower yuv->rgb565 path everywhere else.

commit d8ac5a8814103e60d11d2acf61997fc31a1dc58d
Author: Andreas Huber <andih@google.com>
Date: Fri Aug 13 13:56:44 2010 -0700

The software renderer takes over all rendering, converting from yuv to yuv if possible and rgb565 otherwise.

commit 684972074b74318bdcb826ed9b5b0864d2d2e273
Author: Andreas Huber <andih@google.com>
Date: Fri Aug 13 09:34:35 2010 -0700

A first shot at supporting the new rendering APIs.

Change-Id: Iea9b32856da46950501f1a700f616b5feac710fd
39ddf8e0f18766f7ba1e3246b774aa6ebd93eea8 04-Aug-2010 Andreas Huber <andih@google.com> Support for Gtalk video, includes AMR/H.263 assembler and packetization support, extensions to MediaRecorder to stream via RTP over a pair of UDP sockets as well as various fixes to the RTP implementation.

Change-Id: I95b8dd487061add9bade15749e563b01cd99d9a6
5d2de4da54504836e4b772b3010ac28c19f667f0 07-Jul-2010 Andreas Huber <andih@google.com> Only send the playback complete notification if a) an error occurred on any track or b) all tracks have finished playing. The previous behaviour was to send the notification as soon as the first track finished playing.

Change-Id: Icac8104d14f18b719aa0b8f1ab3215f24003b152
0a5baa9b411fe086013d2a5e9126ed63fbad046c 10-Jun-2010 Andreas Huber <andih@google.com> Switch stagefright's approach to prefetching to the new model. The java MediaPlayer is now notified about rebuffering start/end via info messages.

Change-Id: If8185ba329ce8b6663b1ad39a4efb0ad3be81df2
cf7b9c7aae758ac0b99833915053c63c2ac46e09 08-Jun-2010 Andreas Huber <andih@google.com> Initial checkin of preliminary rtsp support for stagefright.

Change-Id: I0722aa888098c0c1361c97a4c1b123d910afc207
acdd9d0f59c3d8bdc3de80664a609527ec3d21e2 06-May-2010 Andreas Huber <andih@google.com> Disable vorbis seek when streaming from localhost.

Change-Id: Icda523ae1c89e26482f1c1767fe3a8b9222bb30f
related-to-bug: 2654400
1321fdd94d354431b930735e9f38f32ecd189a2d 31-Mar-2010 Andreas Huber <andih@google.com> Properly send a MEDIA_SEEK_COMPLETE notification for a seek request while paused (legacy behaviour).

Change-Id: I64da5eb97c75b269b4668b3628ed0f05f2e36e51
related-to-bug: 2557482
2415ecb5bb4e1459024f6d6c8ae2d6e3dc4fbdc7 26-Mar-2010 Andreas Huber <andih@google.com> Finer-grained locking in AwesomePlayer, position and duration are now protected by a separate mutex that's only held for brief moments of time.

Change-Id: I989baf5a0ea8923985c560c2ec274abda0780242
related-to-bug: 2546577
e966fb05c7e67a7f5dce65024de60aac83eb6f81 24-Mar-2010 Andreas Huber <andih@google.com> Enable early termination of the prefetcher's preparation phase.

Change-Id: I929ac9b0fd0b6ebd98c1bc56be18ac8f8378d48c
related-to-bug: 2537407
e94bd14078d327ef2f800e69907efce641a13272 12-Mar-2010 Andreas Huber <andih@google.com> HTTPStream and HTTPDataSource now support cancellation of the connection process, AwesomePlayer takes advantage of this in cases where ::reset() or ::suspend() is called while in the preparation phase to bail out early. Also fixes in issue where the audio codec was not properly stopped if no audio player object ever took ownership.

Change-Id: I6d73defe6d276693853a469db267bb2668d07af5
related-to-bugs: 2475845,2414536
88d8a83de12592635248aa1a3bd6b9ea46108501 05-Mar-2010 Andreas Huber <andih@google.com> Instead of allocating the decoder instances in response to a call to setDataSource, postpone allocation to the preparation phase where it belongs.

related-to-bug: 2492205
5295c0c55d41a2906ea7f65a3f22e6278cb17d4b 23-Feb-2010 Andreas Huber <andih@google.com> Propagate errors all the way through the MediaSources and send either MEDIA_PLAYBACK_COMPLETE or MEDIA_ERROR depending on the final reason for running out of buffers to play back.

related-to-bug: 2463749
2e8ffaf95bd35358ecd14ddf00cddaf3abefe0a9 19-Feb-2010 Andreas Huber <andih@google.com> Implement legacy behaviour for MediaPlayer's behaviour of starting from the start of the media on a start() call instead of resuming at the current position, if previously reached the end of the stream. Also properly report number of frames played to audio flinger. Finally, delay spawing the queue thread until actually used.

related-to-bug: 2453220
fa090f541bb84a546af2ec834e91a032ff10e66e 12-Feb-2010 Andreas Huber <andih@google.com> Preserve a preview frame to be restored after resuming the playback session.

related-to-bug: 2231576
7b3396acc702451be9bafb19d7fe26d55d43a316 12-Feb-2010 Andreas Huber <andih@google.com> Squashed commit of the following:

commit 427e927298449826bb5b98327b0c05957aa051e6
Author: Andreas Huber <andih@google.com>
Date: Fri Feb 12 10:39:07 2010 -0800

Fixing a race condition in AwesomePlayer and support for suspend/resume.

commit 96201a04b6657b6bd69ec6100f4de66aebcaa0b4
Author: Andreas Huber <andih@google.com>
Date: Fri Feb 12 10:36:15 2010 -0800

Protect MPEG4Source's sanity by properly locking.

related-to-bug: 2231576
bd22c52280179b29eefac91ef7e7bbbc33d25904 09-Feb-2010 Andreas Huber <andih@google.com> Defer actual work of setDataSource given a URI to the prepare phase in order to not block the calling thread for any significant amount of time...

related-to-bug: 2431117
c23f12af0394aa2f6651968a3c8840f1af317aa1 08-Feb-2010 Andreas Huber <andih@google.com> Properly implement asynchronous preparation of media playback.

related-to-bug: 2413002
1862a33b246249630b654182afb5914da3480d4c 03-Feb-2010 Andreas Huber <andih@google.com> Fix a deadlock caused by the AudioPlayer notifying the observer that the stream had ended at the same time the observer was shutting down the AudioPlayer.

related-to-bug: 2414536
5561ccf4a8db88a2e44eac1b3ed13b4ff53a7f20 28-Jan-2010 Andreas Huber <andih@google.com> Support the specification of additional HTTP headers in the creation of a DataSource.

related-to-bug: 2393577
66b0a35c9a4136a84c3f73b1b25fcb5220138b95 27-Jan-2010 Andreas Huber <andih@google.com> Better support for HTTP streaming media content, fixes to the way HTTPDataSource streams the data, prefetcher implementation.

related-to-bug: 2295438
0726045216f576e97672ebeefc265d39c4ebaaa5 21-Jan-2010 Andreas Huber <andih@google.com> Fix circular dependency between StagefrightPlayer and AwesomePlayer that prevented proper cleanup.

related-to-bug: 2355922
733b7729ea462fae9c6899456444e28fef1c757c 14-Dec-2009 Andreas Huber <andih@google.com> AwesomePlayer now renders either remote (IOMXRenderer) or locally depending on what kind of decoder was instantiated. Split off color conversion code into its own shared library.
bfa6b2d7a1be1832ac40ed90aece1834f720b5c6 20-Nov-2009 Andreas Huber <andih@google.com> Squashed commit of the following:

commit 1efc38dc3c33fef57b759002db3965ed07a28cb0
Author: Andreas Huber <andih@google.com>
Date: Thu Nov 19 14:36:14 2009 -0800

Sending the SEEK-COMPLETE notification temporarily broke seeking backwards in time behaviour. This is now fixed.

Also, get rid of the semi-random delay after posting buffers to surface flinger in favour of delaying the buffer release until the next frame is displayed.

commit 51973062eb5ee63fd64b845d72bac517cc3369cf
Author: Andreas Huber <andih@google.com>
Date: Wed Nov 18 14:01:43 2009 -0800

Fix one more unit test, properly send seek-complete notification only after seek actually completed.

commit cb22250b34b1fcfe1bf459723a761fd003950229
Author: Andreas Huber <andih@google.com>
Date: Wed Nov 18 12:31:36 2009 -0800

Fix seek-while-paused in AwesomePlayer, revert to using FileSource if MmapSource fails.

commit 25eb9241138ddf7bb27ce90657116c5f8a94d880
Author: Andreas Huber <andih@google.com>
Date: Wed Nov 18 12:30:40 2009 -0800

Support seeking and duration in AMRExtractor, assuming all frames are the same size.

commit 44192f2ebb7ea3bbd3ba5910025692dbc6a08faa
Author: Andreas Huber <andih@google.com>
Date: Wed Nov 18 10:21:44 2009 -0800

MediaPlayerImpl is dead, long live AwesomePlayer.

commit c5b52d3c0674f5dc94db506afbce52401cceddac
Author: Andreas Huber <andih@google.com>
Date: Wed Nov 18 09:42:23 2009 -0800

New implementation of the stagefright mediaplayer.