IMediaRecorder.cpp revision 56f0cc533a38bdb84bc03adcb43515614ab21bae
189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project/* 289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project ** 389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project ** Copyright 2008, HTC Inc. 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//#define LOG_NDEBUG 0 1989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project#define LOG_TAG "IMediaRecorder" 2089fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project#include <utils/Log.h> 217562408b2261d38415453378b6188f74fda99d88Mathias Agopian#include <binder/Parcel.h> 2289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project#include <ui/ISurface.h> 2389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project#include <ui/ICamera.h> 2489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project#include <media/IMediaPlayerClient.h> 2589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project#include <media/IMediaRecorder.h> 2689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 2789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Projectnamespace android { 2889fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 2989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Projectenum { 3089fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project RELEASE = IBinder::FIRST_CALL_TRANSACTION, 3189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project INIT, 3289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project CLOSE, 3389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project RESET, 3489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project STOP, 3589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project START, 3689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project PREPARE, 3789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project GET_MAX_AMPLITUDE, 3889fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project SET_VIDEO_SOURCE, 3989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project SET_AUDIO_SOURCE, 4089fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project SET_OUTPUT_FORMAT, 4189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project SET_VIDEO_ENCODER, 4289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project SET_AUDIO_ENCODER, 4389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project SET_OUTPUT_FILE_PATH, 4489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project SET_OUTPUT_FILE_FD, 4589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project SET_VIDEO_SIZE, 4689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project SET_VIDEO_FRAMERATE, 47c048cae0367db6fbb4fe1127be5011910713d4adThe Android Open Source Project SET_PARAMETERS, 4889fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project SET_PREVIEW_SURFACE, 4989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project SET_CAMERA, 5089fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project SET_LISTENER 5189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project}; 5289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 5389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Projectclass BpMediaRecorder: public BpInterface<IMediaRecorder> 5489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project{ 5589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Projectpublic: 5689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project BpMediaRecorder(const sp<IBinder>& impl) 5789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project : BpInterface<IMediaRecorder>(impl) 5889fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project { 5989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project } 6089fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 6189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project status_t setCamera(const sp<ICamera>& camera) 6289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project { 6389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project LOGV("setCamera(%p)", camera.get()); 6489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project Parcel data, reply; 6589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project data.writeInterfaceToken(IMediaRecorder::getInterfaceDescriptor()); 6689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project data.writeStrongBinder(camera->asBinder()); 6789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project remote()->transact(SET_CAMERA, data, &reply); 6889fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project return reply.readInt32(); 6989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project } 7089fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 7189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project status_t setPreviewSurface(const sp<ISurface>& surface) 7289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project { 7389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project LOGV("setPreviewSurface(%p)", surface.get()); 7489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project Parcel data, reply; 7589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project data.writeInterfaceToken(IMediaRecorder::getInterfaceDescriptor()); 7689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project data.writeStrongBinder(surface->asBinder()); 7789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project remote()->transact(SET_PREVIEW_SURFACE, data, &reply); 7889fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project return reply.readInt32(); 7989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project } 8089fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 8189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project status_t init() 8289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project { 8389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project LOGV("init"); 8489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project Parcel data, reply; 8589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project data.writeInterfaceToken(IMediaRecorder::getInterfaceDescriptor()); 8689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project remote()->transact(INIT, data, &reply); 8789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project return reply.readInt32(); 8889fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project } 8989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 9089fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project status_t setVideoSource(int vs) 9189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project { 9289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project LOGV("setVideoSource(%d)", vs); 9389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project Parcel data, reply; 9489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project data.writeInterfaceToken(IMediaRecorder::getInterfaceDescriptor()); 9589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project data.writeInt32(vs); 9689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project remote()->transact(SET_VIDEO_SOURCE, data, &reply); 9789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project return reply.readInt32(); 9889fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project } 9989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 10089fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project status_t setAudioSource(int as) 10189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project { 10289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project LOGV("setAudioSource(%d)", as); 10389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project Parcel data, reply; 10489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project data.writeInterfaceToken(IMediaRecorder::getInterfaceDescriptor()); 10589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project data.writeInt32(as); 10689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project remote()->transact(SET_AUDIO_SOURCE, data, &reply); 10789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project return reply.readInt32(); 10889fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project } 10989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 11089fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project status_t setOutputFormat(int of) 11189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project { 11289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project LOGV("setOutputFormat(%d)", of); 11389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project Parcel data, reply; 11489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project data.writeInterfaceToken(IMediaRecorder::getInterfaceDescriptor()); 11589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project data.writeInt32(of); 11689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project remote()->transact(SET_OUTPUT_FORMAT, data, &reply); 11789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project return reply.readInt32(); 11889fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project } 11989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 12089fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project status_t setVideoEncoder(int ve) 12189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project { 12289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project LOGV("setVideoEncoder(%d)", ve); 12389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project Parcel data, reply; 12489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project data.writeInterfaceToken(IMediaRecorder::getInterfaceDescriptor()); 12589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project data.writeInt32(ve); 12689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project remote()->transact(SET_VIDEO_ENCODER, data, &reply); 12789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project return reply.readInt32(); 12889fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project } 12989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 13089fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project status_t setAudioEncoder(int ae) 13189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project { 13289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project LOGV("setAudioEncoder(%d)", ae); 13389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project Parcel data, reply; 13489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project data.writeInterfaceToken(IMediaRecorder::getInterfaceDescriptor()); 13589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project data.writeInt32(ae); 13689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project remote()->transact(SET_AUDIO_ENCODER, data, &reply); 13789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project return reply.readInt32(); 13889fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project } 13989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 14089fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project status_t setOutputFile(const char* path) 14189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project { 14289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project LOGV("setOutputFile(%s)", path); 14389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project Parcel data, reply; 14489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project data.writeInterfaceToken(IMediaRecorder::getInterfaceDescriptor()); 14589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project data.writeCString(path); 14689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project remote()->transact(SET_OUTPUT_FILE_PATH, data, &reply); 14789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project return reply.readInt32(); 14889fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project } 14989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 15089fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project status_t setOutputFile(int fd, int64_t offset, int64_t length) { 15189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project LOGV("setOutputFile(%d, %lld, %lld)", fd, offset, length); 15289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project Parcel data, reply; 15389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project data.writeInterfaceToken(IMediaRecorder::getInterfaceDescriptor()); 15489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project data.writeFileDescriptor(fd); 15589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project data.writeInt64(offset); 15689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project data.writeInt64(length); 15789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project remote()->transact(SET_OUTPUT_FILE_FD, data, &reply); 15889fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project return reply.readInt32(); 15989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project } 16089fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 16189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project status_t setVideoSize(int width, int height) 16289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project { 16389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project LOGV("setVideoSize(%dx%d)", width, height); 16489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project Parcel data, reply; 16589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project data.writeInterfaceToken(IMediaRecorder::getInterfaceDescriptor()); 16689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project data.writeInt32(width); 16789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project data.writeInt32(height); 16889fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project remote()->transact(SET_VIDEO_SIZE, data, &reply); 16989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project return reply.readInt32(); 17089fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project } 17189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 17289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project status_t setVideoFrameRate(int frames_per_second) 17389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project { 17489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project LOGV("setVideoFrameRate(%d)", frames_per_second); 17589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project Parcel data, reply; 17689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project data.writeInterfaceToken(IMediaRecorder::getInterfaceDescriptor()); 17789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project data.writeInt32(frames_per_second); 17889fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project remote()->transact(SET_VIDEO_FRAMERATE, data, &reply); 17989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project return reply.readInt32(); 18089fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project } 18189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 182c048cae0367db6fbb4fe1127be5011910713d4adThe Android Open Source Project status_t setParameters(const String8& params) 183c048cae0367db6fbb4fe1127be5011910713d4adThe Android Open Source Project { 184c048cae0367db6fbb4fe1127be5011910713d4adThe Android Open Source Project LOGV("setParameter(%s)", params.string()); 185c048cae0367db6fbb4fe1127be5011910713d4adThe Android Open Source Project Parcel data, reply; 186c048cae0367db6fbb4fe1127be5011910713d4adThe Android Open Source Project data.writeInterfaceToken(IMediaRecorder::getInterfaceDescriptor()); 187c048cae0367db6fbb4fe1127be5011910713d4adThe Android Open Source Project data.writeString8(params); 188c048cae0367db6fbb4fe1127be5011910713d4adThe Android Open Source Project remote()->transact(SET_PARAMETERS, data, &reply); 189c048cae0367db6fbb4fe1127be5011910713d4adThe Android Open Source Project return reply.readInt32(); 190c048cae0367db6fbb4fe1127be5011910713d4adThe Android Open Source Project } 191c048cae0367db6fbb4fe1127be5011910713d4adThe Android Open Source Project 19289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project status_t setListener(const sp<IMediaPlayerClient>& listener) 19389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project { 19489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project LOGV("setListener(%p)", listener.get()); 19589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project Parcel data, reply; 19689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project data.writeInterfaceToken(IMediaRecorder::getInterfaceDescriptor()); 19789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project data.writeStrongBinder(listener->asBinder()); 19889fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project remote()->transact(SET_LISTENER, data, &reply); 19989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project return reply.readInt32(); 20089fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project } 20189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 20289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project status_t prepare() 20389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project { 20489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project LOGV("prepare"); 20589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project Parcel data, reply; 20689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project data.writeInterfaceToken(IMediaRecorder::getInterfaceDescriptor()); 20789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project remote()->transact(PREPARE, data, &reply); 20889fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project return reply.readInt32(); 20989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project } 21089fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 21189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project status_t getMaxAmplitude(int* max) 21289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project { 21389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project LOGV("getMaxAmplitude"); 21489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project Parcel data, reply; 21589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project data.writeInterfaceToken(IMediaRecorder::getInterfaceDescriptor()); 21689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project remote()->transact(GET_MAX_AMPLITUDE, data, &reply); 21789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project *max = reply.readInt32(); 21889fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project return reply.readInt32(); 21989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project } 22089fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 22189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project status_t start() 22289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project { 22389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project LOGV("start"); 22489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project Parcel data, reply; 22589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project data.writeInterfaceToken(IMediaRecorder::getInterfaceDescriptor()); 22689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project remote()->transact(START, data, &reply); 22789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project return reply.readInt32(); 22889fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project } 22989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 23089fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project status_t stop() 23189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project { 23289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project LOGV("stop"); 23389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project Parcel data, reply; 23489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project data.writeInterfaceToken(IMediaRecorder::getInterfaceDescriptor()); 23589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project remote()->transact(STOP, data, &reply); 23689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project return reply.readInt32(); 23789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project } 23889fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 23989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project status_t reset() 24089fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project { 24189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project LOGV("reset"); 24289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project Parcel data, reply; 24389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project data.writeInterfaceToken(IMediaRecorder::getInterfaceDescriptor()); 24489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project remote()->transact(RESET, data, &reply); 24589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project return reply.readInt32(); 24689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project } 24789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 24889fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project status_t close() 24989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project { 25089fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project LOGV("close"); 25189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project Parcel data, reply; 25289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project data.writeInterfaceToken(IMediaRecorder::getInterfaceDescriptor()); 25389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project remote()->transact(CLOSE, data, &reply); 25489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project return reply.readInt32(); 25589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project } 25689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 25789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project status_t release() 25889fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project { 25989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project LOGV("release"); 26089fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project Parcel data, reply; 26189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project data.writeInterfaceToken(IMediaRecorder::getInterfaceDescriptor()); 26289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project remote()->transact(RELEASE, data, &reply); 26389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project return reply.readInt32(); 26489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project } 26589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project}; 26689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 26756f0cc533a38bdb84bc03adcb43515614ab21baenikoIMPLEMENT_META_INTERFACE(MediaRecorder, "android.media.IMediaRecorder"); 26889fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 26989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project// ---------------------------------------------------------------------- 27089fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 27189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Projectstatus_t BnMediaRecorder::onTransact( 27289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project uint32_t code, const Parcel& data, Parcel* reply, uint32_t flags) 27389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project{ 27489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project switch(code) { 27589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project case RELEASE: { 27689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project LOGV("RELEASE"); 27789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project CHECK_INTERFACE(IMediaRecorder, data, reply); 27889fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project reply->writeInt32(release()); 27989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project return NO_ERROR; 28089fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project } break; 28189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project case INIT: { 28289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project LOGV("INIT"); 28389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project CHECK_INTERFACE(IMediaRecorder, data, reply); 28489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project reply->writeInt32(init()); 28589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project return NO_ERROR; 28689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project } break; 28789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project case CLOSE: { 28889fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project LOGV("CLOSE"); 28989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project CHECK_INTERFACE(IMediaRecorder, data, reply); 29089fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project reply->writeInt32(close()); 29189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project return NO_ERROR; 29289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project } break; 29389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project case RESET: { 29489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project LOGV("RESET"); 29589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project CHECK_INTERFACE(IMediaRecorder, data, reply); 29689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project reply->writeInt32(reset()); 29789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project return NO_ERROR; 29889fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project } break; 29989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project case STOP: { 30089fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project LOGV("STOP"); 30189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project CHECK_INTERFACE(IMediaRecorder, data, reply); 30289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project reply->writeInt32(stop()); 30389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project return NO_ERROR; 30489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project } break; 30589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project case START: { 30689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project LOGV("START"); 30789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project CHECK_INTERFACE(IMediaRecorder, data, reply); 30889fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project reply->writeInt32(start()); 30989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project return NO_ERROR; 31089fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project } break; 31189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project case PREPARE: { 31289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project LOGV("PREPARE"); 31389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project CHECK_INTERFACE(IMediaRecorder, data, reply); 31489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project reply->writeInt32(prepare()); 31589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project return NO_ERROR; 31689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project } break; 31789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project case GET_MAX_AMPLITUDE: { 31889fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project LOGV("GET_MAX_AMPLITUDE"); 31989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project CHECK_INTERFACE(IMediaRecorder, data, reply); 32089fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project int max = 0; 32189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project status_t ret = getMaxAmplitude(&max); 32289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project reply->writeInt32(max); 32389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project reply->writeInt32(ret); 32489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project return NO_ERROR; 32589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project } break; 32689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project case SET_VIDEO_SOURCE: { 32789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project LOGV("SET_VIDEO_SOURCE"); 32889fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project CHECK_INTERFACE(IMediaRecorder, data, reply); 32989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project int vs = data.readInt32(); 33089fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project reply->writeInt32(setVideoSource(vs)); 33189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project return NO_ERROR; 33289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project } break; 33389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project case SET_AUDIO_SOURCE: { 33489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project LOGV("SET_AUDIO_SOURCE"); 33589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project CHECK_INTERFACE(IMediaRecorder, data, reply); 33689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project int as = data.readInt32(); 33789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project reply->writeInt32(setAudioSource(as)); 33889fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project return NO_ERROR; 33989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project } break; 34089fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project case SET_OUTPUT_FORMAT: { 34189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project LOGV("SET_OUTPUT_FORMAT"); 34289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project CHECK_INTERFACE(IMediaRecorder, data, reply); 34389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project int of = data.readInt32(); 34489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project reply->writeInt32(setOutputFormat(of)); 34589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project return NO_ERROR; 34689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project } break; 34789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project case SET_VIDEO_ENCODER: { 34889fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project LOGV("SET_VIDEO_ENCODER"); 34989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project CHECK_INTERFACE(IMediaRecorder, data, reply); 35089fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project int ve = data.readInt32(); 35189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project reply->writeInt32(setVideoEncoder(ve)); 35289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project return NO_ERROR; 35389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project } break; 35489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project case SET_AUDIO_ENCODER: { 35589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project LOGV("SET_AUDIO_ENCODER"); 35689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project CHECK_INTERFACE(IMediaRecorder, data, reply); 35789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project int ae = data.readInt32(); 35889fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project reply->writeInt32(setAudioEncoder(ae)); 35989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project return NO_ERROR; 36089fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 36189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project } break; 36289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project case SET_OUTPUT_FILE_PATH: { 36389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project LOGV("SET_OUTPUT_FILE_PATH"); 36489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project CHECK_INTERFACE(IMediaRecorder, data, reply); 36589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project const char* path = data.readCString(); 36689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project reply->writeInt32(setOutputFile(path)); 36789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project return NO_ERROR; 36889fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project } break; 36989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project case SET_OUTPUT_FILE_FD: { 37089fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project LOGV("SET_OUTPUT_FILE_FD"); 37189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project CHECK_INTERFACE(IMediaRecorder, data, reply); 37289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project int fd = dup(data.readFileDescriptor()); 37389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project int64_t offset = data.readInt64(); 37489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project int64_t length = data.readInt64(); 37589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project reply->writeInt32(setOutputFile(fd, offset, length)); 37689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project return NO_ERROR; 37789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project } break; 37889fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project case SET_VIDEO_SIZE: { 37989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project LOGV("SET_VIDEO_SIZE"); 38089fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project CHECK_INTERFACE(IMediaRecorder, data, reply); 38189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project int width = data.readInt32(); 38289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project int height = data.readInt32(); 38389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project reply->writeInt32(setVideoSize(width, height)); 38489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project return NO_ERROR; 38589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project } break; 38689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project case SET_VIDEO_FRAMERATE: { 38789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project LOGV("SET_VIDEO_FRAMERATE"); 38889fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project CHECK_INTERFACE(IMediaRecorder, data, reply); 38989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project int frames_per_second = data.readInt32(); 39089fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project reply->writeInt32(setVideoFrameRate(frames_per_second)); 39189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project return NO_ERROR; 39289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project } break; 393c048cae0367db6fbb4fe1127be5011910713d4adThe Android Open Source Project case SET_PARAMETERS: { 394c048cae0367db6fbb4fe1127be5011910713d4adThe Android Open Source Project LOGV("SET_PARAMETER"); 395c048cae0367db6fbb4fe1127be5011910713d4adThe Android Open Source Project CHECK_INTERFACE(IMediaRecorder, data, reply); 396c048cae0367db6fbb4fe1127be5011910713d4adThe Android Open Source Project reply->writeInt32(setParameters(data.readString8())); 397c048cae0367db6fbb4fe1127be5011910713d4adThe Android Open Source Project return NO_ERROR; 398c048cae0367db6fbb4fe1127be5011910713d4adThe Android Open Source Project } break; 39989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project case SET_LISTENER: { 40089fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project LOGV("SET_LISTENER"); 40189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project CHECK_INTERFACE(IMediaRecorder, data, reply); 40289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project sp<IMediaPlayerClient> listener = 40389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project interface_cast<IMediaPlayerClient>(data.readStrongBinder()); 40489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project reply->writeInt32(setListener(listener)); 40589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project return NO_ERROR; 40689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project } break; 40789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project case SET_PREVIEW_SURFACE: { 40889fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project LOGV("SET_PREVIEW_SURFACE"); 40989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project CHECK_INTERFACE(IMediaRecorder, data, reply); 41089fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project sp<ISurface> surface = interface_cast<ISurface>(data.readStrongBinder()); 41189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project reply->writeInt32(setPreviewSurface(surface)); 41289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project return NO_ERROR; 41389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project } break; 41489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project case SET_CAMERA: { 41589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project LOGV("SET_CAMERA"); 41689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project CHECK_INTERFACE(IMediaRecorder, data, reply); 41789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project sp<ICamera> camera = interface_cast<ICamera>(data.readStrongBinder()); 41889fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project reply->writeInt32(setCamera(camera)); 41989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project return NO_ERROR; 42089fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project } break; 42189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project default: 42289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project return BBinder::onTransact(code, data, reply, flags); 42389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project } 42489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project} 42589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 42689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project// ---------------------------------------------------------------------------- 42789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 42889fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project}; // namespace android 429