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