invoke_mock_media_player.cpp revision 256430093679e1d62b54fb0c852126e54d162f6f
18f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania/* 28f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania * Copyright (C) 2009 The Android Open Source Project 38f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania * 48f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania * Licensed under the Apache License, Version 2.0 (the "License"); 58f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania * you may not use this file except in compliance with the License. 68f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania * You may obtain a copy of the License at 78f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania * 88f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania * http://www.apache.org/licenses/LICENSE-2.0 98f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania * 108f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania * Unless required by applicable law or agreed to in writing, software 118f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania * distributed under the License is distributed on an "AS IS" BASIS, 128f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 138f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania * See the License for the specific language governing permissions and 148f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania * limitations under the License. 158f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania */ 168f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania 178f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania//#define LOG_NDEBUG 0 188f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania#define LOG_TAG "TestPlayerStub" 198f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania#include "utils/Log.h" 208f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania 218f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania#include <string.h> 228f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania 238994837f27e783a10f5cc038a7ae7595aabffdb6niko#include <binder/Parcel.h> 248994837f27e783a10f5cc038a7ae7595aabffdb6niko#include <media/MediaPlayerInterface.h> 258994837f27e783a10f5cc038a7ae7595aabffdb6niko#include <utils/Errors.h> 268f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania 278994837f27e783a10f5cc038a7ae7595aabffdb6nikousing android::INVALID_OPERATION; 288f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Cataniausing android::ISurface; 298f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Cataniausing android::MediaPlayerBase; 308f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Cataniausing android::OK; 318f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Cataniausing android::Parcel; 328994837f27e783a10f5cc038a7ae7595aabffdb6nikousing android::SortedVector; 338f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Cataniausing android::TEST_PLAYER; 348f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Cataniausing android::UNKNOWN_ERROR; 358f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Cataniausing android::player_type; 368f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Cataniausing android::sp; 378f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Cataniausing android::status_t; 38256430093679e1d62b54fb0c852126e54d162f6fAndreas Huberusing android::String8; 39256430093679e1d62b54fb0c852126e54d162f6fAndreas Huberusing android::KeyedVector; 408f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania 418f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania// This file contains a test player that is loaded via the 428f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania// TestPlayerStub class. The player contains various implementation 438f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania// of the invoke method that java tests can use. 448f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania 458f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catanianamespace { 468f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Cataniaconst char *kPing = "ping"; 478f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania 488f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Cataniaclass Player: public MediaPlayerBase 498f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania{ 508f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania public: 518f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania enum TestType {TEST_UNKNOWN, PING}; 528f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania Player() {} 538f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania virtual ~Player() {} 548f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania 558f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania virtual status_t initCheck() {return OK;} 568f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania virtual bool hardwareOutput() {return true;} 578f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania 58256430093679e1d62b54fb0c852126e54d162f6fAndreas Huber virtual status_t setDataSource( 59256430093679e1d62b54fb0c852126e54d162f6fAndreas Huber const char *url, 60256430093679e1d62b54fb0c852126e54d162f6fAndreas Huber const KeyedVector<String8, String8> *) { 618f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania LOGV("setDataSource %s", url); 628f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania mTest = TEST_UNKNOWN; 638f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania if (strncmp(url, kPing, strlen(kPing)) == 0) { 648f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania mTest = PING; 658f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania } 668f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania return OK; 678f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania } 688f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania 698f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania virtual status_t setDataSource(int fd, int64_t offset, int64_t length) {return OK;} 708f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania virtual status_t setVideoSurface(const sp<ISurface>& surface) {return OK;} 718f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania virtual status_t prepare() {return OK;} 728f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania virtual status_t prepareAsync() {return OK;} 738f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania virtual status_t start() {return OK;} 748f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania virtual status_t stop() {return OK;} 758f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania virtual status_t pause() {return OK;} 768f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania virtual bool isPlaying() {return true;} 778f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania virtual status_t seekTo(int msec) {return OK;} 788f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania virtual status_t getCurrentPosition(int *msec) {return OK;} 798f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania virtual status_t getDuration(int *msec) {return OK;} 808f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania virtual status_t reset() {return OK;} 818f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania virtual status_t setLooping(int loop) {return OK;} 828f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania virtual player_type playerType() {return TEST_PLAYER;} 838f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania virtual status_t invoke(const Parcel& request, Parcel *reply); 848994837f27e783a10f5cc038a7ae7595aabffdb6niko 858f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania private: 868f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania // Take a request, copy it to the reply. 878f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania void ping(const Parcel& request, Parcel *reply); 888f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania 898f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania status_t mStatus; 908f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania TestType mTest; 918f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania}; 928f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania 938f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Cataniastatus_t Player::invoke(const Parcel& request, Parcel *reply) 948f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania{ 958f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania switch (mTest) { 968f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania case PING: 978f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania ping(request, reply); 988f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania break; 998f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania default: mStatus = UNKNOWN_ERROR; 1008f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania } 1018f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania return mStatus; 1028f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania} 1038f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania 1048f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Cataniavoid Player::ping(const Parcel& request, Parcel *reply) 1058f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania{ 1068f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania const size_t len = request.dataAvail(); 1078f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania 1088f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania reply->setData(static_cast<const uint8_t*>(request.readInplace(len)), len); 1098f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania mStatus = OK; 1108f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania} 1118f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania 1128f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania} 1138f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania 1148f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Cataniaextern "C" android::MediaPlayerBase* newPlayer() 1158f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania{ 1168f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania LOGD("New invoke test player"); 1178f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania return new Player(); 1188f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania} 1198f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania 1208f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Cataniaextern "C" android::status_t deletePlayer(android::MediaPlayerBase *player) 1218f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania{ 1228f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania LOGD("Delete invoke test player"); 1238f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania delete player; 1248f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania return OK; 1258f5fcab05f1d6f644a9c30f012b8ff302f24a118Nicolas Catania} 126