History log of /frameworks/wilhelm/src/android/MediaPlayer_to_android.cpp
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
d0081ece36dcb6ecdadeb9fc0ee912cffb7effc7 28-Jul-2014 Eric Laurent <elaurent@google.com> rename AudioSystem::newAudioSessionId()

Rename AudioSystem::newAudioSessionId() to
AudioSystem::newAudioUniqueId() as it can be used
also for I/O handles.

Bug: 12378680.

Change-Id: I5f0eaaadc21ff2aacf81670490ad42c54537d86b
55cb1cdff4e65e9064df49bc8636fe522370b01b 15-Feb-2013 Mathias Agopian <mathias@google.com> Refactoring: Rename SurfaceTextureClient to Surface

Change-Id: Ibc86143858a3c4fe31fb43af0b22087348b8c204
e21f91df7afb1175ddb5b0045ebb0d5338df2535 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: I54f19904e325518a3af8fe23c018d3c0bb6bd807
01e4a8ff63523bba5c8f919a72e0adb66daf4b98 26-Feb-2012 Mathias Agopian <mathias@google.com> cleanup includes

Change-Id: Ia98b76b2e0c49ee257e1f31c61c2d6f72a9fe894
a6c69c7e1665b38da8d6784e65210acbe501b92c 06-Jan-2012 Steve Block <steveblock@google.com> Rename (IF_)LOGW(_IF) to (IF_)ALOGW(_IF) DO NOT MERGE

See https://android-git.corp.google.com/g/157065

Bug: 5449033
Change-Id: I270cbf7b920d5f2fbb5f345f3c88426697c4391d
72042d4448cee63528c619537321ba73944c6382 16-Nov-2011 Glenn Kasten <gkasten@google.com> Cleanup CreateAudioPlayer and CreateMediaPlayer

Fix minor bug in MediaPlayer, it was missing an assignment if invalid locator:
mp->mAndroidObjType = INVALID_TYPE;

- add placeholders for android::AudioSystem::acquireAudioSessionId and
- remove duplicate initialization of some fields.
- android_audioPlayer_create can never fail, so make it return void
- add comments
- remove unused method audioPlayer_setInvalid
- simplify android_audioPlayer_create

Change-Id: I237b796f6b828cf53bf2c628e52a05a4bdf86c06
aeaf3abab0929cb82222e139cba0a663eb6db8f5 11-Nov-2011 Glenn Kasten <gkasten@google.com> Merge "MediaPlayer kEventPrepared similar to AudioPlayer"
7f250a17c145382b866d5d4d7ef23d65fada6236 30-Sep-2011 Glenn Kasten <gkasten@google.com> MediaPlayer kEventPrepared similar to AudioPlayer

Now that AudioPlayer kEventPrepared logic for successful/unsuccessful
prepare completion has been combined, make MediaPlayer work the same
way. This will make it easier to merge similar code AudioPlayer and
MediaPlayer in an upcoming CL.

Change-Id: Iaa58dcc85b0ede82036c0a5f45d61d0e7853fe0b
3c59249869119ec0f1dd53b8b3045f785c514046 08-Nov-2011 Andreas Huber <andih@google.com> am e87e28c3: Merge "Remove MediaPlayer::setVideoSurface legacy." into ics-mr1

* commit 'e87e28c32f35ed40a12b18ef51cc6af0f44ec270':
Remove MediaPlayer::setVideoSurface legacy.
e2e8fa36bd7448b59fbcdf141e0b6d21e5401d91 29-Jul-2011 Glenn Kasten <gkasten@google.com> Comments

Change-Id: I1592d1979ce5f5811ff5a47b4b60db93e8670313
241b9c06493479dc632a8851097c193b724a2b41 26-Oct-2011 Andreas Huber <andih@google.com> Remove MediaPlayer::setVideoSurface legacy.

Change-Id: I95aa181f39b375087b30ac65fea37589108c9f16
6e413fb8c5cde438092736e7fb58abb48e51637d 28-Oct-2011 Glenn Kasten <gkasten@google.com> Merge "Bug 5526807 inform client of errors after prepare" into ics-mr0
5e4d65e369f28746767aba11b618dee314bb8197 27-Oct-2011 Glenn Kasten <gkasten@google.com> Bug 5526807 inform client of errors after prepare

Change-Id: Ic5c88f8e1c8e7d6226a7a71a2a89a70f0fa876f8
9d8a98601357c0669dca4de63e43196c0a70553d 27-Oct-2011 Glenn Kasten <gkasten@google.com> Bug 5526272 ignore player events during destroy

Change-Id: I45c67660c7cbfabcf66b0ffffbaedf56c17453d7
b66dfcb9e7b944c45927314ef2282d6cc95cfa0a 14-Oct-2011 Glenn Kasten <gkasten@google.com> Bug 5267571 disable callbacks earlier

