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_MEDIARECORDERCLIENT_H
199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#define ANDROID_MEDIARECORDERCLIENT_H
209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#include <media/IMediaRecorder.h>
229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectnamespace android {
249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
25ea6a38c63b9e9aeb45aa22587c069bd3c5d83df8Andreas Huberclass MediaRecorderBase;
26608a2630bb1eec63431cf065a76962e138aa1dc2Gloria Wangclass MediaPlayerService;
279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectclass MediaRecorderClient : public BnMediaRecorder
299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{
309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic:
319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    virtual	    status_t		setCamera(const sp<ICamera>& camera);
329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    virtual     status_t        setPreviewSurface(const sp<ISurface>& surface);
339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    virtual     status_t        setVideoSource(int vs);
349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    virtual     status_t        setAudioSource(int as);
359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    virtual     status_t        setOutputFormat(int of);
369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    virtual     status_t        setVideoEncoder(int ve);
379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    virtual     status_t        setAudioEncoder(int ae);
389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    virtual     status_t        setOutputFile(const char* path);
399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    virtual     status_t        setOutputFile(int fd, int64_t offset, int64_t length);
409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    virtual     status_t        setVideoSize(int width, int height);
419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    virtual     status_t        setVideoFrameRate(int frames_per_second);
42ba87e3e6c985e7175152993b5efcc7dd2f0e1c93The Android Open Source Project    virtual     status_t        setParameters(const String8& params);
439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    virtual     status_t        setListener(const sp<IMediaPlayerClient>& listener);
449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    virtual     status_t        prepare();
459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    virtual     status_t        getMaxAmplitude(int* max);
469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    virtual     status_t        start();
479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    virtual     status_t        stop();
489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    virtual	    status_t        reset();
499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    virtual     status_t        init();
509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    virtual     status_t        close();
519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    virtual     status_t        release();
529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectprivate:
549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    friend class                 MediaPlayerService;  // for accessing private constructor
559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
56608a2630bb1eec63431cf065a76962e138aa1dc2Gloria Wang                                 MediaRecorderClient(const sp<MediaPlayerService>& service, pid_t pid);
579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    virtual 		         ~MediaRecorderClient();
589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    pid_t			 mPid;
609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    Mutex			 mLock;
61ea6a38c63b9e9aeb45aa22587c069bd3c5d83df8Andreas Huber    MediaRecorderBase            *mRecorder;
62608a2630bb1eec63431cf065a76962e138aa1dc2Gloria Wang    sp<MediaPlayerService>       mMediaPlayerService;
639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project};
649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}; // namespace android
669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#endif // ANDROID_MEDIARECORDERCLIENT_H
689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
69