e2e8fa36bd7448b59fbcdf141e0b6d21e5401d91 |
|
29-Jul-2011 |
Glenn Kasten <gkasten@google.com> |
Comments Change-Id: I1592d1979ce5f5811ff5a47b4b60db93e8670313
/frameworks/wilhelm/src/android/android_StreamPlayer.h
|
167a2af67dcc0d20e6e3e995a23a0567715e0ee1 |
|
07-Oct-2011 |
Glenn Kasten <gkasten@google.com> |
AudioPlayback_Parameters cleanup Use AudioPlayback_Parameters more consistently in parameter list of constructors. Also, StreamPlayer::StreamPlayer was over-assigning to mPlaybackParams (already assigned by its superclass's constructor). Move initialization of AudioPlayback_Parameters from each case to before the switch, as it is shared by each use case. Remove old asserts. Change-Id: I8925d36da031c80308457c7e940418d3a4e47b62
/frameworks/wilhelm/src/android/android_StreamPlayer.h
|
a0fa47f72f47fffb80ab2ae791739ce73de1e8f4 |
|
12-Sep-2011 |
Glenn Kasten <gkasten@google.com> |
Bug 5293383 ~StreamSourceAppProxy wasn't reached Fix bug where StreamSourceAppProxy destructor wasn't reached, which caused all sorts of other problems later on. To see this, enable the logs StreamSourceAppProxy::~StreamSourceAppProxy and StreamPlayer::~StreamPlayer. You'll see that StreamPlayer was destroyed, but not StreamSourceAppProxy. As StreamSourceAppProxy is child of StreamPlayer, make the reference from StreamSourceAppProxy to StreamPlayer a weak reference in case StreamSourceAppProxy's lifetime exceeds StreamPlayer. It is not supposed to any more with this fix, but the wp<> provides extra safety. StreamPlayer preDestroy no longer bypasses the preDestroy in GenericMediaPlayer. Do a full disconnect in GenericMediaPlayer::preDestroy. Push decremented reference counts for strong pointer through binder to workaround binder's "optimization". Extra error-checking in setListener and setBuffers to verify that mediaserver is calling them correctly. Use mutex mLock consistently in StreamSourceAppProxy. Add an explicit StreamSourceAppProxy::disconnect to break a circular reference, and call it in StreamPlayer destructor. Make methods private: receivedCmd_l and receivedBuffer_l. Add explicit clear during preDestroy to give up references earlier. Warning: setDataSource(NULL) is not supported by NuPlayer yet, this depends on another change in frameworks/base, so it is commented out for now. Rename mPlayerPrepared to mPreparedPlayer to avoid confusion with the enum mPlayerPrepared. Change-Id: Ie5f554c206027d22204eb86edd15489c6281b512
/frameworks/wilhelm/src/android/android_StreamPlayer.h
|
3ac5dcc05fe321e4f01918aef2e3e54e22c9a5c1 |
|
17-Sep-2011 |
Glenn Kasten <gkasten@google.com> |
Remove dead code AudioPlayback_Parameters fields trackcb and trackcbUser audioTrack_callBack_uri android_Player_androidBufferQueue_registerCallback_l GenericPlayer field mLooperPriority StreamPlayer::registerQueueCallback CAudioPlayer::mpLock AudioSfDecoder::startPrefetch_async IAndroidBufferQueue does not support AudioRecorder object android/BufferQueueSource.h #include Change-Id: I9d7cef243167e10279df452e7c62e66d8f5fe3b6
/frameworks/wilhelm/src/android/android_StreamPlayer.h
|
d1e9fd4cff80becfef5077090fc90328ba63999a |
|
22-Sep-2011 |
Glenn Kasten <gkasten@google.com> |
Bug 5267593 Workaround for crash at Destroy Call IMediaPlayer->stop() from ALooper thread for now, as NuPlayerDriver does not currently support multi-threaded clients. This fix should be reverted after NuPlayerDriver is multi-thread safe. Change-Id: I94dc91bdcc9f840f50c3ed831aa6e15e09a0f96e
/frameworks/wilhelm/src/android/android_StreamPlayer.h
|
7133228a478e16458b659946f2180ecddd13fda7 |
|
09-Sep-2011 |
Glenn Kasten <gkasten@google.com> |
Bug 5287555 create StreamSourceAppProxy once Create StreamSourceAppProxy once in the StreamPlayer constructor, rather than dynamically in StreamPlayer::registerQueueCallback. As StreamPlayer::registerQueueCallback can be called multiple times (or even not at all), this guarantees we always have only one StreamSourceAppProxy that never changes. Also fix bug where we weren't using a stream protector for AudioPlayer with MPEG-2 TS AndroidBufferQueue data source (we weren't calling setCallbackProtector on it). This has some unexpected side benefits of simplifying the code: - remove unused parameters and member variables - mAppProxyLock not needed since the callback protector is created early - remove GenericPlayer::setCallbackProtector - inline android_StreamPlayer_realize_l for the use case AUDIOPLAYER_FROM_TS_ANDROIDBUFFERQUEUE to be like MediaPlayer Change-Id: I090c11cde9474285185481192dba2b5c01338a50
/frameworks/wilhelm/src/android/android_StreamPlayer.h
|
bc0e642e6c1a51b3ae3a02d490d94b03e718e6b5 |
|
02-Sep-2011 |
Jean-Michel Trivi <jmtrivi@google.com> |
Fix 5249076 Don't let the shared memory buffer drain Whenever pushing data to the shared memory from the AndroidBufferQueue, post a message to do the same operation again if there is still room in the shared memory. This ensures the consumption of data will keep the shared memory buffer full, not the notification of space available in shared memory, which may happen while the Android Buffer Queue is empty (after a clear() for instance). Change-Id: I397d70ebb927fa6a1d0fb97321a70db0440b96fe
/frameworks/wilhelm/src/android/android_StreamPlayer.h
|
b712aebe63a6c50cc01f4493282fc77578242976 |
|
02-Sep-2011 |
Jean-Michel Trivi <jmtrivi@google.com> |
Bug 5249076 When starting to stream, have at least one buffer in shared mem StreamPlayer is receiving notifications from the MediaPlayer that a buffer in shared memory is available during playback, which causes StreamPlayer to consume data from the AndroidBufferQueue. If the shared memory is drained while the player is paused, there will be no new notification of a buffer in shared memory being available to start the cycle of consumption from the Android buffer queue. This change causes StreamPlayer to consume from the buffer queue to fill one buffer in shared memory. A subsequent change will change the logic to make sure the consumption from the buffer queue fills as much of the shared memory as possible. Change-Id: I886832629dd5ef449719b77899ebdcc7ffc64330
/frameworks/wilhelm/src/android/android_StreamPlayer.h
|
485a038f9f0f898227b8ab4218e94c5d56b6ed0b |
|
24-Aug-2011 |
Glenn Kasten <gkasten@google.com> |
Bug 5193695 Fix crash after MediaPlayer destroyed The StreamSource callback thread was continuing to run after the MediaPlayer object was destroyed. Fixed by adding a callback protector and a pre-destroy hook. GenericMediaPlayer::preDestroy now also calls MediaPlayer::stop just in case. Change-Id: I5bd771d4d1936f433d2a8c9959593782c96daed9 Miscellaneous: - added an explicit destructor on CMediaPlayer::mAVPlayer for consistency (probably not a bug since there was a clear on it earlier) - updated comments for CallbackProtector - made some CallbackProtector fields private since no sub-classes yet
/frameworks/wilhelm/src/android/android_StreamPlayer.h
|
2b06e20ae32388f6e1dfd088d9773c34e6b1cb45 |
|
29-Mar-2011 |
Jean-Michel Trivi <jmtrivi@google.com> |
Reduce include noise in SL and XA class definitions In classes.h: we should only have to include the headers for the objects that are actually stored as member variables of the OpenSL ES and OpenMAX AL objects (so here AudioTrackProtector, Effect, and GenericPlayer). In CMediaPlayer.c: remove useless includes and change the video surface function prototypes to use const refs to strong pointers instead of pointers to access the GenericMediaPlayer objects. Note that android_SfPlayer.h is still in sles_allinclusive.h because it will be dealt with when the SfPlayer functionality is absorbed under LocAVPlayer. Change-Id: Ic2c9459862588399d9545a247cc15341effc0f66
/frameworks/wilhelm/src/android/android_StreamPlayer.h
|
63c002ab68761be0eace98f28320d8eb2f3f7695 |
|
28-Mar-2011 |
Jean-Michel Trivi <jmtrivi@google.com> |
Clean up main header There are many includes in sles_allinclusive.h that should be moved to the files that rely on those headers. This is a first cleanup to move Android audio effect related headers to where they belong. + one relocation for a media server related file. More to come with AudioPlayer refactoring. Change-Id: I181dde96db522d9cfb537dffea18ba57f855b99e
/frameworks/wilhelm/src/android/android_StreamPlayer.h
|
1c853a41d9d9886e60618a7c878ce3912f46bf3c |
|
15-Mar-2011 |
Jean-Michel Trivi <jmtrivi@google.com> |
Bug 3329759 callback mask for TS streaming - declare a "buffer event" item key and the event mask matching the OpenSL ES 1.1 buffer queue event mask - added a buffer state field in AdvancedBufferHeader to keep track of the lifecycle of a buffer in the queue - in StreamPlayer, store a constant to be sent as the item each time a buffer is dequeued because it's been processed - fix bug in playStream test app where after clearing the queue, the data was read to the last dequeued buffer address, rather than at the beginning of the cache. Change-Id: I07141c8a913dfedeb9fde41d80afbce794ab7379
/frameworks/wilhelm/src/android/android_StreamPlayer.h
|
e7bfcdc183454ec959ff51342f0973cabba219b2 |
|
08-Mar-2011 |
Jean-Michel Trivi <jmtrivi@google.com> |
Bug 3329759 Implement Clear() and GetState() for MPEG-2 TS - implemented Clear() in AndroidBufferQueue - declared and implemented GetState() in AndroidBufferQueue - fixed typo in AudioPlayer_to_android.cpp that cause a "case" to be compiled as a label (no unused label warning from compiler) - more test in sandbox/streamSource Change-Id: If4eede16430cda943224bf950669cc105ac2f894
/frameworks/wilhelm/src/android/android_StreamPlayer.h
|
70c49ae2867094072a4365423417ea452bf82231 |
|
07-Mar-2011 |
Jean-Michel Trivi <jmtrivi@google.com> |
Bug 3329759 support commands in SLAndroidBufferQueueItf Support for EOS, DISCONTINUITY, and DISCONTINUITY with a PTS. - in IAndroidBufferQueue structure, added buffer type - modified AdvancedBufferHeader structure to have a buffer type-specific structure that contains all the items for each buffer - added parsing of items when enqueueing a buffer - enforce buffer size enqueue to be a multiple of MPEG-2 TS block size for buffer of the corresponding types - when enqueueing a buffer on an empty queue, implemented an asynchronous notification on StreamPlayer to consume the newly queued buffer. Verified this kicks off playback after having starved the framework for buffers. - report unknown duration when using AndroidBufferQueue Change-Id: I9bde97a6c6ffca7d376b4963313b820b35f50a26
/frameworks/wilhelm/src/android/android_StreamPlayer.h
|
d158d31a6bbb06426b71c3d097b7768bc3fb79a3 |
|
04-Mar-2011 |
Jean-Michel Trivi <jmtrivi@google.com> |
Bug 3329759 TS streaming over SLAndroidBufferQueueItf Modify the SLAndroidBufferQueueItf interface to offer a model where buffers of data can be queued along with commands (messages) when used for playback, or buffers of data can be received along with metadata (messages) changes: - new callback and enqueue functions in SLAndroidBufferQueueItf and XAAndroidBufferQueueItf. - definition of a new struct, AdvancedBufferHeader, for the buffers in the queue. - decoupling of the "buffer available to be filled" from SF and the call to the ABQ callback. Implemented in new file AndroidBufferQueueSource.cpp - source/sink checks and memory allocation when creating an AudioPlayer or MediaPlayer that uses SLAndroidBufferQueueItf, and verifying the data fed to the ABQ is declared as SL_CONTAINERTYPE_MPEG_TS - updated tests/native-media XA demo code, and tests/sandbox/streamSource to use the new interface. Change-Id: I48e44f346e718041d835fde51e349923fcc1f4b1
/frameworks/wilhelm/src/android/android_StreamPlayer.h
|
68d56b8ebaf60184a3aef988e3d2b09ed8b88c05 |
|
24-Feb-2011 |
Jean-Michel Trivi <jmtrivi@google.com> |
OpenMAX AL: consolidate MediaPlayer implementations under superclass The OpenMAX AL MediaPlayer object has two implementations: one for playing from URI/FD (LocAVPlayer) and one for playing from AndroidBufferQueue (StreamPlayer). They both inherit from AVPlayer. This CL makes LocAVPlayer and StreamPlayer inherit from GenericMediaPlayer (new name of AVPlayer) which encapsulates the interaction with an android::MediaPlayer instance running in the media server process. Also it makes GenericMediaPlayer inherit from GenericPlayer, the player superclass also used in OpenSL ES. After this CL, the OpenMAX AL and OpenSL ES have a common class hierarchy for their players. Change-Id: I5f6e279fc29b7f6f26c9ed5c83a9455cfda88ff4
/frameworks/wilhelm/src/android/android_StreamPlayer.h
|
13837cf3f7be0eb8b1a9552bd99a89f98c987720 |
|
01-Feb-2011 |
Jean-Michel Trivi <jmtrivi@google.com> |
OpenSL ES: support decode to PCM buffer queue Created a new audio player class, APlayer, from which we derive subclasses to encapsulate OpenSL ES AudioPlayer implementations: - ASfPlayer derives from APlayer and encapsulates StageFright functionality for audio decoding to a buffer - ADecoder derives from ASfPlayer and encapsulates rendering the decoded audio data to a callback function. It interfaces with the OpenSL ES Buffer Queue interface to pass the decoded data back to an OpenSL ES application. For OpenSL ES, to support decoding to a Buffer Queue, we now allow an AudioPlayer to have its sink be a PCM buffer queue. Change-Id: I9aefeb0375a71f7ca770c5c62b4fb8faf59c9c23
/frameworks/wilhelm/src/android/android_StreamPlayer.h
|
262059f71a68edc5e510427c63f5f1623d3672a8 |
|
12-Jan-2011 |
Glenn Kasten <gkasten@google.com> |
Directory re-organization Change-Id: I8e3f12a22e765d36ddefd87edf204735b25474f6
/frameworks/wilhelm/src/android/android_StreamPlayer.h
|