Change-Id: I0da3b85dcce93a8a250b8b225a998b80d92f436b
3ac5dcc05fe321e4f01918aef2e3e54e22c9a5c1 17-Sep-2011 Glenn Kasten <gkasten@google.com> Remove dead code

AudioPlayback_Parameters fields trackcb and trackcbUser
GenericPlayer field mLooperPriority
IAndroidBufferQueue does not support AudioRecorder object
android/BufferQueueSource.h #include

Change-Id: I9d7cef243167e10279df452e7c62e66d8f5fe3b6
f66b430471d691de4bf7b6bbc1a6527897f61cbd 17-Sep-2011 Glenn Kasten <gkasten@google.com> Set mAndroidObjState to ANDROID_READY once

The mAndroidObjState field should only be set to ANDROID_READY once,
after prepare completes either successfully or unsuccessfully.
Remove a couple of redundant assignments.

Change-Id: I4b73bc94aea4f8d4afc1111d7fcdccce4bf8a92d
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

Change-Id: I090c11cde9474285185481192dba2b5c01338a50
251f90a1a07a721e873a5bfbee96a11cfc33b200 07-Sep-2011 Jean-Michel Trivi <jmtrivi@google.com> Merge "Fix 5249076 Don't let the shared memory buffer drain"
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

Change-Id: I397d70ebb927fa6a1d0fb97321a70db0440b96fe
136965c92c625d52a6cbad42f82a2091d7769c9c 02-Sep-2011 Glenn Kasten <gkasten@google.com> MediaPlayer GetPosition returns 0 before prefetch

This makes MediaPlayer work the same way as AudioPlayer,
to return current position as zero before prefetch started.

Change-Id: I538919d05074002d46c3dc1632caa4d5a85e8fad
f5ff1a75f55677163bd9a8bd804e8f5c33ef592c 30-Aug-2011 Glenn Kasten <gkasten@google.com> Bug 5244675 handle the switch cases of AAC decode

- Play::GetPosition: explicitly list decode case and return media
player time; previously returned zero.
- Seek::SetLoop for AudioPlayer or MediaPlayer: return
SL_RESULT_FEATURE_UNSUPPORTED on non-URI data source. This is
correctly passed up to app.

The remaining have no immediate impact, but should make future maintenance easier:
- Play::GetDuration: explicitly list decode case and return unknown time;
no impact as already covered by default.
- Seek::SetPosition: explicitly list decode case and handle as no-op; no
impact as already covered by default.
- Seek::SetPosition for AudioPlayer or MediaPlayer: return
SL_RESULT_FEATURE_UNSUPPORTED with unsupported data source e.g. buffer
queue. No impact as the result is currently ignored, but added a
FIXME to pass this up to app.
- AndroidBufferQueue::Clear: explicitly list decode case as a no-op
other than the partial clear of upper layer queue.
- AndroidBufferQueue::onRefilled: explicitly list decode case as
a no-op, but with a FIXME that this may need more work later.

Change-Id: I53c8a0b736f32cd265ee9c94a70127d4f80869b5
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
- 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
dd177e2d3923d4653eaa4226f07b89a999907970 02-Aug-2011 Glenn Kasten <gkasten@google.com> Bug 5105712 synchronous callbacks

After GetPosition is made synchronous, it is safer to make client
callbacks synchronous also.

Change-Id: I2688f709ed672aaa62d046d5f95db1b81504c9e3
8478d83d1e42e2b4e252cc7e7135fd872bb36982 24-Aug-2011 Glenn Kasten <gkasten@google.com> Merge "Bug 5198051 MediaPlayer prefetch status interface"
d35a79e84406f855c4541b129106e8a3ce33abc6 24-Aug-2011 Glenn Kasten <gkasten@google.com> Merge "Bug 5198051 MediaPlayer StreamInformation various"
4b9966d5e0569707f23ab2b22e584f7117adc179 24-Aug-2011 Glenn Kasten <gkasten@google.com> Merge "Bug 5198051 MediaPlayer PLAYEVENT_HEAD* callbacks"
c623c89c0a32c5fc77c998f1742d58e7be69e8c1 22-Aug-2011 Glenn Kasten <gkasten@google.com> Bug 5198051 MediaPlayer prefetch status interface

Change-Id: I426c870f803df0a7052f17be955ba797a814b4cc
bcfe680db1e392f3bb29382c2e15e89c3af783ed 22-Aug-2011 Glenn Kasten <gkasten@google.com> Bug 5198051 MediaPlayer PLAYEVENT_HEAD* callbacks

