189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project/*
289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project **
301cff464978aa0f749f42650180b45ea56cb17deJean-Baptiste Queru ** Copyright 2008, The Android Open Source Project
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#ifndef ANDROID_MEDIARECORDERCLIENT_H
1989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project#define ANDROID_MEDIARECORDERCLIENT_H
2089fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project
2189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project#include <media/IMediaRecorder.h>
2289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project
2389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Projectnamespace android {
2489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project
2530ab66297501757d745b9ae10da61adcd891f497Andreas Huberclass MediaRecorderBase;
26dac6a31a33ba53fb93850670cdddd1e6515dadceGloria Wangclass MediaPlayerService;
274ca2c7c913f8bd4ada13aca56d36045d42d1e00fWu-cheng Liclass ICameraRecordingProxy;
28b33f3407bab0970a7f9241680723a1140b177c50Pannag Sanketiclass ISurfaceTexture;
2989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project
3089fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Projectclass MediaRecorderClient : public BnMediaRecorder
3189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project{
3289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Projectpublic:
33b33f3407bab0970a7f9241680723a1140b177c50Pannag Sanketi    virtual     status_t   setCamera(const sp<ICamera>& camera,
34b33f3407bab0970a7f9241680723a1140b177c50Pannag Sanketi                                    const sp<ICameraRecordingProxy>& proxy);
35b33f3407bab0970a7f9241680723a1140b177c50Pannag Sanketi    virtual     status_t   setPreviewSurface(const sp<Surface>& surface);
36b33f3407bab0970a7f9241680723a1140b177c50Pannag Sanketi    virtual     status_t   setVideoSource(int vs);
37b33f3407bab0970a7f9241680723a1140b177c50Pannag Sanketi    virtual     status_t   setAudioSource(int as);
38b33f3407bab0970a7f9241680723a1140b177c50Pannag Sanketi    virtual     status_t   setOutputFormat(int of);
39b33f3407bab0970a7f9241680723a1140b177c50Pannag Sanketi    virtual     status_t   setVideoEncoder(int ve);
40b33f3407bab0970a7f9241680723a1140b177c50Pannag Sanketi    virtual     status_t   setAudioEncoder(int ae);
41b33f3407bab0970a7f9241680723a1140b177c50Pannag Sanketi    virtual     status_t   setOutputFile(const char* path);
42b33f3407bab0970a7f9241680723a1140b177c50Pannag Sanketi    virtual     status_t   setOutputFile(int fd, int64_t offset,
43b33f3407bab0970a7f9241680723a1140b177c50Pannag Sanketi                                                  int64_t length);
44b33f3407bab0970a7f9241680723a1140b177c50Pannag Sanketi    virtual     status_t   setVideoSize(int width, int height);
45b33f3407bab0970a7f9241680723a1140b177c50Pannag Sanketi    virtual     status_t   setVideoFrameRate(int frames_per_second);
46b33f3407bab0970a7f9241680723a1140b177c50Pannag Sanketi    virtual     status_t   setParameters(const String8& params);
47b33f3407bab0970a7f9241680723a1140b177c50Pannag Sanketi    virtual     status_t   setListener(
48b33f3407bab0970a7f9241680723a1140b177c50Pannag Sanketi                              const sp<IMediaRecorderClient>& listener);
49b33f3407bab0970a7f9241680723a1140b177c50Pannag Sanketi    virtual     status_t   prepare();
50b33f3407bab0970a7f9241680723a1140b177c50Pannag Sanketi    virtual     status_t   getMaxAmplitude(int* max);
51b33f3407bab0970a7f9241680723a1140b177c50Pannag Sanketi    virtual     status_t   start();
52b33f3407bab0970a7f9241680723a1140b177c50Pannag Sanketi    virtual     status_t   stop();
53b33f3407bab0970a7f9241680723a1140b177c50Pannag Sanketi    virtual     status_t   reset();
54b33f3407bab0970a7f9241680723a1140b177c50Pannag Sanketi    virtual     status_t   init();
55b33f3407bab0970a7f9241680723a1140b177c50Pannag Sanketi    virtual     status_t   close();
56b33f3407bab0970a7f9241680723a1140b177c50Pannag Sanketi    virtual     status_t   release();
57b33f3407bab0970a7f9241680723a1140b177c50Pannag Sanketi    virtual     status_t   dump(int fd, const Vector<String16>& args) const;
58b33f3407bab0970a7f9241680723a1140b177c50Pannag Sanketi    virtual     sp<ISurfaceTexture> querySurfaceMediaSource();
5989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project
6089fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Projectprivate:
61b33f3407bab0970a7f9241680723a1140b177c50Pannag Sanketi    friend class           MediaPlayerService;  // for accessing private constructor
6289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project
63b33f3407bab0970a7f9241680723a1140b177c50Pannag Sanketi                           MediaRecorderClient(
64b33f3407bab0970a7f9241680723a1140b177c50Pannag Sanketi                                   const sp<MediaPlayerService>& service,
65b33f3407bab0970a7f9241680723a1140b177c50Pannag Sanketi                                                               pid_t pid);
66b33f3407bab0970a7f9241680723a1140b177c50Pannag Sanketi    virtual                ~MediaRecorderClient();
6789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project
68b33f3407bab0970a7f9241680723a1140b177c50Pannag Sanketi    pid_t                  mPid;
69b33f3407bab0970a7f9241680723a1140b177c50Pannag Sanketi    Mutex                  mLock;
70b33f3407bab0970a7f9241680723a1140b177c50Pannag Sanketi    MediaRecorderBase      *mRecorder;
71b33f3407bab0970a7f9241680723a1140b177c50Pannag Sanketi    sp<MediaPlayerService> mMediaPlayerService;
7289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project};
7389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project
7489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project}; // namespace android
7589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project
7689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project#endif // ANDROID_MEDIARECORDERCLIENT_H
77