120111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber/*
220111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber**
320111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber** Copyright 2009, The Android Open Source Project
420111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber**
520111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber** Licensed under the Apache License, Version 2.0 (the "License");
620111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber** you may not use this file except in compliance with the License.
720111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber** You may obtain a copy of the License at
820111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber**
920111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber**     http://www.apache.org/licenses/LICENSE-2.0
1020111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber**
1120111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber** Unless required by applicable law or agreed to in writing, software
1220111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber** distributed under the License is distributed on an "AS IS" BASIS,
1320111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1420111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber** See the License for the specific language governing permissions and
1520111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber** limitations under the License.
1620111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber*/
1720111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber
1820111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber#ifndef ANDROID_STAGEFRIGHTPLAYER_H
1920111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber#define ANDROID_STAGEFRIGHTPLAYER_H
2020111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber
2120111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber#include <media/MediaPlayerInterface.h>
2220111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber
2320111aa043c5f404472bc63b90bc5aad906b1101Andreas Hubernamespace android {
2420111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber
25bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huberstruct AwesomePlayer;
2620111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber
2720111aa043c5f404472bc63b90bc5aad906b1101Andreas Huberclass StagefrightPlayer : public MediaPlayerInterface {
2820111aa043c5f404472bc63b90bc5aad906b1101Andreas Huberpublic:
2920111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber    StagefrightPlayer();
3020111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber    virtual ~StagefrightPlayer();
3120111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber
3220111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber    virtual status_t initCheck();
332db8455d8f4468a637109d31f319ce02d9d743ecAndreas Huber
349b80c2bdb205bc143104f54d0743b6eedd67b14eAndreas Huber    virtual status_t setUID(uid_t uid);
359b80c2bdb205bc143104f54d0743b6eedd67b14eAndreas Huber
362db8455d8f4468a637109d31f319ce02d9d743ecAndreas Huber    virtual status_t setDataSource(
371b86fe063badb5f28c467ade39be0f4008688947Andreas Huber            const sp<IMediaHTTPService> &httpService,
381b86fe063badb5f28c467ade39be0f4008688947Andreas Huber            const char *url,
391b86fe063badb5f28c467ade39be0f4008688947Andreas Huber            const KeyedVector<String8, String8> *headers);
402db8455d8f4468a637109d31f319ce02d9d743ecAndreas Huber
4120111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber    virtual status_t setDataSource(int fd, int64_t offset, int64_t length);
42e2b1028852120bcfded33b8f06f66b780437fe92Andreas Huber
43e2b1028852120bcfded33b8f06f66b780437fe92Andreas Huber    virtual status_t setDataSource(const sp<IStreamSource> &source);
44e2b1028852120bcfded33b8f06f66b780437fe92Andreas Huber
451173118eace0e9e347cb007f0da817cee87579edGlenn Kasten    virtual status_t setVideoSurfaceTexture(
468ba01021b573889802e67e029225a96f0dfa471aAndy McFadden            const sp<IGraphicBufferProducer> &bufferProducer);
4720111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber    virtual status_t prepare();
4820111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber    virtual status_t prepareAsync();
4920111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber    virtual status_t start();
5020111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber    virtual status_t stop();
5120111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber    virtual status_t pause();
5220111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber    virtual bool isPlaying();
5320111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber    virtual status_t seekTo(int msec);
5420111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber    virtual status_t getCurrentPosition(int *msec);
5520111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber    virtual status_t getDuration(int *msec);
5620111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber    virtual status_t reset();
5720111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber    virtual status_t setLooping(int loop);
5820111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber    virtual player_type playerType();
5920111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber    virtual status_t invoke(const Parcel &request, Parcel *reply);
6020111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber    virtual void setAudioSink(const sp<AudioSink> &audioSink);
614f9e47f2c03ce36261c4717cd7e131d7940bb068Gloria Wang    virtual status_t setParameter(int key, const Parcel &request);
624f9e47f2c03ce36261c4717cd7e131d7940bb068Gloria Wang    virtual status_t getParameter(int key, Parcel *reply);
633a474aa67fc31505740526dd249d96204c08bf79Lajos Molnar    virtual status_t setPlaybackSettings(const AudioPlaybackRate &rate);
643a474aa67fc31505740526dd249d96204c08bf79Lajos Molnar    virtual status_t getPlaybackSettings(AudioPlaybackRate *rate /* nonnull */);
6520111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber
66acdd9d0f59c3d8bdc3de80664a609527ec3d21e2Andreas Huber    virtual status_t getMetadata(
67acdd9d0f59c3d8bdc3de80664a609527ec3d21e2Andreas Huber            const media::Metadata::Filter& ids, Parcel *records);
68acdd9d0f59c3d8bdc3de80664a609527ec3d21e2Andreas Huber
69a0b1d4b161599c2bb2a47119e50c51e75bbe980eAndreas Huber    virtual status_t dump(int fd, const Vector<String16> &args) const;
70a0b1d4b161599c2bb2a47119e50c51e75bbe980eAndreas Huber
7120111aa043c5f404472bc63b90bc5aad906b1101Andreas Huberprivate:
72bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber    AwesomePlayer *mPlayer;
7320111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber
7420111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber    StagefrightPlayer(const StagefrightPlayer &);
7520111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber    StagefrightPlayer &operator=(const StagefrightPlayer &);
7620111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber};
7720111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber
7820111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber}  // namespace android
7920111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber
8020111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber#endif  // ANDROID_STAGEFRIGHTPLAYER_H
81