1e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber/* 2e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber** 3e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber** Copyright 2009, The Android Open Source Project 4e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber** 5e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber** Licensed under the Apache License, Version 2.0 (the "License"); 6e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber** you may not use this file except in compliance with the License. 7e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber** You may obtain a copy of the License at 8e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber** 9e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber** http://www.apache.org/licenses/LICENSE-2.0 10e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber** 11e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber** Unless required by applicable law or agreed to in writing, software 12e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber** distributed under the License is distributed on an "AS IS" BASIS, 13e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber** See the License for the specific language governing permissions and 15e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber** limitations under the License. 16e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber*/ 17e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber 18e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber#ifndef ANDROID_STAGEFRIGHTPLAYER_H 19e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber#define ANDROID_STAGEFRIGHTPLAYER_H 20e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber 21e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber#include <media/MediaPlayerInterface.h> 22e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber 23e46b7be812d68e49710b34048662cbf18e2a6550Andreas Hubernamespace android { 24e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber 2527366fc9540cb642ee4856957dabffe7ddf1f901Andreas Huberstruct AwesomePlayer; 26e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber 27e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huberclass StagefrightPlayer : public MediaPlayerInterface { 28e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huberpublic: 29e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber StagefrightPlayer(); 30e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber virtual ~StagefrightPlayer(); 31e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber 32e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber virtual status_t initCheck(); 33256430093679e1d62b54fb0c852126e54d162f6fAndreas Huber 34603d739b5a444c52b63f1ec7cd2098034151ad25Andreas Huber virtual status_t setUID(uid_t uid); 35603d739b5a444c52b63f1ec7cd2098034151ad25Andreas Huber 36256430093679e1d62b54fb0c852126e54d162f6fAndreas Huber virtual status_t setDataSource( 37256430093679e1d62b54fb0c852126e54d162f6fAndreas Huber const char *url, const KeyedVector<String8, String8> *headers); 38256430093679e1d62b54fb0c852126e54d162f6fAndreas Huber 39e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber virtual status_t setDataSource(int fd, int64_t offset, int64_t length); 4052b52cdfb7502d5a0fd7bba21d1daa3e36a54e42Andreas Huber 4152b52cdfb7502d5a0fd7bba21d1daa3e36a54e42Andreas Huber virtual status_t setDataSource(const sp<IStreamSource> &source); 4252b52cdfb7502d5a0fd7bba21d1daa3e36a54e42Andreas Huber 43cc562a3576a6a8096626387472e05e8bee03352aGlenn Kasten virtual status_t setVideoSurfaceTexture( 44cc562a3576a6a8096626387472e05e8bee03352aGlenn Kasten const sp<ISurfaceTexture> &surfaceTexture); 45e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber virtual status_t prepare(); 46e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber virtual status_t prepareAsync(); 47e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber virtual status_t start(); 48e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber virtual status_t stop(); 49e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber virtual status_t pause(); 50e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber virtual bool isPlaying(); 51e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber virtual status_t seekTo(int msec); 52e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber virtual status_t getCurrentPosition(int *msec); 53e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber virtual status_t getDuration(int *msec); 54e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber virtual status_t reset(); 55e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber virtual status_t setLooping(int loop); 56e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber virtual player_type playerType(); 57e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber virtual status_t invoke(const Parcel &request, Parcel *reply); 58e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber virtual void setAudioSink(const sp<AudioSink> &audioSink); 59d01ec6eab019e46398975202e9e4a198a603ad99Gloria Wang virtual status_t setParameter(int key, const Parcel &request); 60d01ec6eab019e46398975202e9e4a198a603ad99Gloria Wang virtual status_t getParameter(int key, Parcel *reply); 61e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber 6262f7ffe106a7126ef31b199552c5cfc6599bc3d1Andreas Huber virtual status_t getMetadata( 6362f7ffe106a7126ef31b199552c5cfc6599bc3d1Andreas Huber const media::Metadata::Filter& ids, Parcel *records); 6462f7ffe106a7126ef31b199552c5cfc6599bc3d1Andreas Huber 65fddf5d9f48d0864a30fcc2706616f6aa6cb06c61Andreas Huber virtual status_t dump(int fd, const Vector<String16> &args) const; 66fddf5d9f48d0864a30fcc2706616f6aa6cb06c61Andreas Huber 67e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huberprivate: 6827366fc9540cb642ee4856957dabffe7ddf1f901Andreas Huber AwesomePlayer *mPlayer; 69e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber 70e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber StagefrightPlayer(const StagefrightPlayer &); 71e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber StagefrightPlayer &operator=(const StagefrightPlayer &); 72e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber}; 73e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber 74e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber} // namespace android 75e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber 76e46b7be812d68e49710b34048662cbf18e2a6550Andreas Huber#endif // ANDROID_STAGEFRIGHTPLAYER_H 77