- Created sub-package android.media.audiofx for audio effects.
- Hid AudioEffect class contructor, methods and variables not needed by
applications
- Added more javadoc comments for AudioEffect Class
Change-Id: Ibbb40d4e714bb248aa32cf82d7763d74efae96d1
Added intents to launch audio effects control panel UI and
communicate playback state from media player applications
to effect control application/service.
Change-Id: Iede23ae11fa9f0802df5f36299dd80ea57eda376
This change unhides all public APIs for controling audio effects exposed
by the following classes:
- AudioEffect
- BassBoost
- EnvironmentalReverb
- Equalizer
- PresetReverb
- Virtualizer
- Visualizer
Also fixes several problems in javadoc.
Change-Id: I541ee4ad0232312ec720545737cbcdb8c9a82597
Added methods to AudioTrack and MediaPlayer java classes to enable use of
auxiliary audio effects. The effect can be attached and detached by specifying its
ID and the send level controlled.
Change-Id: Ie74ff54a453096a742688476f612ce355543b6f3
Audio sessions are used to associate audio effects to particular instances (or groups) of MediaPlayers or AudioTracks.
Change-Id: Ib94eec43241cfcb416590f435ddce7ab39a07640
Merge commit '28a92b2e76a13c18dc23e5239717b122a174182f' into froyo-plus-aosp
* commit '28a92b2e76a13c18dc23e5239717b122a174182f':
Fix a Javadoc to clarify when setAudioStreamType() should be called.
Merge commit '521f4f3af94e3a093a37af887d3e317a526b61a1' into eclair-plus-aosp
* commit '521f4f3af94e3a093a37af887d3e317a526b61a1':
Fix for bug 2158794. Hide MediaPlayer.invoke() and MediaPlayer.newRequest(), and Fix bad links in ToneGenerator documentation.
Merge commit 'c39d2e3c012fb96999991e30659a474f9f30f789' into eclair-plus-aosp
* commit 'c39d2e3c012fb96999991e30659a474f9f30f789':
Music visualizer support hack.
Merge commit '3e655688728e352e51dc9718490589f1bfb8622d' into eclair-mr2-plus-aosp
* commit '3e655688728e352e51dc9718490589f1bfb8622d':
Fix for bug 2158794. Hide MediaPlayer.invoke() and MediaPlayer.newRequest(), and Fix bad links in ToneGenerator documentation.
Merge commit 'a97402e1cbadbdc874afa9ffdbd23f1c62fb8177' into eclair-mr2-plus-aosp
* commit 'a97402e1cbadbdc874afa9ffdbd23f1c62fb8177':
Music visualizer support hack.
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.
IMediaPlayer.h
Added a getMetadata method that mirrors the on in MediaPlayer.java.
MediaPlayer.java
Added a native method to get the metadata from the native player.
Parse the parcel into a Metadata object.
Metadata.java
Added a stub to parse the Parcel returned by the native player into
a set of metadata.
android_media_MediaPlayer.cpp
JNI call to forward the getMetadata call.
MediaPlayerService.cpp
MediaPlayerService::Client implements the new getMetadata method added in IMediaPlayer.h
IMediaPlayer:
new setMetadataFilter method so set a filter (2 lists of allowed and blocked metadata type)
serialized in a Parcel.
MediaPlayer.java/android_media_MediaPlayer.cpp/mediaplayer.cpp
new setMetadataFilter that passes the filter down to the MediaPlayerService's binder interface.
MediaPlayerService.cpp
The Client inner class holds the allowed and blocked metadata types.
These are in 2 vectors that get populated in the setMetadataFilter.
A new shourldDropMetadata method returns true if a type of metadata should be dropped according
to the filters.
The notify method in run the metadata update notifications thru the filter and possibly drop them.
MediaPlayer.java
New method getMetadata to fetch metadata from the player.
New method setMetadataFilter to filter metadata notification and fetches.
Metadata.java
Added basic interface. Implementation incomplete.
MediaPlayer.java has 3 new methods:
* newRequest creates a Parcel that can be used to send data to the
native player using invoke.
* invoke issues synchronous calls to the native player using opaque
parcels for the request and reply.
IMediaPlayer.h has 1 new abstract method:
* invoke
The Midi and Vorbis players have a stub for these. So far only PV
makes use of that new feature.
To avoid any copy overhead, the JNI interface uses Parcel as a java
object (no serialization/copy happens at the JNI layer).
The remote interface token is inserted when the Parcel is constructed
in java. That way the parcel is already routable when it reaches
IMediaPlayer.cpp (proxy). No extra copy is needed there.
passing a null surface. The API is now enabled to change the surface while
the video is playing. This could allow orientation changes during playback
or to allow the audio track from a video to play in the background.
NOTE: There are still changes required to pmem driver to allow remapping
shared physical memory into a process in order for this to work. This
change only enables the API to send the appropriate calls when the lower
level code supports it.