Change-Id: Ibb04fbf727997281bb77fd22c51cd90bd044e505
cfc58893afb25621c08372e35d7ee9e69cf37656 23-Aug-2011 Glenn Kasten <gkasten@google.com> Merge "Bug 5198051 MediaPlayer play state PAUSED at end"
cb441acdda6f8e81d44fcdaadd4ff7ab3d3e367b 21-Aug-2011 Glenn Kasten <gkasten@google.com> Bug 5198051 MediaPlayer StreamInformation various

Fix uninitialized field frameRate.

QueryMediaContainerInformation returns XA_RESULT_PARAMETER_INVALID if
info is NULL, otherwise it copies the information via the info pointer,
and returns XA_RESULT_SUCCESS.


Simplify RegisterStreamChangeCallback.

Change-Id: I261ac0c053be0de7bac5fc80661b979f7f9c84b6
3d332ff421e7179c36fb652771cc8ded53383729 22-Aug-2011 Glenn Kasten <gkasten@google.com> Bug 5198051 MediaPlayer support GetDuration

Change-Id: I09d9292685d82b88cddd243e6e7f5410ffaa2248
e37c62f0691f9a137afae60f9d6dbd1a65d36aed 22-Aug-2011 Glenn Kasten <gkasten@google.com> Bug 5198051 MediaPlayer play state PAUSED at end

Change-Id: I9160336a9e74b2f2f501cb94d1f24047b2979b76
35ac702ee1ad91e5c8748c12450222d50b366a52 08-Aug-2011 Glenn Kasten <gkasten@google.com> Bug 5126938 dependency for video sinks

Fixing bug 5126938 will involve configuring the video sink in two places:
at the initial data locator when creating the MediaPlayer object, and
then later in the IAndroidConfiguration interface. This CL is preparation
for that.

- Abstract out common code into android_Player_setNativeWindow.
- Move the code for checking and initializing the video sink from an
#ifdef ANDROID in the CMediaPlayer_Realize portable code to into
platform-specific android_Player_realize.
- Only set one of mSurface or mSurfaceTexture to non-NULL.
- For methods which can't fail, replace the SLresult return value by void.

Change-Id: Iec8fd91e1a6de45eb64241b35e3f7d7faf63d727
f731cc1f3cd5911b0aff730bd504ee47a3ba3c6c 03-Aug-2011 Glenn Kasten <gkasten@google.com> Merge "Bug 5109153 Remove log spam"
ecc4fe22e076c4e5c891d823b01db1a683ba6690 02-Aug-2011 Glenn Kasten <gkasten@google.com> Bug 5109153 Remove log spam

Change-Id: I6c0c742bfa3f0078968dc5e2ea3578ad786067c5
99b927751677abfb60a388d65dfeed1fed1db12c 28-Jul-2011 Glenn Kasten <gkasten@google.com> Bug 5080320 MediaPlayer volume

- re-factor volume-related code yet again
- remove dead variables mAmplFromVolLevel, mAmplFromStereoPos, mDirectLevel
- add placeholders for kEventPrefetchFillLevelUpdate and kEventPrefetchStatusChange

Known issues:
- MPEG-2 TS doesn't yet implement the ability to query channel count, so default to stereo

Change-Id: Ic0f2297b267dc3d380755e8d314e1d5f0f659d7c
fa2bd93c3a9852a1f879663eeff598d13cf8fa81 25-Jul-2011 Glenn Kasten <gkasten@google.com> Bug 4599730 fix mute solo, channel count, volume

Change-Id: I1624c744168233c4ef79f2cd3090447b8aa7d53b
64621eac543d714d4d3f7cb9c24205f2ddc59201 21-Jul-2011 Glenn Kasten <gkasten@google.com> Bug 5068269 Fix assertion failure after prepare

Change-Id: I890a29eeef9021c7432da8a0ccb409846e107097
85133c817f6f387cd7d072988a8818f18bb53702 12-Jul-2011 Jean-Michel Trivi <jmtrivi@google.com> Async callback queue updates, applied to XAStreamInformationItf

Updated the asynchronous callback queue system to support 'piipp'
callback signatures.

Applied this update to make the StreamInformation property change
event notification asynchronous.

Made the XA_PLAYEVENT_HEADATEND also use the callback queue.

Change-Id: I6fd8dee5eefa1d09006661f69de302a8b7fff0f5
35a5a30fdad179ccf38d8d756590411326159a89 12-Jul-2011 Jean-Michel Trivi <jmtrivi@google.com> Implement XAPlayItf::GetPosition on MediaPlayer

The play interface was only in place for routing calls to an
AudioPlayer in OpenSL ES, not in OpenMAX AL for a MediaPlayer.

Change-Id: Icf514be428396264252874faf1060c76ddee9545
a8179ea15c4ff78db589d742b135649f0eda7ef2 13-Apr-2011 Glenn Kasten <gkasten@google.com> Fix build warnings caused by the 'long' change

