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