NuPlayerDriver.h revision 3fe62150fa3dd6d25cb84aad80bc9e27ddd16c45
189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project/* 289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project * Copyright (C) 2010 The Android Open Source Project 389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project * 489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project * you may not use this file except in compliance with the License. 689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project * You may obtain a copy of the License at 789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project * 889fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project * 1089fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 1189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 1289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project * See the License for the specific language governing permissions and 1489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project * limitations under the License. 1589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project */ 1689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 1789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project#include <media/MediaPlayerInterface.h> 1889fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 1989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project#include <media/stagefright/foundation/ABase.h> 2089fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 2189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Projectnamespace android { 2289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 2389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Projectstruct ALooper; 2489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Projectstruct NuPlayer; 2589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 2689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Projectstruct NuPlayerDriver : public MediaPlayerInterface { 2789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project NuPlayerDriver(); 2889fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 2989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project virtual status_t initCheck(); 3089fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 31c2f1f07084818942352c6bbfb36af9b6b330eb4eEric Laurent virtual status_t setUID(uid_t uid); 3289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 337562408b2261d38415453378b6188f74fda99d88Mathias Agopian virtual status_t setDataSource( 3489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project const char *url, const KeyedVector<String8, String8> *headers); 357562408b2261d38415453378b6188f74fda99d88Mathias Agopian 367562408b2261d38415453378b6188f74fda99d88Mathias Agopian virtual status_t setDataSource(int fd, int64_t offset, int64_t length); 3789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 3838ccae2c0324daa305f3fe77d25fdf5edec0b0e1Eric Laurent virtual status_t setDataSource(const sp<IStreamSource> &source); 3989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 4064760240f931714858a59c1579f07264d7182ba2Dima Zavin virtual status_t setVideoSurface(const sp<Surface> &surface); 41fce7a473248381cc83a01855f92581077d3c9ee2Dima Zavin virtual status_t setVideoSurfaceTexture( 42f6b1678f8f508b447155a81b44e214475ab634a8Glenn Kasten const sp<ISurfaceTexture> &surfaceTexture); 4389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project virtual status_t prepare(); 4489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project virtual status_t prepareAsync(); 4515304d601cbf83be6519ca53e1a26b97d50d0192Chia-chi Yeh virtual status_t start(); 4615304d601cbf83be6519ca53e1a26b97d50d0192Chia-chi Yeh virtual status_t stop(); 4715304d601cbf83be6519ca53e1a26b97d50d0192Chia-chi Yeh virtual status_t pause(); 4815304d601cbf83be6519ca53e1a26b97d50d0192Chia-chi Yeh virtual bool isPlaying(); 4915304d601cbf83be6519ca53e1a26b97d50d0192Chia-chi Yeh virtual status_t seekTo(int msec); 5015304d601cbf83be6519ca53e1a26b97d50d0192Chia-chi Yeh virtual status_t getCurrentPosition(int *msec); 5115304d601cbf83be6519ca53e1a26b97d50d0192Chia-chi Yeh virtual status_t getDuration(int *msec); 5215304d601cbf83be6519ca53e1a26b97d50d0192Chia-chi Yeh virtual status_t reset(); 5315304d601cbf83be6519ca53e1a26b97d50d0192Chia-chi Yeh virtual status_t setLooping(int loop); 5415304d601cbf83be6519ca53e1a26b97d50d0192Chia-chi Yeh virtual player_type playerType(); 5515304d601cbf83be6519ca53e1a26b97d50d0192Chia-chi Yeh virtual status_t invoke(const Parcel &request, Parcel *reply); 5615304d601cbf83be6519ca53e1a26b97d50d0192Chia-chi Yeh virtual void setAudioSink(const sp<AudioSink> &audioSink); 5715304d601cbf83be6519ca53e1a26b97d50d0192Chia-chi Yeh virtual status_t setParameter(int key, const Parcel &request); 5815304d601cbf83be6519ca53e1a26b97d50d0192Chia-chi Yeh virtual status_t getParameter(int key, Parcel *reply); 5915304d601cbf83be6519ca53e1a26b97d50d0192Chia-chi Yeh 6015304d601cbf83be6519ca53e1a26b97d50d0192Chia-chi Yeh virtual status_t getMetadata( 6115304d601cbf83be6519ca53e1a26b97d50d0192Chia-chi Yeh const media::Metadata::Filter& ids, Parcel *records); 6215304d601cbf83be6519ca53e1a26b97d50d0192Chia-chi Yeh 6315304d601cbf83be6519ca53e1a26b97d50d0192Chia-chi Yeh virtual status_t dump(int fd, const Vector<String16> &args) const; 6415304d601cbf83be6519ca53e1a26b97d50d0192Chia-chi Yeh 6515304d601cbf83be6519ca53e1a26b97d50d0192Chia-chi Yeh void notifyResetComplete(); 6615304d601cbf83be6519ca53e1a26b97d50d0192Chia-chi Yeh void notifyDuration(int64_t durationUs); 6715304d601cbf83be6519ca53e1a26b97d50d0192Chia-chi Yeh void notifyPosition(int64_t positionUs); 6815304d601cbf83be6519ca53e1a26b97d50d0192Chia-chi Yeh void notifySeekComplete(); 6915304d601cbf83be6519ca53e1a26b97d50d0192Chia-chi Yeh void notifyFrameStats(int64_t numFramesTotal, int64_t numFramesDropped); 70fce7a473248381cc83a01855f92581077d3c9ee2Dima Zavin 71671a636931295d9c33ffca74551a804479d01241Eric Laurentprotected: 7215304d601cbf83be6519ca53e1a26b97d50d0192Chia-chi Yeh virtual ~NuPlayerDriver(); 7315304d601cbf83be6519ca53e1a26b97d50d0192Chia-chi Yeh 7415304d601cbf83be6519ca53e1a26b97d50d0192Chia-chi Yehprivate: 7515304d601cbf83be6519ca53e1a26b97d50d0192Chia-chi Yeh mutable Mutex mLock; 7615304d601cbf83be6519ca53e1a26b97d50d0192Chia-chi Yeh Condition mCondition; 7789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 7889fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project // The following are protected through "mLock" 7989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project // >>> 8089fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project bool mResetInProgress; 81879135196fd1c97deefc538c888037c56c2879a7Glenn Kasten int64_t mDurationUs; 82879135196fd1c97deefc538c888037c56c2879a7Glenn Kasten int64_t mPositionUs; 8389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project int64_t mNumFramesTotal; 8489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project int64_t mNumFramesDropped; 8589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project // <<< 8689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 87f5879c1448cc6aebc51b26d3ec2399d66144f8f4Eric Laurent sp<ALooper> mLooper; 8889fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project sp<NuPlayer> mPlayer; 8989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 900d255b2d9061ba31f13ada3fc0f7e51916407176Jean-Michel Trivi enum State { 9189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project UNINITIALIZED, 9289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project STOPPED, 9389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project PLAYING, 9489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project PAUSED 95be916aa1267e2e6b1c148f51d11bcbbc79cb864cEric Laurent }; 96be916aa1267e2e6b1c148f51d11bcbbc79cb864cEric Laurent 97879135196fd1c97deefc538c888037c56c2879a7Glenn Kasten State mState; 98879135196fd1c97deefc538c888037c56c2879a7Glenn Kasten 9989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project int64_t mStartupSeekTimeUs; 1000d255b2d9061ba31f13ada3fc0f7e51916407176Jean-Michel Trivi 101be916aa1267e2e6b1c148f51d11bcbbc79cb864cEric Laurent DISALLOW_EVIL_CONSTRUCTORS(NuPlayerDriver); 10289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project}; 10389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 10489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project} // namespace android 10589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 10689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 10789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project