1e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman/* 2e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman ** 3e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman ** Copyright 2008, The Android Open Source Project 4e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman ** 5e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman ** Licensed under the Apache License, Version 2.0 (the "License"); 6e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman ** you may not use this file except in compliance with the License. 7e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman ** You may obtain a copy of the License at 8e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman ** 9e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman ** http://www.apache.org/licenses/LICENSE-2.0 10e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman ** 11e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman ** Unless required by applicable law or agreed to in writing, software 12e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman ** distributed under the License is distributed on an "AS IS" BASIS, 13e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman ** See the License for the specific language governing permissions and 15e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman ** limitations under the License. 16e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman */ 17e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman 18e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman#ifndef ANDROID_IMEDIARECORDER_H 19e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman#define ANDROID_IMEDIARECORDER_H 20e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman 21e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman#include <binder/IInterface.h> 22e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman 23e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatramannamespace android { 24e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman 25e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatramanclass Surface; 26e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatramannamespace hardware { 27e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatramanclass ICamera; 28e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman} 29e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatramanclass ICameraRecordingProxy; 30e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatramanclass IMediaRecorderClient; 31e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatramanclass IGraphicBufferProducer; 32e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatramanstruct PersistentSurface; 33e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman 34e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatramanclass IMediaRecorder: public IInterface 35e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman{ 36e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatramanpublic: 37e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman DECLARE_META_INTERFACE(MediaRecorder); 38e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman 39e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman virtual status_t setCamera(const sp<hardware::ICamera>& camera, 40e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman const sp<ICameraRecordingProxy>& proxy) = 0; 41e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman virtual status_t setPreviewSurface(const sp<IGraphicBufferProducer>& surface) = 0; 42e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman virtual status_t setVideoSource(int vs) = 0; 43e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman virtual status_t setAudioSource(int as) = 0; 44e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman virtual status_t setOutputFormat(int of) = 0; 45e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman virtual status_t setVideoEncoder(int ve) = 0; 46e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman virtual status_t setAudioEncoder(int ae) = 0; 47e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman virtual status_t setOutputFile(int fd) = 0; 48e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman virtual status_t setNextOutputFile(int fd) = 0; 49e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman virtual status_t setVideoSize(int width, int height) = 0; 50e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman virtual status_t setVideoFrameRate(int frames_per_second) = 0; 51e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman virtual status_t setParameters(const String8& params) = 0; 52e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman virtual status_t setListener(const sp<IMediaRecorderClient>& listener) = 0; 53e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman virtual status_t setClientName(const String16& clientName) = 0; 54e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman virtual status_t prepare() = 0; 55e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman virtual status_t getMaxAmplitude(int* max) = 0; 56e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman virtual status_t getMetrics(Parcel *reply) = 0; 57e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman virtual status_t start() = 0; 58e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman virtual status_t stop() = 0; 59e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman virtual status_t reset() = 0; 60e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman virtual status_t pause() = 0; 61e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman virtual status_t resume() = 0; 62e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman virtual status_t init() = 0; 63e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman virtual status_t close() = 0; 64e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman virtual status_t release() = 0; 65e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman virtual status_t setInputSurface(const sp<PersistentSurface>& surface) = 0; 66e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman virtual sp<IGraphicBufferProducer> querySurfaceMediaSource() = 0; 67e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman}; 68e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman 69e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman// ---------------------------------------------------------------------------- 70e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman 71e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatramanclass BnMediaRecorder: public BnInterface<IMediaRecorder> 72e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman{ 73e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatramanpublic: 74e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman virtual status_t onTransact( uint32_t code, 75e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman const Parcel& data, 76e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman Parcel* reply, 77e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman uint32_t flags = 0); 78e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman}; 79e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman 80e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman}; // namespace android 81e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman 82e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman#endif // ANDROID_IMEDIARECORDER_H 83