19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* 29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2007 The Android Open Source Project 39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you may not use this file except in compliance with the License. 69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You may obtain a copy of the License at 79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and 149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License. 159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#ifndef ANDROID_MEDIAPLAYER_H 189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#define ANDROID_MEDIAPLAYER_H 199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 200795272aa226f4e965968a03daddc53ce30b7cdaMathias Agopian#include <binder/IMemory.h> 219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#include <media/IMediaPlayerClient.h> 229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#include <media/IMediaPlayer.h> 2334bbc22cbca0004475788f06be2300fef23c6a52James Dong#include <media/IMediaDeathNotifier.h> 24fc301b0bb5c635c6bb51b48c504a8db5f9010e5cDave Burke#include <media/IStreamSource.h> 259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 26256430093679e1d62b54fb0c852126e54d162f6fAndreas Huber#include <utils/KeyedVector.h> 27256430093679e1d62b54fb0c852126e54d162f6fAndreas Huber#include <utils/String8.h> 28256430093679e1d62b54fb0c852126e54d162f6fAndreas Huber 29c85ca5d6b573e1a663a10950578220b4580c285cJamie Gennisclass ANativeWindow; 30c85ca5d6b573e1a663a10950578220b4580c285cJamie Gennis 319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectnamespace android { 329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 33000479f9e325b4e426a67033abd92d47da412725Mathias Agopianclass Surface; 34cc562a3576a6a8096626387472e05e8bee03352aGlenn Kastenclass ISurfaceTexture; 35000479f9e325b4e426a67033abd92d47da412725Mathias Agopian 369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectenum media_event_type { 379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project MEDIA_NOP = 0, // interface test message 389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project MEDIA_PREPARED = 1, 399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project MEDIA_PLAYBACK_COMPLETE = 2, 409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project MEDIA_BUFFERING_UPDATE = 3, 419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project MEDIA_SEEK_COMPLETE = 4, 429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project MEDIA_SET_VIDEO_SIZE = 5, 43162ee49e1ce8800de80697fdd0e0e42ad7e9374eGloria Wang MEDIA_TIMED_TEXT = 99, 449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project MEDIA_ERROR = 100, 45c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project MEDIA_INFO = 200, 469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}; 479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 48c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project// Generic error codes for the media player framework. Errors are fatal, the 49c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project// playback must abort. 50c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project// 51c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project// Errors are communicated back to the client using the 52c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project// MediaPlayerListener::notify method defined below. 53c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project// In this situation, 'notify' is invoked with the following: 54c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project// 'msg' is set to MEDIA_ERROR. 55c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project// 'ext1' should be a value from the enum media_error_type. 56c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project// 'ext2' contains an implementation dependant error code to provide 57c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project// more details. Should default to 0 when not used. 58c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project// 59c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project// The codes are distributed as follow: 60c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project// 0xx: Reserved 61c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project// 1xx: Android Player errors. Something went wrong inside the MediaPlayer. 62c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project// 2xx: Media errors (e.g Codec not supported). There is a problem with the 63c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project// media itself. 64c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project// 3xx: Runtime errors. Some extraordinary condition arose making the playback 65c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project// impossible. 66c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project// 67c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Projectenum media_error_type { 68c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project // 0xx 69c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project MEDIA_ERROR_UNKNOWN = 1, 70c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project // 1xx 71c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project MEDIA_ERROR_SERVER_DIED = 100, 72c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project // 2xx 73c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project MEDIA_ERROR_NOT_VALID_FOR_PROGRESSIVE_PLAYBACK = 200, 74c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project // 3xx 75c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project}; 76c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project 77c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project 78c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project// Info and warning codes for the media player framework. These are non fatal, 79c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project// the playback is going on but there might be some user visible issues. 80c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project// 81c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project// Info and warning messages are communicated back to the client using the 82c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project// MediaPlayerListener::notify method defined below. In this situation, 83c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project// 'notify' is invoked with the following: 84c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project// 'msg' is set to MEDIA_INFO. 85c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project// 'ext1' should be a value from the enum media_info_type. 8662e73f466e52b98ecc2eef85010618a655b40924Ravi K Yenduri// 'ext2' contains an implementation dependant info code to provide 87c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project// more details. Should default to 0 when not used. 88c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project// 89c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project// The codes are distributed as follow: 90c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project// 0xx: Reserved 91c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project// 7xx: Android Player info/warning (e.g player lagging behind.) 92c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project// 8xx: Media info/warning (e.g media badly interleaved.) 9332f82774884bdd709789ab9f3ccdf5b972ff7681Nicolas Catania// 94c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Projectenum media_info_type { 95c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project // 0xx 96c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project MEDIA_INFO_UNKNOWN = 1, 97c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project // 7xx 98c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project // The video is too complex for the decoder: it can't decode frames fast 99c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project // enough. Possibly only the audio plays fine at this stage. 100c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project MEDIA_INFO_VIDEO_TRACK_LAGGING = 700, 1014d61f602bf67fe61256c23f090d6119992ad5160Andreas Huber // MediaPlayer is temporarily pausing playback internally in order to 1024d61f602bf67fe61256c23f090d6119992ad5160Andreas Huber // buffer more data. 1034d61f602bf67fe61256c23f090d6119992ad5160Andreas Huber MEDIA_INFO_BUFFERING_START = 701, 1044d61f602bf67fe61256c23f090d6119992ad5160Andreas Huber // MediaPlayer is resuming playback after filling buffers. 1054d61f602bf67fe61256c23f090d6119992ad5160Andreas Huber MEDIA_INFO_BUFFERING_END = 702, 106a9d0febdd0f0502ec4f29f77b742e11ceae8a30eJames Dong // Bandwidth in recent past 107a9d0febdd0f0502ec4f29f77b742e11ceae8a30eJames Dong MEDIA_INFO_NETWORK_BANDWIDTH = 703, 108a9d0febdd0f0502ec4f29f77b742e11ceae8a30eJames Dong 109c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project // 8xx 110c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project // Bad interleaving means that a media has been improperly interleaved or not 111c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project // interleaved at all, e.g has all the video samples first then all the audio 112c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project // ones. Video is playing but a lot of disk seek may be happening. 113c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project MEDIA_INFO_BAD_INTERLEAVING = 800, 114c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project // The media is not seekable (e.g live stream). 115c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project MEDIA_INFO_NOT_SEEKABLE = 801, 116b2c693919be966f179080a9ec70a7a82dbf57627Nicolas Catania // New media metadata is available. 117b2c693919be966f179080a9ec70a7a82dbf57627Nicolas Catania MEDIA_INFO_METADATA_UPDATE = 802, 118c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project}; 119c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project 120c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project 1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectenum media_player_states { 1239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project MEDIA_PLAYER_STATE_ERROR = 0, 1249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project MEDIA_PLAYER_IDLE = 1 << 0, 1259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project MEDIA_PLAYER_INITIALIZED = 1 << 1, 1269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project MEDIA_PLAYER_PREPARING = 1 << 2, 1279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project MEDIA_PLAYER_PREPARED = 1 << 3, 1289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project MEDIA_PLAYER_STARTED = 1 << 4, 1299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project MEDIA_PLAYER_PAUSED = 1 << 5, 1309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project MEDIA_PLAYER_STOPPED = 1 << 6, 1319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project MEDIA_PLAYER_PLAYBACK_COMPLETE = 1 << 7 1329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}; 1339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1346ff9b812abe388478bbaba118a580c3f4a30c863Glenn Kasten// Keep KEY_PARAMETER_* in sync with MediaPlayer.java. 1356ff9b812abe388478bbaba118a580c3f4a30c863Glenn Kasten// The same enum space is used for both set and get, in case there are future keys that 1366ff9b812abe388478bbaba118a580c3f4a30c863Glenn Kasten// can be both set and get. But as of now, all parameters are either set only or get only. 1376ff9b812abe388478bbaba118a580c3f4a30c863Glenn Kastenenum media_parameter_keys { 1386ff9b812abe388478bbaba118a580c3f4a30c863Glenn Kasten KEY_PARAMETER_TIMED_TEXT_TRACK_INDEX = 1000, // set only 1396ff9b812abe388478bbaba118a580c3f4a30c863Glenn Kasten KEY_PARAMETER_TIMED_TEXT_ADD_OUT_OF_BAND_SOURCE = 1001, // set only 140a9d0febdd0f0502ec4f29f77b742e11ceae8a30eJames Dong 141a9d0febdd0f0502ec4f29f77b742e11ceae8a30eJames Dong // Streaming/buffering parameters 1426ff9b812abe388478bbaba118a580c3f4a30c863Glenn Kasten KEY_PARAMETER_CACHE_STAT_COLLECT_FREQ_MS = 1100, // set only 1436ff9b812abe388478bbaba118a580c3f4a30c863Glenn Kasten 1446ff9b812abe388478bbaba118a580c3f4a30c863Glenn Kasten // Return a Parcel containing a single int, which is the channel count of the 1456ff9b812abe388478bbaba118a580c3f4a30c863Glenn Kasten // audio track, or zero for error (e.g. no audio track) or unknown. 1466ff9b812abe388478bbaba118a580c3f4a30c863Glenn Kasten KEY_PARAMETER_AUDIO_CHANNEL_COUNT = 1200, // get only 1476ff9b812abe388478bbaba118a580c3f4a30c863Glenn Kasten 148c6091ddd3a22da98b5e83d4b5d864939b451b752Gloria Wang}; 1496ff9b812abe388478bbaba118a580c3f4a30c863Glenn Kasten 1509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// ---------------------------------------------------------------------------- 1519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// ref-counted object for callbacks 1529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectclass MediaPlayerListener: virtual public RefBase 1539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 1549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic: 155162ee49e1ce8800de80697fdd0e0e42ad7e9374eGloria Wang virtual void notify(int msg, int ext1, int ext2, const Parcel *obj) = 0; 1569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}; 1579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 15834bbc22cbca0004475788f06be2300fef23c6a52James Dongclass MediaPlayer : public BnMediaPlayerClient, 15934bbc22cbca0004475788f06be2300fef23c6a52James Dong public virtual IMediaDeathNotifier 1609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 1619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic: 1629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project MediaPlayer(); 1639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ~MediaPlayer(); 16434bbc22cbca0004475788f06be2300fef23c6a52James Dong void died(); 1659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void disconnect(); 166256430093679e1d62b54fb0c852126e54d162f6fAndreas Huber 167256430093679e1d62b54fb0c852126e54d162f6fAndreas Huber status_t setDataSource( 168256430093679e1d62b54fb0c852126e54d162f6fAndreas Huber const char *url, 169256430093679e1d62b54fb0c852126e54d162f6fAndreas Huber const KeyedVector<String8, String8> *headers); 170256430093679e1d62b54fb0c852126e54d162f6fAndreas Huber 1719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project status_t setDataSource(int fd, int64_t offset, int64_t length); 172fc301b0bb5c635c6bb51b48c504a8db5f9010e5cDave Burke status_t setDataSource(const sp<IStreamSource> &source); 173cc562a3576a6a8096626387472e05e8bee03352aGlenn Kasten status_t setVideoSurfaceTexture( 174cc562a3576a6a8096626387472e05e8bee03352aGlenn Kasten const sp<ISurfaceTexture>& surfaceTexture); 1759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project status_t setListener(const sp<MediaPlayerListener>& listener); 1769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project status_t prepare(); 1779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project status_t prepareAsync(); 1789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project status_t start(); 1799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project status_t stop(); 1809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project status_t pause(); 1819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bool isPlaying(); 1829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project status_t getVideoWidth(int *w); 1839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project status_t getVideoHeight(int *h); 1849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project status_t seekTo(int msec); 1859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project status_t getCurrentPosition(int *msec); 1869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project status_t getDuration(int *msec); 1879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project status_t reset(); 1889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project status_t setAudioStreamType(int type); 1899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project status_t setLooping(int loop); 1909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bool isLooping(); 1919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project status_t setVolume(float leftVolume, float rightVolume); 192162ee49e1ce8800de80697fdd0e0e42ad7e9374eGloria Wang void notify(int msg, int ext1, int ext2, const Parcel *obj = NULL); 1939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project static sp<IMemory> decode(const char* url, uint32_t *pSampleRate, int* pNumChannels, int* pFormat); 1949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project static sp<IMemory> decode(int fd, int64_t offset, int64_t length, uint32_t *pSampleRate, int* pNumChannels, int* pFormat); 19520cb94eeb5b9672573fc86bf51e09bd66a774581Nicolas Catania status_t invoke(const Parcel& request, Parcel *reply); 196b2c693919be966f179080a9ec70a7a82dbf57627Nicolas Catania status_t setMetadataFilter(const Parcel& filter); 1975d55c7119820ee9bb06fc072e416fe98ba77cd28Nicolas Catania status_t getMetadata(bool update_only, bool apply_filter, Parcel *metadata); 198619346f902241736d933657a4fe10f10c50a1ba8Eric Laurent status_t setAudioSessionId(int sessionId); 199619346f902241736d933657a4fe10f10c50a1ba8Eric Laurent int getAudioSessionId(); 2007070b36549d511d6627538c73dfbab23fbae5b43Eric Laurent status_t setAuxEffectSendLevel(float level); 2017070b36549d511d6627538c73dfbab23fbae5b43Eric Laurent status_t attachAuxEffect(int effectId); 202d01ec6eab019e46398975202e9e4a198a603ad99Gloria Wang status_t setParameter(int key, const Parcel& request); 203d01ec6eab019e46398975202e9e4a198a603ad99Gloria Wang status_t getParameter(int key, Parcel* reply); 204d01ec6eab019e46398975202e9e4a198a603ad99Gloria Wang 2059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectprivate: 2069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void clear_l(); 2079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project status_t seekTo_l(int msec); 2089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project status_t prepareAsync_l(); 2099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project status_t getDuration_l(int *msec); 210fc301b0bb5c635c6bb51b48c504a8db5f9010e5cDave Burke status_t attachNewPlayer(const sp<IMediaPlayer>& player); 211c85ca5d6b573e1a663a10950578220b4580c285cJamie Gennis status_t reset_l(); 2129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sp<IMediaPlayer> mPlayer; 214ebb020aebc157ff127458dc20e1d0066b86bb99dJason Sams thread_id_t mLockThreadId; 2159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Mutex mLock; 2169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Mutex mNotifyLock; 2179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Condition mSignal; 2189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sp<MediaPlayerListener> mListener; 2199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void* mCookie; 2209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project media_player_states mCurrentState; 2219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int mDuration; 2229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int mCurrentPosition; 2239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int mSeekPosition; 2249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bool mPrepareSync; 2259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project status_t mPrepareStatus; 2269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int mStreamType; 2279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bool mLoop; 2289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project float mLeftVolume; 2299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project float mRightVolume; 2309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int mVideoWidth; 2319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int mVideoHeight; 232619346f902241736d933657a4fe10f10c50a1ba8Eric Laurent int mAudioSessionId; 2337070b36549d511d6627538c73dfbab23fbae5b43Eric Laurent float mSendLevel; 2349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}; 2359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}; // namespace android 2379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#endif // ANDROID_MEDIAPLAYER_H 239