NuPlayerDriver.cpp revision 2048d0cfccce48be26816dec8711a6691ebff71c
1f933441648ef6a71dee783d733aac17b9508b452Andreas Huber/* 2f933441648ef6a71dee783d733aac17b9508b452Andreas Huber * Copyright (C) 2010 The Android Open Source Project 3f933441648ef6a71dee783d733aac17b9508b452Andreas Huber * 4f933441648ef6a71dee783d733aac17b9508b452Andreas Huber * Licensed under the Apache License, Version 2.0 (the "License"); 5f933441648ef6a71dee783d733aac17b9508b452Andreas Huber * you may not use this file except in compliance with the License. 6f933441648ef6a71dee783d733aac17b9508b452Andreas Huber * You may obtain a copy of the License at 7f933441648ef6a71dee783d733aac17b9508b452Andreas Huber * 8f933441648ef6a71dee783d733aac17b9508b452Andreas Huber * http://www.apache.org/licenses/LICENSE-2.0 9f933441648ef6a71dee783d733aac17b9508b452Andreas Huber * 10f933441648ef6a71dee783d733aac17b9508b452Andreas Huber * Unless required by applicable law or agreed to in writing, software 11f933441648ef6a71dee783d733aac17b9508b452Andreas Huber * distributed under the License is distributed on an "AS IS" BASIS, 12f933441648ef6a71dee783d733aac17b9508b452Andreas Huber * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13f933441648ef6a71dee783d733aac17b9508b452Andreas Huber * See the License for the specific language governing permissions and 14f933441648ef6a71dee783d733aac17b9508b452Andreas Huber * limitations under the License. 15f933441648ef6a71dee783d733aac17b9508b452Andreas Huber */ 16f933441648ef6a71dee783d733aac17b9508b452Andreas Huber 17f933441648ef6a71dee783d733aac17b9508b452Andreas Huber//#define LOG_NDEBUG 0 18f933441648ef6a71dee783d733aac17b9508b452Andreas Huber#define LOG_TAG "NuPlayerDriver" 19f933441648ef6a71dee783d733aac17b9508b452Andreas Huber#include <utils/Log.h> 20f933441648ef6a71dee783d733aac17b9508b452Andreas Huber 21f933441648ef6a71dee783d733aac17b9508b452Andreas Huber#include "NuPlayerDriver.h" 22f933441648ef6a71dee783d733aac17b9508b452Andreas Huber 23f933441648ef6a71dee783d733aac17b9508b452Andreas Huber#include "NuPlayer.h" 24f933441648ef6a71dee783d733aac17b9508b452Andreas Huber 251aef211b4e5dc952081727bfd2318b2cb5ca4506Andreas Huber#include <media/stagefright/foundation/ADebug.h> 26f933441648ef6a71dee783d733aac17b9508b452Andreas Huber#include <media/stagefright/foundation/ALooper.h> 27f933441648ef6a71dee783d733aac17b9508b452Andreas Huber 28f933441648ef6a71dee783d733aac17b9508b452Andreas Hubernamespace android { 29f933441648ef6a71dee783d733aac17b9508b452Andreas Huber 30f933441648ef6a71dee783d733aac17b9508b452Andreas HuberNuPlayerDriver::NuPlayerDriver() 311aef211b4e5dc952081727bfd2318b2cb5ca4506Andreas Huber : mResetInProgress(false), 3243c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber mDurationUs(-1), 3343c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber mPositionUs(-1), 341aef211b4e5dc952081727bfd2318b2cb5ca4506Andreas Huber mLooper(new ALooper), 3543c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber mState(UNINITIALIZED), 3643c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber mStartupSeekTimeUs(-1) { 37f933441648ef6a71dee783d733aac17b9508b452Andreas Huber mLooper->setName("NuPlayerDriver Looper"); 38f933441648ef6a71dee783d733aac17b9508b452Andreas Huber 39f933441648ef6a71dee783d733aac17b9508b452Andreas Huber mLooper->start( 40f933441648ef6a71dee783d733aac17b9508b452Andreas Huber false, /* runOnCallingThread */ 41f933441648ef6a71dee783d733aac17b9508b452Andreas Huber true, /* canCallJava */ 42f933441648ef6a71dee783d733aac17b9508b452Andreas Huber PRIORITY_AUDIO); 43f933441648ef6a71dee783d733aac17b9508b452Andreas Huber 44f933441648ef6a71dee783d733aac17b9508b452Andreas Huber mPlayer = new NuPlayer; 45f933441648ef6a71dee783d733aac17b9508b452Andreas Huber mLooper->registerHandler(mPlayer); 46f933441648ef6a71dee783d733aac17b9508b452Andreas Huber 4743c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber mPlayer->setDriver(this); 48f933441648ef6a71dee783d733aac17b9508b452Andreas Huber} 49f933441648ef6a71dee783d733aac17b9508b452Andreas Huber 50f933441648ef6a71dee783d733aac17b9508b452Andreas HuberNuPlayerDriver::~NuPlayerDriver() { 51f933441648ef6a71dee783d733aac17b9508b452Andreas Huber mLooper->stop(); 52f933441648ef6a71dee783d733aac17b9508b452Andreas Huber} 53f933441648ef6a71dee783d733aac17b9508b452Andreas Huber 54f933441648ef6a71dee783d733aac17b9508b452Andreas Huberstatus_t NuPlayerDriver::initCheck() { 55f933441648ef6a71dee783d733aac17b9508b452Andreas Huber return OK; 56f933441648ef6a71dee783d733aac17b9508b452Andreas Huber} 57f933441648ef6a71dee783d733aac17b9508b452Andreas Huber 589b80c2bdb205bc143104f54d0743b6eedd67b14eAndreas Huberstatus_t NuPlayerDriver::setUID(uid_t uid) { 599b80c2bdb205bc143104f54d0743b6eedd67b14eAndreas Huber mPlayer->setUID(uid); 609b80c2bdb205bc143104f54d0743b6eedd67b14eAndreas Huber 619b80c2bdb205bc143104f54d0743b6eedd67b14eAndreas Huber return OK; 629b80c2bdb205bc143104f54d0743b6eedd67b14eAndreas Huber} 639b80c2bdb205bc143104f54d0743b6eedd67b14eAndreas Huber 64f933441648ef6a71dee783d733aac17b9508b452Andreas Huberstatus_t NuPlayerDriver::setDataSource( 65f933441648ef6a71dee783d733aac17b9508b452Andreas Huber const char *url, const KeyedVector<String8, String8> *headers) { 6643c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber CHECK_EQ((int)mState, (int)UNINITIALIZED); 6743c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber 685bc087c573c70c84c6a39946457590b42d392a33Andreas Huber mPlayer->setDataSource(url, headers); 695bc087c573c70c84c6a39946457590b42d392a33Andreas Huber 7043c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber mState = STOPPED; 7143c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber 725bc087c573c70c84c6a39946457590b42d392a33Andreas Huber return OK; 73f933441648ef6a71dee783d733aac17b9508b452Andreas Huber} 74f933441648ef6a71dee783d733aac17b9508b452Andreas Huber 75f933441648ef6a71dee783d733aac17b9508b452Andreas Huberstatus_t NuPlayerDriver::setDataSource(int fd, int64_t offset, int64_t length) { 76f933441648ef6a71dee783d733aac17b9508b452Andreas Huber return INVALID_OPERATION; 77f933441648ef6a71dee783d733aac17b9508b452Andreas Huber} 78f933441648ef6a71dee783d733aac17b9508b452Andreas Huber 79f933441648ef6a71dee783d733aac17b9508b452Andreas Huberstatus_t NuPlayerDriver::setDataSource(const sp<IStreamSource> &source) { 8043c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber CHECK_EQ((int)mState, (int)UNINITIALIZED); 8143c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber 82f933441648ef6a71dee783d733aac17b9508b452Andreas Huber mPlayer->setDataSource(source); 83f933441648ef6a71dee783d733aac17b9508b452Andreas Huber 8443c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber mState = STOPPED; 8543c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber 86f933441648ef6a71dee783d733aac17b9508b452Andreas Huber return OK; 87f933441648ef6a71dee783d733aac17b9508b452Andreas Huber} 88f933441648ef6a71dee783d733aac17b9508b452Andreas Huber 89f933441648ef6a71dee783d733aac17b9508b452Andreas Huberstatus_t NuPlayerDriver::setVideoSurface(const sp<Surface> &surface) { 90f933441648ef6a71dee783d733aac17b9508b452Andreas Huber mPlayer->setVideoSurface(surface); 91f933441648ef6a71dee783d733aac17b9508b452Andreas Huber 92f933441648ef6a71dee783d733aac17b9508b452Andreas Huber return OK; 93f933441648ef6a71dee783d733aac17b9508b452Andreas Huber} 94f933441648ef6a71dee783d733aac17b9508b452Andreas Huber 951173118eace0e9e347cb007f0da817cee87579edGlenn Kastenstatus_t NuPlayerDriver::setVideoSurfaceTexture( 961173118eace0e9e347cb007f0da817cee87579edGlenn Kasten const sp<ISurfaceTexture> &surfaceTexture) { 971173118eace0e9e347cb007f0da817cee87579edGlenn Kasten mPlayer->setVideoSurfaceTexture(surfaceTexture); 981173118eace0e9e347cb007f0da817cee87579edGlenn Kasten 991173118eace0e9e347cb007f0da817cee87579edGlenn Kasten return OK; 1001173118eace0e9e347cb007f0da817cee87579edGlenn Kasten} 1011173118eace0e9e347cb007f0da817cee87579edGlenn Kasten 102f933441648ef6a71dee783d733aac17b9508b452Andreas Huberstatus_t NuPlayerDriver::prepare() { 103f933441648ef6a71dee783d733aac17b9508b452Andreas Huber return OK; 104f933441648ef6a71dee783d733aac17b9508b452Andreas Huber} 105f933441648ef6a71dee783d733aac17b9508b452Andreas Huber 106f933441648ef6a71dee783d733aac17b9508b452Andreas Huberstatus_t NuPlayerDriver::prepareAsync() { 1075bc087c573c70c84c6a39946457590b42d392a33Andreas Huber sendEvent(MEDIA_PREPARED); 1085bc087c573c70c84c6a39946457590b42d392a33Andreas Huber 109f933441648ef6a71dee783d733aac17b9508b452Andreas Huber return OK; 110f933441648ef6a71dee783d733aac17b9508b452Andreas Huber} 111f933441648ef6a71dee783d733aac17b9508b452Andreas Huber 112f933441648ef6a71dee783d733aac17b9508b452Andreas Huberstatus_t NuPlayerDriver::start() { 11343c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber switch (mState) { 11443c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber case UNINITIALIZED: 11543c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber return INVALID_OPERATION; 11643c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber case STOPPED: 11743c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber { 11843c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber mPlayer->start(); 11943c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber 12043c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber if (mStartupSeekTimeUs >= 0) { 1212048d0cfccce48be26816dec8711a6691ebff71cAndreas Huber if (mStartupSeekTimeUs == 0) { 1222048d0cfccce48be26816dec8711a6691ebff71cAndreas Huber notifySeekComplete(); 1232048d0cfccce48be26816dec8711a6691ebff71cAndreas Huber } else { 1242048d0cfccce48be26816dec8711a6691ebff71cAndreas Huber mPlayer->seekToAsync(mStartupSeekTimeUs); 1252048d0cfccce48be26816dec8711a6691ebff71cAndreas Huber } 1262048d0cfccce48be26816dec8711a6691ebff71cAndreas Huber 12743c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber mStartupSeekTimeUs = -1; 12843c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber } 1292048d0cfccce48be26816dec8711a6691ebff71cAndreas Huber 13043c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber break; 13143c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber } 13243c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber case PLAYING: 13343c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber return OK; 13443c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber default: 13543c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber { 13643c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber CHECK_EQ((int)mState, (int)PAUSED); 13743c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber 13843c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber mPlayer->resume(); 13943c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber break; 14043c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber } 14143c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber } 14243c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber 14343c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber mState = PLAYING; 144f933441648ef6a71dee783d733aac17b9508b452Andreas Huber 145f933441648ef6a71dee783d733aac17b9508b452Andreas Huber return OK; 146f933441648ef6a71dee783d733aac17b9508b452Andreas Huber} 147f933441648ef6a71dee783d733aac17b9508b452Andreas Huber 148f933441648ef6a71dee783d733aac17b9508b452Andreas Huberstatus_t NuPlayerDriver::stop() { 14943c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber return pause(); 150f933441648ef6a71dee783d733aac17b9508b452Andreas Huber} 151f933441648ef6a71dee783d733aac17b9508b452Andreas Huber 152f933441648ef6a71dee783d733aac17b9508b452Andreas Huberstatus_t NuPlayerDriver::pause() { 15343c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber switch (mState) { 15443c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber case UNINITIALIZED: 15543c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber return INVALID_OPERATION; 15643c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber case STOPPED: 15743c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber return OK; 15843c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber case PLAYING: 15943c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber mPlayer->pause(); 16043c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber break; 16143c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber default: 16243c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber { 16343c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber CHECK_EQ((int)mState, (int)PAUSED); 16443c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber return OK; 16543c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber } 16643c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber } 16743c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber 16843c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber mState = PAUSED; 16943c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber 170f933441648ef6a71dee783d733aac17b9508b452Andreas Huber return OK; 171f933441648ef6a71dee783d733aac17b9508b452Andreas Huber} 172f933441648ef6a71dee783d733aac17b9508b452Andreas Huber 173f933441648ef6a71dee783d733aac17b9508b452Andreas Huberbool NuPlayerDriver::isPlaying() { 17443c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber return mState == PLAYING; 175f933441648ef6a71dee783d733aac17b9508b452Andreas Huber} 176f933441648ef6a71dee783d733aac17b9508b452Andreas Huber 177f933441648ef6a71dee783d733aac17b9508b452Andreas Huberstatus_t NuPlayerDriver::seekTo(int msec) { 17843c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber int64_t seekTimeUs = msec * 1000ll; 17943c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber 18043c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber switch (mState) { 18143c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber case UNINITIALIZED: 18243c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber return INVALID_OPERATION; 18343c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber case STOPPED: 18443c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber { 18543c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber mStartupSeekTimeUs = seekTimeUs; 18643c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber break; 18743c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber } 18843c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber case PLAYING: 18943c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber case PAUSED: 19043c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber { 19143c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber mPlayer->seekToAsync(seekTimeUs); 19243c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber break; 19343c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber } 19443c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber 19543c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber default: 19643c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber TRESPASS(); 19743c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber break; 19843c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber } 19943c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber 20043c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber return OK; 201f933441648ef6a71dee783d733aac17b9508b452Andreas Huber} 202f933441648ef6a71dee783d733aac17b9508b452Andreas Huber 203f933441648ef6a71dee783d733aac17b9508b452Andreas Huberstatus_t NuPlayerDriver::getCurrentPosition(int *msec) { 20443c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber Mutex::Autolock autoLock(mLock); 20543c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber 20643c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber if (mPositionUs < 0) { 20743c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber *msec = 0; 20843c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber } else { 20943c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber *msec = (mPositionUs + 500ll) / 1000; 21043c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber } 2115bc087c573c70c84c6a39946457590b42d392a33Andreas Huber 2125bc087c573c70c84c6a39946457590b42d392a33Andreas Huber return OK; 213f933441648ef6a71dee783d733aac17b9508b452Andreas Huber} 214f933441648ef6a71dee783d733aac17b9508b452Andreas Huber 215f933441648ef6a71dee783d733aac17b9508b452Andreas Huberstatus_t NuPlayerDriver::getDuration(int *msec) { 21643c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber Mutex::Autolock autoLock(mLock); 21743c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber 21843c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber if (mDurationUs < 0) { 21943c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber *msec = 0; 22043c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber } else { 22143c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber *msec = (mDurationUs + 500ll) / 1000; 22243c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber } 2235bc087c573c70c84c6a39946457590b42d392a33Andreas Huber 2245bc087c573c70c84c6a39946457590b42d392a33Andreas Huber return OK; 225f933441648ef6a71dee783d733aac17b9508b452Andreas Huber} 226f933441648ef6a71dee783d733aac17b9508b452Andreas Huber 227f933441648ef6a71dee783d733aac17b9508b452Andreas Huberstatus_t NuPlayerDriver::reset() { 2281aef211b4e5dc952081727bfd2318b2cb5ca4506Andreas Huber Mutex::Autolock autoLock(mLock); 2291aef211b4e5dc952081727bfd2318b2cb5ca4506Andreas Huber mResetInProgress = true; 2301aef211b4e5dc952081727bfd2318b2cb5ca4506Andreas Huber 2311aef211b4e5dc952081727bfd2318b2cb5ca4506Andreas Huber mPlayer->resetAsync(); 2321aef211b4e5dc952081727bfd2318b2cb5ca4506Andreas Huber 2331aef211b4e5dc952081727bfd2318b2cb5ca4506Andreas Huber while (mResetInProgress) { 2341aef211b4e5dc952081727bfd2318b2cb5ca4506Andreas Huber mCondition.wait(mLock); 2351aef211b4e5dc952081727bfd2318b2cb5ca4506Andreas Huber } 2361aef211b4e5dc952081727bfd2318b2cb5ca4506Andreas Huber 23743c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber mDurationUs = -1; 23843c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber mPositionUs = -1; 23943c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber mState = UNINITIALIZED; 24043c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber mStartupSeekTimeUs = -1; 24143c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber 242f933441648ef6a71dee783d733aac17b9508b452Andreas Huber return OK; 243f933441648ef6a71dee783d733aac17b9508b452Andreas Huber} 244f933441648ef6a71dee783d733aac17b9508b452Andreas Huber 245f933441648ef6a71dee783d733aac17b9508b452Andreas Huberstatus_t NuPlayerDriver::setLooping(int loop) { 246f933441648ef6a71dee783d733aac17b9508b452Andreas Huber return INVALID_OPERATION; 247f933441648ef6a71dee783d733aac17b9508b452Andreas Huber} 248f933441648ef6a71dee783d733aac17b9508b452Andreas Huber 249f933441648ef6a71dee783d733aac17b9508b452Andreas Huberplayer_type NuPlayerDriver::playerType() { 250f933441648ef6a71dee783d733aac17b9508b452Andreas Huber return NU_PLAYER; 251f933441648ef6a71dee783d733aac17b9508b452Andreas Huber} 252f933441648ef6a71dee783d733aac17b9508b452Andreas Huber 253f933441648ef6a71dee783d733aac17b9508b452Andreas Huberstatus_t NuPlayerDriver::invoke(const Parcel &request, Parcel *reply) { 254f933441648ef6a71dee783d733aac17b9508b452Andreas Huber return INVALID_OPERATION; 255f933441648ef6a71dee783d733aac17b9508b452Andreas Huber} 256f933441648ef6a71dee783d733aac17b9508b452Andreas Huber 257f933441648ef6a71dee783d733aac17b9508b452Andreas Hubervoid NuPlayerDriver::setAudioSink(const sp<AudioSink> &audioSink) { 258f933441648ef6a71dee783d733aac17b9508b452Andreas Huber mPlayer->setAudioSink(audioSink); 259f933441648ef6a71dee783d733aac17b9508b452Andreas Huber} 260f933441648ef6a71dee783d733aac17b9508b452Andreas Huber 2614f9e47f2c03ce36261c4717cd7e131d7940bb068Gloria Wangstatus_t NuPlayerDriver::setParameter(int key, const Parcel &request) { 2624f9e47f2c03ce36261c4717cd7e131d7940bb068Gloria Wang return INVALID_OPERATION; 2634f9e47f2c03ce36261c4717cd7e131d7940bb068Gloria Wang} 2644f9e47f2c03ce36261c4717cd7e131d7940bb068Gloria Wang 2654f9e47f2c03ce36261c4717cd7e131d7940bb068Gloria Wangstatus_t NuPlayerDriver::getParameter(int key, Parcel *reply) { 2664f9e47f2c03ce36261c4717cd7e131d7940bb068Gloria Wang return INVALID_OPERATION; 2674f9e47f2c03ce36261c4717cd7e131d7940bb068Gloria Wang} 2684f9e47f2c03ce36261c4717cd7e131d7940bb068Gloria Wang 269f933441648ef6a71dee783d733aac17b9508b452Andreas Huberstatus_t NuPlayerDriver::getMetadata( 270f933441648ef6a71dee783d733aac17b9508b452Andreas Huber const media::Metadata::Filter& ids, Parcel *records) { 271f933441648ef6a71dee783d733aac17b9508b452Andreas Huber return INVALID_OPERATION; 272f933441648ef6a71dee783d733aac17b9508b452Andreas Huber} 273f933441648ef6a71dee783d733aac17b9508b452Andreas Huber 27443c3e6ce02215ca99d506458f596cb1211639f29Andreas Hubervoid NuPlayerDriver::notifyResetComplete() { 2751aef211b4e5dc952081727bfd2318b2cb5ca4506Andreas Huber Mutex::Autolock autoLock(mLock); 2761aef211b4e5dc952081727bfd2318b2cb5ca4506Andreas Huber CHECK(mResetInProgress); 2771aef211b4e5dc952081727bfd2318b2cb5ca4506Andreas Huber mResetInProgress = false; 2781aef211b4e5dc952081727bfd2318b2cb5ca4506Andreas Huber mCondition.broadcast(); 2791aef211b4e5dc952081727bfd2318b2cb5ca4506Andreas Huber} 2801aef211b4e5dc952081727bfd2318b2cb5ca4506Andreas Huber 28143c3e6ce02215ca99d506458f596cb1211639f29Andreas Hubervoid NuPlayerDriver::notifyDuration(int64_t durationUs) { 28243c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber Mutex::Autolock autoLock(mLock); 28343c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber mDurationUs = durationUs; 28443c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber} 28543c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber 28643c3e6ce02215ca99d506458f596cb1211639f29Andreas Hubervoid NuPlayerDriver::notifyPosition(int64_t positionUs) { 28743c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber Mutex::Autolock autoLock(mLock); 28843c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber mPositionUs = positionUs; 28943c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber} 29043c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber 29143c3e6ce02215ca99d506458f596cb1211639f29Andreas Hubervoid NuPlayerDriver::notifySeekComplete() { 29243c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber sendEvent(MEDIA_SEEK_COMPLETE); 29343c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber} 29443c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber 295f933441648ef6a71dee783d733aac17b9508b452Andreas Huber} // namespace android 296