IMediaPlayerService.cpp revision d681bbb1767bed09415e050ba78975df214bcd68
189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project/* 289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project** 389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project** Copyright 2008, The Android Open Source Project 489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project** 589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project** Licensed under the Apache License, Version 2.0 (the "License"); 689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project** you may not use this file except in compliance with the License. 789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project** You may obtain a copy of the License at 889fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project** 989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project** http://www.apache.org/licenses/LICENSE-2.0 1089fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project** 1189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project** Unless required by applicable law or agreed to in writing, software 1289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project** distributed under the License is distributed on an "AS IS" BASIS, 1389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project** See the License for the specific language governing permissions and 1589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project** limitations under the License. 1689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project*/ 1789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 1889fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project#include <stdint.h> 1989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project#include <sys/types.h> 2089fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 2120111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber#include <binder/Parcel.h> 227562408b2261d38415453378b6188f74fda99d88Mathias Agopian#include <binder/IMemory.h> 2389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project#include <media/IMediaPlayerService.h> 2489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project#include <media/IMediaRecorder.h> 2520111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber#include <media/IOMX.h> 26e2b1028852120bcfded33b8f06f66b780437fe92Andreas Huber#include <media/IStreamSource.h> 2720111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber 2820111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber#include <utils/Errors.h> // for status_t 2989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 3089fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Projectnamespace android { 3189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 3289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Projectenum { 33d681bbb1767bed09415e050ba78975df214bcd68Dave Burke CREATE = IBinder::FIRST_CALL_TRANSACTION, 3489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project DECODE_URL, 3589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project DECODE_FD, 3689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project CREATE_MEDIA_RECORDER, 3789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project CREATE_METADATA_RETRIEVER, 387cf180c9bff69e5cc4a2f4e53b432db45ebbebabGloria Wang GET_OMX, 397cf180c9bff69e5cc4a2f4e53b432db45ebbebabGloria Wang ADD_BATTERY_DATA, 407cf180c9bff69e5cc4a2f4e53b432db45ebbebabGloria Wang PULL_BATTERY_DATA 4189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project}; 4289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 4389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Projectclass BpMediaPlayerService: public BpInterface<IMediaPlayerService> 4489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project{ 4589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Projectpublic: 4689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project BpMediaPlayerService(const sp<IBinder>& impl) 4789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project : BpInterface<IMediaPlayerService>(impl) 4889fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project { 4989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project } 5089fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 5189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project virtual sp<IMediaMetadataRetriever> createMetadataRetriever(pid_t pid) 5289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project { 5389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project Parcel data, reply; 5489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project data.writeInterfaceToken(IMediaPlayerService::getInterfaceDescriptor()); 5589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project data.writeInt32(pid); 5689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project remote()->transact(CREATE_METADATA_RETRIEVER, data, &reply); 5789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project return interface_cast<IMediaMetadataRetriever>(reply.readStrongBinder()); 5889fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project } 5989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 602db8455d8f4468a637109d31f319ce02d9d743ecAndreas Huber virtual sp<IMediaPlayer> create( 61d681bbb1767bed09415e050ba78975df214bcd68Dave Burke pid_t pid, const sp<IMediaPlayerClient>& client, int audioSessionId) { 6289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project Parcel data, reply; 6389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project data.writeInterfaceToken(IMediaPlayerService::getInterfaceDescriptor()); 6489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project data.writeInt32(pid); 6589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project data.writeStrongBinder(client->asBinder()); 66a514bdb58b5de4986679f72b7204b4764f7a2778Eric Laurent data.writeInt32(audioSessionId); 672db8455d8f4468a637109d31f319ce02d9d743ecAndreas Huber 68d681bbb1767bed09415e050ba78975df214bcd68Dave Burke remote()->transact(CREATE, data, &reply); 6989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project return interface_cast<IMediaPlayer>(reply.readStrongBinder()); 7089fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project } 7189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 7289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project virtual sp<IMediaRecorder> createMediaRecorder(pid_t pid) 7389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project { 7489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project Parcel data, reply; 7589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project data.writeInterfaceToken(IMediaPlayerService::getInterfaceDescriptor()); 7689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project data.writeInt32(pid); 7789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project remote()->transact(CREATE_MEDIA_RECORDER, data, &reply); 7889fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project return interface_cast<IMediaRecorder>(reply.readStrongBinder()); 7989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project } 8089fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 8189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project virtual sp<IMemory> decode(const char* url, uint32_t *pSampleRate, int* pNumChannels, int* pFormat) 8289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project { 8389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project Parcel data, reply; 8489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project data.writeInterfaceToken(IMediaPlayerService::getInterfaceDescriptor()); 8589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project data.writeCString(url); 8689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project remote()->transact(DECODE_URL, data, &reply); 8789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project *pSampleRate = uint32_t(reply.readInt32()); 8889fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project *pNumChannels = reply.readInt32(); 8989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project *pFormat = reply.readInt32(); 9089fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project return interface_cast<IMemory>(reply.readStrongBinder()); 9189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project } 9289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 9389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project virtual sp<IMemory> decode(int fd, int64_t offset, int64_t length, uint32_t *pSampleRate, int* pNumChannels, int* pFormat) 9489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project { 9589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project Parcel data, reply; 9689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project data.writeInterfaceToken(IMediaPlayerService::getInterfaceDescriptor()); 9789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project data.writeFileDescriptor(fd); 9889fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project data.writeInt64(offset); 9989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project data.writeInt64(length); 10089fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project remote()->transact(DECODE_FD, data, &reply); 10189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project *pSampleRate = uint32_t(reply.readInt32()); 10289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project *pNumChannels = reply.readInt32(); 10389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project *pFormat = reply.readInt32(); 10489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project return interface_cast<IMemory>(reply.readStrongBinder()); 10589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project } 10620111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber 107318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber virtual sp<IOMX> getOMX() { 10820111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber Parcel data, reply; 10920111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber data.writeInterfaceToken(IMediaPlayerService::getInterfaceDescriptor()); 110318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber remote()->transact(GET_OMX, data, &reply); 11120111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber return interface_cast<IOMX>(reply.readStrongBinder()); 11220111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber } 1137cf180c9bff69e5cc4a2f4e53b432db45ebbebabGloria Wang 1147cf180c9bff69e5cc4a2f4e53b432db45ebbebabGloria Wang virtual void addBatteryData(uint32_t params) { 1157cf180c9bff69e5cc4a2f4e53b432db45ebbebabGloria Wang Parcel data, reply; 1167cf180c9bff69e5cc4a2f4e53b432db45ebbebabGloria Wang data.writeInterfaceToken(IMediaPlayerService::getInterfaceDescriptor()); 1177cf180c9bff69e5cc4a2f4e53b432db45ebbebabGloria Wang data.writeInt32(params); 1187cf180c9bff69e5cc4a2f4e53b432db45ebbebabGloria Wang remote()->transact(ADD_BATTERY_DATA, data, &reply); 1197cf180c9bff69e5cc4a2f4e53b432db45ebbebabGloria Wang } 1207cf180c9bff69e5cc4a2f4e53b432db45ebbebabGloria Wang 1217cf180c9bff69e5cc4a2f4e53b432db45ebbebabGloria Wang virtual status_t pullBatteryData(Parcel* reply) { 1227cf180c9bff69e5cc4a2f4e53b432db45ebbebabGloria Wang Parcel data; 1237cf180c9bff69e5cc4a2f4e53b432db45ebbebabGloria Wang data.writeInterfaceToken(IMediaPlayerService::getInterfaceDescriptor()); 1247cf180c9bff69e5cc4a2f4e53b432db45ebbebabGloria Wang return remote()->transact(PULL_BATTERY_DATA, data, reply); 1257cf180c9bff69e5cc4a2f4e53b432db45ebbebabGloria Wang } 12689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project}; 12789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 12856f0cc533a38bdb84bc03adcb43515614ab21baenikoIMPLEMENT_META_INTERFACE(MediaPlayerService, "android.media.IMediaPlayerService"); 12989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 13089fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project// ---------------------------------------------------------------------- 13189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 13289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Projectstatus_t BnMediaPlayerService::onTransact( 13389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project uint32_t code, const Parcel& data, Parcel* reply, uint32_t flags) 13489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project{ 13589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project switch(code) { 136d681bbb1767bed09415e050ba78975df214bcd68Dave Burke case CREATE: { 13789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project CHECK_INTERFACE(IMediaPlayerService, data, reply); 13889fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project pid_t pid = data.readInt32(); 1392db8455d8f4468a637109d31f319ce02d9d743ecAndreas Huber sp<IMediaPlayerClient> client = 1402db8455d8f4468a637109d31f319ce02d9d743ecAndreas Huber interface_cast<IMediaPlayerClient>(data.readStrongBinder()); 141a514bdb58b5de4986679f72b7204b4764f7a2778Eric Laurent int audioSessionId = data.readInt32(); 142d681bbb1767bed09415e050ba78975df214bcd68Dave Burke sp<IMediaPlayer> player = create(pid, client, audioSessionId); 14389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project reply->writeStrongBinder(player->asBinder()); 14489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project return NO_ERROR; 14589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project } break; 14689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project case DECODE_URL: { 14789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project CHECK_INTERFACE(IMediaPlayerService, data, reply); 14889fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project const char* url = data.readCString(); 14989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project uint32_t sampleRate; 15089fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project int numChannels; 15189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project int format; 15289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project sp<IMemory> player = decode(url, &sampleRate, &numChannels, &format); 15389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project reply->writeInt32(sampleRate); 15489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project reply->writeInt32(numChannels); 15589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project reply->writeInt32(format); 15689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project reply->writeStrongBinder(player->asBinder()); 15789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project return NO_ERROR; 15889fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project } break; 15989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project case DECODE_FD: { 16089fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project CHECK_INTERFACE(IMediaPlayerService, data, reply); 16189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project int fd = dup(data.readFileDescriptor()); 16289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project int64_t offset = data.readInt64(); 16389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project int64_t length = data.readInt64(); 16489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project uint32_t sampleRate; 16589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project int numChannels; 16689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project int format; 16789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project sp<IMemory> player = decode(fd, offset, length, &sampleRate, &numChannels, &format); 16889fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project reply->writeInt32(sampleRate); 16989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project reply->writeInt32(numChannels); 17089fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project reply->writeInt32(format); 17189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project reply->writeStrongBinder(player->asBinder()); 17289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project return NO_ERROR; 17389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project } break; 17489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project case CREATE_MEDIA_RECORDER: { 17589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project CHECK_INTERFACE(IMediaPlayerService, data, reply); 17689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project pid_t pid = data.readInt32(); 17789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project sp<IMediaRecorder> recorder = createMediaRecorder(pid); 17889fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project reply->writeStrongBinder(recorder->asBinder()); 17989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project return NO_ERROR; 18089fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project } break; 18189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project case CREATE_METADATA_RETRIEVER: { 18289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project CHECK_INTERFACE(IMediaPlayerService, data, reply); 18389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project pid_t pid = data.readInt32(); 18489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project sp<IMediaMetadataRetriever> retriever = createMetadataRetriever(pid); 18589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project reply->writeStrongBinder(retriever->asBinder()); 18689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project return NO_ERROR; 18789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project } break; 188318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber case GET_OMX: { 18920111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber CHECK_INTERFACE(IMediaPlayerService, data, reply); 190318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber sp<IOMX> omx = getOMX(); 19120111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber reply->writeStrongBinder(omx->asBinder()); 19220111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber return NO_ERROR; 19320111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber } break; 1947cf180c9bff69e5cc4a2f4e53b432db45ebbebabGloria Wang case ADD_BATTERY_DATA: { 1957cf180c9bff69e5cc4a2f4e53b432db45ebbebabGloria Wang CHECK_INTERFACE(IMediaPlayerService, data, reply); 1967cf180c9bff69e5cc4a2f4e53b432db45ebbebabGloria Wang uint32_t params = data.readInt32(); 1977cf180c9bff69e5cc4a2f4e53b432db45ebbebabGloria Wang addBatteryData(params); 1987cf180c9bff69e5cc4a2f4e53b432db45ebbebabGloria Wang return NO_ERROR; 1997cf180c9bff69e5cc4a2f4e53b432db45ebbebabGloria Wang } break; 2007cf180c9bff69e5cc4a2f4e53b432db45ebbebabGloria Wang case PULL_BATTERY_DATA: { 2017cf180c9bff69e5cc4a2f4e53b432db45ebbebabGloria Wang CHECK_INTERFACE(IMediaPlayerService, data, reply); 2027cf180c9bff69e5cc4a2f4e53b432db45ebbebabGloria Wang pullBatteryData(reply); 2037cf180c9bff69e5cc4a2f4e53b432db45ebbebabGloria Wang return NO_ERROR; 2047cf180c9bff69e5cc4a2f4e53b432db45ebbebabGloria Wang } break; 20589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project default: 20689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project return BBinder::onTransact(code, data, reply, flags); 20789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project } 20889fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project} 20989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 21089fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project// ---------------------------------------------------------------------------- 21189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 21289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project}; // namespace android 213