At some point the implementation became complicated because of
SurfaceFlinger's special needs, since we are now relying on gralloc
we can go back to much simpler MemoryDealer.
Removed HeapInterface and AllocatorInterface, since those don't need
to be paramterized anymore. Merged SimpleMemory and Allocation.
Made SimplisticAllocator non virtual.
Removed MemoryDealer flags (READ_ONLY, PAGE_ALIGNED)
Removed a lot of unneeded code.
Added getRenderPosition() API to IAudioFlinger to retreive number of audio frames
written by AudioFlinger to audio HAL and by DSP to DAC.
Added getRenderPosition() API to AudioHardwareInterface to retreive number of audio frames
written by DSP to DAC.
Exposed AudioTrack::getPosition() to AudioSink() to make it available to media player.
Removed excessive log in AudioHardwareGeneric.
Fix music visualizations to also work with audiotrack callbacks, which
stagefright uses. This slightly changes the way the data is stored,
since before we were relying on the buffers being written always
being at least 4K, whereas the callbacks are generally for smaller
amounts of data. Now we append all the data to a big circular buffer,
then return chunks of that buffer for visualization. When there are
multiple things playing at the same time, this will give the wrong
result, but (1) that was the case before as well, and (2) will be
fixed once we start visualizing the mixer output instead of the
mixer inputs.
Merge commit '14f8940472217e8b0164d8f213679710d623d528' into eclair-mr2
* commit '14f8940472217e8b0164d8f213679710d623d528':
Fix media player decode function. Bug 2317821.
There was a recent change to OpenCORE that broke the MediaPlayer::decode()
function for all OpenCORE supported formats (MP3, AAC, and AMR-NB/WB). The
affect is that SoundPool is unreliable for all of these formats. This patch
changes the logic in the AudioCache object that processes messages from the
media player. The old logic was fragile. This change should make it more
robust against changes.
Merge commit '8424ec323b2bc38887370c75e2c1fcd84bcdb013' into eclair-mr2
* commit '8424ec323b2bc38887370c75e2c1fcd84bcdb013':
Set metadata retriever thread group to the caller's group.
This patch modifies the native binder interface to the metadata
retriever to pass the caller's thread group across the binder
interface. On the server side, the thread scheduler group is
set to the caller's scheduler group temporarily and restored
after the request has completed. This patch also reverts a
previous patch where the priority of the thread was forced to
a low priority foreground thread.
This should give apps more control over the priority of their
metadata retrieval, particularly allow background process to
run without hogging the CPU.
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.
commit 333057b355f8c260c549553b9a0634755c838b6a
Author: Andreas Huber <andih@google.com>
Date: Fri Nov 13 15:35:48 2009 -0800
Some more tweaks to AVC encoding on sholes.
commit 9981d0ee52ec5b8b0182aae733d1571e3ebb8390
Author: Andreas Huber <andih@google.com>
Date: Thu Nov 12 16:36:57 2009 -0800
Support for avc encoding, including sholes specific tweaks to pick the right colorspace for the camera to not require transcoding.
commit 5ba0ebbbd4efca51f3ae1f60e2ca31e7d2cf136d
Author: Andreas Huber <andih@google.com>
Date: Wed Nov 11 09:50:03 2009 -0800
Enable actual (camera) video-only recording using h.263 or mpeg4 encoding.
commit 3fd59c3526a37fe7c696f4a978925d1831c09313
Author: Andreas Huber <andih@google.com>
Date: Tue Nov 10 14:57:48 2009 -0800
Allow switching between the PV recorder implementation and one supported by stagefright.
This is controlled through the property "media.stagefright.enable-record".
Merge commit 'cfe45c775ddb5e48bf556aee7422298260eb4fd8' into eclair-mr2
* commit 'cfe45c775ddb5e48bf556aee7422298260eb4fd8':
Fix for random audio output failures, properly dup() the file descriptor in IMediaPlayer::setDataSource to assume ownership as the caller will otherwise close it.
commit 08259dd3dc9026887f9bbfedaf45866eb56ea9bc
Author: Andreas Huber <andih@google.com>
Date: Thu Nov 5 12:02:31 2009 -0800
DO NOT MERGE: Use PV for metadata extraction even if stagefright is used for playback.
commit 991832fe4dc012e51d3d9ed8d647c7f09991858f
Author: Andreas Huber <andih@google.com>
Date: Thu Nov 5 11:24:11 2009 -0800
DO NOT MERGE: Do not assert if we encounter OMX_StateInvalid. All bets are off though.
commit cec45cf302d9218fe79956cbe8a462d7ca3a10bb
Author: Andreas Huber <andih@google.com>
Date: Mon Oct 26 16:11:54 2009 -0700
DO NOT MERGE: When freeing an OMX node, attempt to transition it from its current state all the way to "Loaded" in order to properly free any allocated buffers.
commit 34a1e885ef9113d68acbc26d36fcc47fdebbed84
Author: Andreas Huber <andih@google.com>
Date: Thu Nov 5 11:10:49 2009 -0800
DO NOT MERGE: Fix heap corruptin in OMXNodeInstance.
commit 5a47f7439a1298b330541a7e4e647a8b44487388
Author: Andreas Huber <andih@google.com>
Date: Thu Nov 5 11:08:19 2009 -0800
DO NOT MERGE: Fix seek-on-initial-read behaviour of OMXCodec.
commit 45bed64722501b9f411a2940aff5aff4cc4d2e98
Author: Andreas Huber <andih@google.com>
Date: Thu Nov 5 11:02:23 2009 -0800
DO NOT MERGE: Renaming string.h to stagefright_string.h to avoid conflicts.
commit 6738e306a50196f31a73d4fc7b7c45faff639903
Author: Andreas Huber <andih@google.com>
Date: Thu Oct 15 13:46:54 2009 -0700
DO NOT MERGE: Reimplement the OMX backend for stagefright.
Besides a major cleanup and refactoring, OMX is now a singleton living in the media server, it listens for death notifications of node observers/clients that allocated OMX nodes and performs/attempts cleanup.
Changed APIs to conform to the rest of the system.
Merge commit '1d9246e8bb8de624e14c55dce57e93da18cfd7a8' into eclair-mr2
* commit '1d9246e8bb8de624e14c55dce57e93da18cfd7a8':
Make sure the visualization stops immediately when sound stops, instead of continuing for a fraction of a second.
Merge commit '3a8141416a0b1d517d4729eba4bcf914c468e20b' into eclair-mr2
* commit '3a8141416a0b1d517d4729eba4bcf914c468e20b':
Dump media recorder PID in dumpsys media.player, and fix minor bugs.
Merge commit 'e8543418783f8f8f9a6bafdaa1dd6289661eac85' into eclair-mr2
* commit 'e8543418783f8f8f9a6bafdaa1dd6289661eac85':
Run the metadataretriever at background priority. Bug 2187133.
This change forces metadata retreiver threads to background priority.
Uses an inner class to encapsulate the priority change so that it
automatically restores priority when returning to the client.
Also DataSources now must provide a method initCheck()
and DataSource::reat_at has been renamed to readAt to conform to
standard API naming guidelines.
While our hardware decoders clearly outperform the software decoders in terms
of raw throughput, their startup latency makes them less suitable for thumbnail
extraction.
Besides a major cleanup and refactoring, OMX is now a singleton living in the media server, it listens for death notifications of node observers/clients that allocated OMX nodes and performs/attempts cleanup.
Changed APIs to conform to the rest of the system.
This currently assumes 44k stereo (won't crash on other formats, but won't give the correct results either), and links statically with libspeex to get FFT data, increasing the size of libmedia by about 45kb.
1. mRetriever was initialized twice: one in the constructor and the other in the setDataSource
2. cached the mode so that setMode can still be called before setDataSource.
mRetriever won't be initialized until data source is set; thus we have to do this
This api allows to instantiate a renderer by specifying the hosting java Surface object. This hides the implementation details of (java-)Surface, (native-)Surface and friends.
commit 374ea382ee3a9e3ce17e4c6357fc40d02e362810
Author: Andreas Huber <andih@google.com>
Date: Tue Jul 28 09:54:13 2009 -0700
PV's OMX implementation now uses (spec-compliant) microseconds instead of milliseconds in buffer timestamps.
commit 8d02f8ab5d7b022ad4ad34db2a9bdeea6ce2acfe
Author: Andreas Huber <andih@google.com>
Date: Mon Jul 27 14:24:26 2009 -0700
Support for using an overlay for video playback on TI hardware.
Appears to be currently constrained to CbYCrY 16-bit colorspace.
commit d17f321cb4b15c1fea378f33a7ef5998f23dd0fc
Author: Andreas Huber <andih@google.com>
Date: Mon Jul 27 09:45:38 2009 -0700
Added '--audio-only' commandline option to stagefright tool.
commit d8beef6be5c668c46451446d87e622933371cd75
Author: Andreas Huber <andih@google.com>
Date: Fri Jul 24 13:35:00 2009 -0700
Generalize the various workarounds for OMX nodes with their own unique interpretation of the spec.
commit c7dfd53eeadf8ed5a39bf2b19b014dcd62f3324d
Author: Andreas Huber <andih@google.com>
Date: Thu Jul 23 16:06:36 2009 -0700
Fixed erroneous TI AAC decoder behaviour wrt shutdown.
The AAC decoder appears to not return out buffers on an Executing->Idle transition, implemented a workaround that does a flush on all ports followed by the Executing->Idle. Oh, and flush with OMX_ALL doesn't properly work either. Fun.
commit d6377282e75060881336578f166f9c7feacf3f8f
Author: Andreas Huber <andih@google.com>
Date: Thu Jul 23 14:06:50 2009 -0700
Apparently the "channels" parameter in AudioTrack's constructor no longer counts channels but is a bitmask of enabled destinations, update the code accordingly.
commit ff698c79e851a2e57d362e9c3a09828af4048087
Author: Andreas Huber <andih@google.com>
Date: Wed Jul 22 16:54:44 2009 -0700
Fix MPEG4 decoding using TI's hardware decoder that I broke earlier...
commit 2ef78bb87cd856eb7f0b3d7dd68782a8650c12bf
Author: Andreas Huber <andih@google.com>
Date: Wed Jul 22 15:43:18 2009 -0700
Now that the qcom decoder properly advertises its own custom colorspace, update dependent code to reflect this fact.
commit bbaec96910727080fd7c8a6907c04facb9f5220f
Author: Andreas Huber <andih@google.com>
Date: Wed Jul 22 14:32:03 2009 -0700
Finishing up previous, incomplete change.
commit 76f14a1ae816b6f434771f8d12bdad81196f351e
Author: Andreas Huber <andih@google.com>
Date: Wed Jul 22 14:25:17 2009 -0700
The TI video decoder now properly decoder AVC/H.264 content.
commit e106130d8c100d5c94603e43864a7a93cca10252
Author: Andreas Huber <andih@google.com>
Date: Wed Jul 22 08:56:04 2009 -0700
Experimental support for the TI H.264 decoder, various modifications to OMXDecoder, non-functional still.
commit 241c3062dec3447db1a1ee74558cb4b9098fc404
Author: Andreas Huber <andih@google.com>
Date: Tue Jul 21 12:13:09 2009 -0700
Enable TI hardware OMX decoders (except for AVC/H.264 which still has issues).
This particular set of OMX nodes does not appear to properly return our buffers when sending the "disable" command on a port. Rather it reqires manually flushing that port and _then_ disabling it instead.
commit 1c34506a46e32ce25f2a86f3b4250dcfc037356a
Author: Andreas Huber <andih@google.com>
Date: Tue Jul 21 08:51:35 2009 -0700
Make it simpler to switch between the stagefright player and PVPlayer.
commit 249c6de05671d403f8dd51f095d49bf190430c9c
Author: Andreas Huber <andih@google.com>
Date: Mon Jul 20 14:38:15 2009 -0700
Prepare to use soon-to-be-available hardware decoders in the OMX decoder.
Initial commit for review.
Integrated comments after patch set 1 review.
Fixed lockup in AudioFlinger::ThreadBase::exit()
Fixed lockup when playing tone with AudioPlocyService startTone()
Metadata.java:
Fixed typo 8k != 8092. The comment was correct though.
In Metadata.h, the new Metadata class is declared in the ns android::media
to limit the chances of conflict with other packages.
The MetadataType in MediaPlayerInterface is gone and moved to Metadata as
an inner typedef.
Similarly the SortedVector<MetadataType> instance have been replace by a
new type Metadata::Filter.
All the keys declared in the java counterpart are also in Metadata.h.
Metadata.cpp:
Contains the implementation of the native metadata packing.
There an associated change in the opencore package that should go in
at the same time as this one.