NuPlayerDriver.cpp revision 5bc087c573c70c84c6a39946457590b42d392a33
1/* 2 * Copyright (C) 2010 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17//#define LOG_NDEBUG 0 18#define LOG_TAG "NuPlayerDriver" 19#include <utils/Log.h> 20 21#include "NuPlayerDriver.h" 22 23#include "NuPlayer.h" 24 25#include <media/stagefright/foundation/ALooper.h> 26 27namespace android { 28 29NuPlayerDriver::NuPlayerDriver() 30 : mLooper(new ALooper), 31 mPlayer(false) { 32 mLooper->setName("NuPlayerDriver Looper"); 33 34 mLooper->start( 35 false, /* runOnCallingThread */ 36 true, /* canCallJava */ 37 PRIORITY_AUDIO); 38 39 mPlayer = new NuPlayer; 40 mLooper->registerHandler(mPlayer); 41 42 mPlayer->setListener(this); 43} 44 45NuPlayerDriver::~NuPlayerDriver() { 46 mLooper->stop(); 47} 48 49status_t NuPlayerDriver::initCheck() { 50 return OK; 51} 52 53status_t NuPlayerDriver::setDataSource( 54 const char *url, const KeyedVector<String8, String8> *headers) { 55 mPlayer->setDataSource(url, headers); 56 57 return OK; 58} 59 60status_t NuPlayerDriver::setDataSource(int fd, int64_t offset, int64_t length) { 61 return INVALID_OPERATION; 62} 63 64status_t NuPlayerDriver::setDataSource(const sp<IStreamSource> &source) { 65 mPlayer->setDataSource(source); 66 67 return OK; 68} 69 70status_t NuPlayerDriver::setVideoSurface(const sp<Surface> &surface) { 71 mPlayer->setVideoSurface(surface); 72 73 return OK; 74} 75 76status_t NuPlayerDriver::prepare() { 77 return OK; 78} 79 80status_t NuPlayerDriver::prepareAsync() { 81 sendEvent(MEDIA_PREPARED); 82 83 return OK; 84} 85 86status_t NuPlayerDriver::start() { 87 mPlayer->start(); 88 mPlaying = true; 89 90 return OK; 91} 92 93status_t NuPlayerDriver::stop() { 94 mPlaying = false; 95 return OK; 96} 97 98status_t NuPlayerDriver::pause() { 99 mPlaying = false; 100 return OK; 101} 102 103bool NuPlayerDriver::isPlaying() { 104 return mPlaying; 105} 106 107status_t NuPlayerDriver::seekTo(int msec) { 108 return INVALID_OPERATION; 109} 110 111status_t NuPlayerDriver::getCurrentPosition(int *msec) { 112 *msec = 0; 113 114 return OK; 115} 116 117status_t NuPlayerDriver::getDuration(int *msec) { 118 *msec = 0; 119 120 return OK; 121} 122 123status_t NuPlayerDriver::reset() { 124 return OK; 125} 126 127status_t NuPlayerDriver::setLooping(int loop) { 128 return INVALID_OPERATION; 129} 130 131player_type NuPlayerDriver::playerType() { 132 return NU_PLAYER; 133} 134 135status_t NuPlayerDriver::invoke(const Parcel &request, Parcel *reply) { 136 return INVALID_OPERATION; 137} 138 139void NuPlayerDriver::setAudioSink(const sp<AudioSink> &audioSink) { 140 mPlayer->setAudioSink(audioSink); 141} 142 143status_t NuPlayerDriver::getMetadata( 144 const media::Metadata::Filter& ids, Parcel *records) { 145 return INVALID_OPERATION; 146} 147 148} // namespace android 149