19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* 29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2008 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_IMEDIAPLAYER_H 189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#define ANDROID_IMEDIAPLAYER_H 199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#include <utils/RefBase.h> 210795272aa226f4e965968a03daddc53ce30b7cdaMathias Agopian#include <binder/IInterface.h> 220795272aa226f4e965968a03daddc53ce30b7cdaMathias Agopian#include <binder/Parcel.h> 239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectnamespace android { 259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2620cb94eeb5b9672573fc86bf51e09bd66a774581Nicolas Cataniaclass Parcel; 279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectclass ISurface; 289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectclass IMediaPlayer: public IInterface 309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic: 329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project DECLARE_META_INTERFACE(MediaPlayer); 339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual void disconnect() = 0; 359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual status_t setVideoSurface(const sp<ISurface>& surface) = 0; 379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual status_t prepareAsync() = 0; 389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual status_t start() = 0; 399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual status_t stop() = 0; 409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual status_t pause() = 0; 419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual status_t isPlaying(bool* state) = 0; 429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual status_t seekTo(int msec) = 0; 439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual status_t getCurrentPosition(int* msec) = 0; 449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual status_t getDuration(int* msec) = 0; 459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual status_t reset() = 0; 469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual status_t setAudioStreamType(int type) = 0; 479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual status_t setLooping(int loop) = 0; 489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual status_t setVolume(float leftVolume, float rightVolume) = 0; 49fbb3885024ac9c90f322b6259d7e519c8927e6ffAndreas Huber virtual status_t suspend() = 0; 50fbb3885024ac9c90f322b6259d7e519c8927e6ffAndreas Huber virtual status_t resume() = 0; 517070b36549d511d6627538c73dfbab23fbae5b43Eric Laurent virtual status_t setAuxEffectSendLevel(float level) = 0; 527070b36549d511d6627538c73dfbab23fbae5b43Eric Laurent virtual status_t attachAuxEffect(int effectId) = 0; 5320cb94eeb5b9672573fc86bf51e09bd66a774581Nicolas Catania 5420cb94eeb5b9672573fc86bf51e09bd66a774581Nicolas Catania // Invoke a generic method on the player by using opaque parcels 5520cb94eeb5b9672573fc86bf51e09bd66a774581Nicolas Catania // for the request and reply. 5620cb94eeb5b9672573fc86bf51e09bd66a774581Nicolas Catania // @param request Parcel that must start with the media player 5720cb94eeb5b9672573fc86bf51e09bd66a774581Nicolas Catania // interface token. 5820cb94eeb5b9672573fc86bf51e09bd66a774581Nicolas Catania // @param[out] reply Parcel to hold the reply data. Cannot be null. 59b2c693919be966f179080a9ec70a7a82dbf57627Nicolas Catania // @return OK if the invocation was made successfully. 6020cb94eeb5b9672573fc86bf51e09bd66a774581Nicolas Catania virtual status_t invoke(const Parcel& request, Parcel *reply) = 0; 61b2c693919be966f179080a9ec70a7a82dbf57627Nicolas Catania 62b2c693919be966f179080a9ec70a7a82dbf57627Nicolas Catania // Set a new metadata filter. 63b2c693919be966f179080a9ec70a7a82dbf57627Nicolas Catania // @param filter A set of allow and drop rules serialized in a Parcel. 64b2c693919be966f179080a9ec70a7a82dbf57627Nicolas Catania // @return OK if the invocation was made successfully. 65b2c693919be966f179080a9ec70a7a82dbf57627Nicolas Catania virtual status_t setMetadataFilter(const Parcel& filter) = 0; 665d55c7119820ee9bb06fc072e416fe98ba77cd28Nicolas Catania 675d55c7119820ee9bb06fc072e416fe98ba77cd28Nicolas Catania // Retrieve a set of metadata. 685d55c7119820ee9bb06fc072e416fe98ba77cd28Nicolas Catania // @param update_only Include only the metadata that have changed 695d55c7119820ee9bb06fc072e416fe98ba77cd28Nicolas Catania // since the last invocation of getMetadata. 705d55c7119820ee9bb06fc072e416fe98ba77cd28Nicolas Catania // The set is built using the unfiltered 715d55c7119820ee9bb06fc072e416fe98ba77cd28Nicolas Catania // notifications the native player sent to the 725d55c7119820ee9bb06fc072e416fe98ba77cd28Nicolas Catania // MediaPlayerService during that period of 735d55c7119820ee9bb06fc072e416fe98ba77cd28Nicolas Catania // time. If false, all the metadatas are considered. 745d55c7119820ee9bb06fc072e416fe98ba77cd28Nicolas Catania // @param apply_filter If true, once the metadata set has been built based 755d55c7119820ee9bb06fc072e416fe98ba77cd28Nicolas Catania // on the value update_only, the current filter is 765d55c7119820ee9bb06fc072e416fe98ba77cd28Nicolas Catania // applied. 775d55c7119820ee9bb06fc072e416fe98ba77cd28Nicolas Catania // @param[out] metadata On exit contains a set (possibly empty) of metadata. 785d55c7119820ee9bb06fc072e416fe98ba77cd28Nicolas Catania // Valid only if the call returned OK. 795d55c7119820ee9bb06fc072e416fe98ba77cd28Nicolas Catania // @return OK if the invocation was made successfully. 805d55c7119820ee9bb06fc072e416fe98ba77cd28Nicolas Catania virtual status_t getMetadata(bool update_only, 815d55c7119820ee9bb06fc072e416fe98ba77cd28Nicolas Catania bool apply_filter, 825d55c7119820ee9bb06fc072e416fe98ba77cd28Nicolas Catania Parcel *metadata) = 0; 839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}; 849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// ---------------------------------------------------------------------------- 869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectclass BnMediaPlayer: public BnInterface<IMediaPlayer> 889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic: 909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual status_t onTransact( uint32_t code, 919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const Parcel& data, 929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Parcel* reply, 939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project uint32_t flags = 0); 949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}; 959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}; // namespace android 979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#endif // ANDROID_IMEDIAPLAYER_H 99