Change-Id: I34e74d723ae7fd829dd140614928d7880e669f03
36b700a829b7a02b873b4cd0cdb0a95342b20a31 11-Apr-2011 Jean-Michel Trivi <jmtrivi@google.com> Use reference to sp on GenericPlayer

When an object like GenericPlayer is stored in CAudioPlayer or
CMediaPlayer by a sp, don't use a pointer to GenericPlayer when
the object is passed as a function parameter, but rather use
a reference to the sp that maintains it.

Change-Id: I49ff219618ac4b657deb43cfffb65f0e0dd6d58d
92b245bf8828db9e469febebbe8774c00570b5b9 07-Apr-2011 Jean-Michel Trivi <jmtrivi@google.com> OpenMAX AL: support the SeekItf and XA_PLAYEVENT_HEADATEND

Implemented support for:
- seeking to a position
- looping (only over full duration is supported, no loop points)
- notification of end of content reached
This is all for the playback of URIs or FDs.

Change-Id: I015c40e66feb7ac280459895f5f7915ac964df31
b05ea38e5131001884aa226f90fd50cf594a23f3 06-Apr-2011 Jean-Michel Trivi <jmtrivi@google.com> OpenSL ES / OpenMAX AL code clean up

Do not use cryptic acronyms for Android object type definitions.

Harmonize object state and type naming conventions.

Change-Id: I62bed7aba2e0b9ea0c47264af8e3cf29f74746a8
4ee246c55533bdab8ab5fa0f0581744fe58e7c91 29-Mar-2011 Jean-Michel Trivi <jmtrivi@google.com> Move support for SL URI and FD playback under GenericPlayer class

The SfPlayer class was implementing URI and FD decode and playback
in the application process. This CL removes this class entirely
and moves its functionality under the GenericPlayer class. This
means that the playback of URIs and FDs is now implemented through
an android::MediaPlayer object running in the media service.

The SfPlayer header had many StageFright and system includes, which
are now moved to the relevant files where they are required,
instead of automagically coming from sles_allinclusive.h.

Note that this CL breaks support for the following OpenSL ES features
due to missing Android MediaPlayer features:

Support for those features will be reintegrated in subsequent CLs.

Change-Id: I8d7f6ea006eb7b876ef1ca1909d74b4517335850
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
e9236d046fdb5cac0696c42e03443a2439188146 16-Mar-2011 Jean-Michel Trivi <jmtrivi@google.com> Bug 3329759 clean logs, PTS should be unsigned

- Don't pollute logs.
- Save MPEG-2 PTS as an unsigned 64bit value, negative values are

Change-Id: I51d427789dd1e42219a63c68159f2e28628f0448
37dc2fccf3f122b79ebd554de209d0a3c94ae161 09-Mar-2011 Jean-Michel Trivi <jmtrivi@google.com> Bug 3329759 Implement streamInformation and volume in OpenMAX AL

- Implement StreamInformation for video size notification.
- Implement the XAVolumeItf for volume control
- Fix bug in GUID -> MPH hash.
- Fixed typo in GenericPlayer::pause() log
- Do not signal a discontinuity automatically when the ABQ is
cleared because clearing the queue doesn't imply there will
be a discontinuity in the data (e.g. the same data that was
cleared could be reenqueued)
- In "native-media" test app: add test code to exercise the
XAVolumeItf functionality.

Change-Id: I9f69f8cacbdce51b6d96d60141ec1d0f645df991
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
- more test in sandbox/streamSource

Change-Id: If4eede16430cda943224bf950669cc105ac2f894
70c49ae2867094072a4365423417ea452bf82231 07-Mar-2011 Jean-Michel Trivi <jmtrivi@google.com> Bug 3329759 support commands in SLAndroidBufferQueueItf

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
- 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
ad1ab1d13a9b043202b9d5cdc1d8c4ef66cbbca8 05-Mar-2011 Glenn Kasten <gkasten@google.com> Bug 3329759 Surface texture as video sink

XA_DATALOCATOR_NATIVEDISPLAY now allows either a Surface or SurfaceTexture
together with a JNIEnv *.

Miscellaneous fixes:
- Clarify test button labels.
- Line length 100.

Change-Id: I3f3c604dfda3cf66ef7d7adc8689564a83623b2f
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)

- 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
- updated tests/native-media XA demo code, and
tests/sandbox/streamSource to use the new interface.

Change-Id: I48e44f346e718041d835fde51e349923fcc1f4b1
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
b2aeb0f1009555181dabb944fe05901cb6e6f632 12-Jan-2011 Jean-Michel Trivi <jmtrivi@google.com> More file renames and header inclusion reorder

More file renames and include reordering to separate Android
classes, and the mapping of the C OpenSL ES and OpenMAX AL
function calls to the Android implementation.

Change-Id: Id6f63af80bd581ed9cab495e2c11a86589ecf6c9