19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/*
29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project **
39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ** Copyright 2008, HTC Inc.
49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project **
59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ** Licensed under the Apache License, Version 2.0 (the "License");
69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ** you may not use this file except in compliance with the License.
79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ** You may obtain a copy of the License at
89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project **
99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project **     http://www.apache.org/licenses/LICENSE-2.0
109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project **
119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ** Unless required by applicable law or agreed to in writing, software
129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ** distributed under the License is distributed on an "AS IS" BASIS,
139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ** See the License for the specific language governing permissions and
159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ** limitations under the License.
169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#ifndef ANDROID_IMEDIARECORDER_H
199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#define ANDROID_IMEDIARECORDER_H
209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
210795272aa226f4e965968a03daddc53ce30b7cdaMathias Agopian#include <binder/IInterface.h>
229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectnamespace android {
249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectclass ISurface;
269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectclass ICamera;
279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectclass IMediaPlayerClient;
289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectclass IMediaRecorder: public IInterface
309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{
319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic:
329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    DECLARE_META_INTERFACE(MediaRecorder);
339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    virtual	status_t		setCamera(const sp<ICamera>& camera) = 0;
359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    virtual	status_t		setPreviewSurface(const sp<ISurface>& surface) = 0;
369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    virtual	status_t		setVideoSource(int vs) = 0;
379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    virtual	status_t		setAudioSource(int as) = 0;
389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    virtual	status_t		setOutputFormat(int of) = 0;
399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    virtual	status_t		setVideoEncoder(int ve) = 0;
409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    virtual	status_t		setAudioEncoder(int ae) = 0;
419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    virtual	status_t		setOutputFile(const char* path) = 0;
429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    virtual	status_t		setOutputFile(int fd, int64_t offset, int64_t length) = 0;
439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    virtual	status_t		setVideoSize(int width, int height) = 0;
449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    virtual	status_t		setVideoFrameRate(int frames_per_second) = 0;
45ba87e3e6c985e7175152993b5efcc7dd2f0e1c93The Android Open Source Project    virtual     status_t                setParameters(const String8& params) = 0;
469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    virtual     status_t                setListener(const sp<IMediaPlayerClient>& listener) = 0;
479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    virtual	status_t		prepare() = 0;
489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    virtual	status_t		getMaxAmplitude(int* max) = 0;
499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    virtual	status_t		start() = 0;
509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    virtual	status_t		stop() = 0;
519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    virtual	status_t		reset() = 0;
529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    virtual status_t        init() = 0;
539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    virtual status_t        close() = 0;
549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    virtual	status_t		release() = 0;
559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project};
569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// ----------------------------------------------------------------------------
589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectclass BnMediaRecorder: public BnInterface<IMediaRecorder>
609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{
619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic:
629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    virtual status_t    onTransact( uint32_t code,
639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                                    const Parcel& data,
649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                                    Parcel* reply,
659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                                    uint32_t flags = 0);
669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project};
679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}; // namespace android
699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#endif // ANDROID_IMEDIARECORDER_H
719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
72