19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* 29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ** Copyright (C) 2008 The Android Open Source Project 39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ** 49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ** Licensed under the Apache License, Version 2.0 (the "License"); 59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ** you may not use this file except in compliance with the License. 69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ** You may obtain a copy of the License at 79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ** 89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ** http://www.apache.org/licenses/LICENSE-2.0 99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ** 109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ** Unless required by applicable law or agreed to in writing, software 119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ** distributed under the License is distributed on an "AS IS" BASIS, 129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ** See the License for the specific language governing permissions and 149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ** 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_MEDIARECORDER_H 199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#define ANDROID_MEDIARECORDER_H 209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 213b4062eeb01be33951ba214e027da523cf09f8b1Mathias Agopian#include <utils/Log.h> 223b4062eeb01be33951ba214e027da523cf09f8b1Mathias Agopian#include <utils/threads.h> 233b4062eeb01be33951ba214e027da523cf09f8b1Mathias Agopian#include <utils/List.h> 243b4062eeb01be33951ba214e027da523cf09f8b1Mathias Agopian#include <utils/Errors.h> 25fe1bafecdecd49533c46521057c7c9eeb788d0faJames Dong#include <media/IMediaRecorderClient.h> 2634bbc22cbca0004475788f06be2300fef23c6a52James Dong#include <media/IMediaDeathNotifier.h> 279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectnamespace android { 299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectclass Surface; 319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectclass IMediaRecorder; 329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectclass ICamera; 3342419ce28a09eb63e29a8fef87e6f5534f41902fWu-cheng Liclass ICameraRecordingProxy; 34897e27bc75886e44d2f9f09155127f401c4173eaPannag Sanketiclass ISurfaceTexture; 35897e27bc75886e44d2f9f09155127f401c4173eaPannag Sanketiclass SurfaceTextureClient; 369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projecttypedef void (*media_completion_f)(status_t status, void *cookie); 389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectenum video_source { 409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project VIDEO_SOURCE_DEFAULT = 0, 419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project VIDEO_SOURCE_CAMERA = 1, 42897e27bc75886e44d2f9f09155127f401c4173eaPannag Sanketi VIDEO_SOURCE_GRALLOC_BUFFER = 2, 432bcda90c0234f67f210a96f195b355493ca7d1ffJianhong Jiang 442bcda90c0234f67f210a96f195b355493ca7d1ffJianhong Jiang VIDEO_SOURCE_LIST_END // must be last - used to validate audio source type 459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}; 469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 472bcda90c0234f67f210a96f195b355493ca7d1ffJianhong Jiang//Please update media/java/android/media/MediaRecorder.java if the following is updated. 489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectenum output_format { 499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project OUTPUT_FORMAT_DEFAULT = 0, 502bcda90c0234f67f210a96f195b355493ca7d1ffJianhong Jiang OUTPUT_FORMAT_THREE_GPP = 1, 512bcda90c0234f67f210a96f195b355493ca7d1ffJianhong Jiang OUTPUT_FORMAT_MPEG_4 = 2, 522bcda90c0234f67f210a96f195b355493ca7d1ffJianhong Jiang 532bcda90c0234f67f210a96f195b355493ca7d1ffJianhong Jiang 542bcda90c0234f67f210a96f195b355493ca7d1ffJianhong Jiang OUTPUT_FORMAT_AUDIO_ONLY_START = 3, // Used in validating the output format. Should be the 552bcda90c0234f67f210a96f195b355493ca7d1ffJianhong Jiang // at the start of the audio only output formats. 562bcda90c0234f67f210a96f195b355493ca7d1ffJianhong Jiang 572bcda90c0234f67f210a96f195b355493ca7d1ffJianhong Jiang /* These are audio only file formats */ 582bcda90c0234f67f210a96f195b355493ca7d1ffJianhong Jiang OUTPUT_FORMAT_RAW_AMR = 3, //to be backward compatible 592bcda90c0234f67f210a96f195b355493ca7d1ffJianhong Jiang OUTPUT_FORMAT_AMR_NB = 3, 602bcda90c0234f67f210a96f195b355493ca7d1ffJianhong Jiang OUTPUT_FORMAT_AMR_WB = 4, 612bcda90c0234f67f210a96f195b355493ca7d1ffJianhong Jiang OUTPUT_FORMAT_AAC_ADIF = 5, 622bcda90c0234f67f210a96f195b355493ca7d1ffJianhong Jiang OUTPUT_FORMAT_AAC_ADTS = 6, 632bcda90c0234f67f210a96f195b355493ca7d1ffJianhong Jiang 6457648e4eec7dd2593af467877bc7cce4aa654759Andreas Huber /* Stream over a socket, limited to a single stream */ 6557648e4eec7dd2593af467877bc7cce4aa654759Andreas Huber OUTPUT_FORMAT_RTP_AVP = 7, 6657648e4eec7dd2593af467877bc7cce4aa654759Andreas Huber 679adf466021d37a5062d7d3361e14bfd9e7ffeba6Andreas Huber /* H.264/AAC data encapsulated in MPEG2/TS */ 689adf466021d37a5062d7d3361e14bfd9e7ffeba6Andreas Huber OUTPUT_FORMAT_MPEG2TS = 8, 699adf466021d37a5062d7d3361e14bfd9e7ffeba6Andreas Huber 709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project OUTPUT_FORMAT_LIST_END // must be last - used to validate format type 719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}; 729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectenum audio_encoder { 749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project AUDIO_ENCODER_DEFAULT = 0, 759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project AUDIO_ENCODER_AMR_NB = 1, 762bcda90c0234f67f210a96f195b355493ca7d1ffJianhong Jiang AUDIO_ENCODER_AMR_WB = 2, 772bcda90c0234f67f210a96f195b355493ca7d1ffJianhong Jiang AUDIO_ENCODER_AAC = 3, 782bcda90c0234f67f210a96f195b355493ca7d1ffJianhong Jiang AUDIO_ENCODER_AAC_PLUS = 4, 792bcda90c0234f67f210a96f195b355493ca7d1ffJianhong Jiang AUDIO_ENCODER_EAAC_PLUS = 5, 802bcda90c0234f67f210a96f195b355493ca7d1ffJianhong Jiang 812bcda90c0234f67f210a96f195b355493ca7d1ffJianhong Jiang AUDIO_ENCODER_LIST_END // must be the last - used to validate the audio encoder type 829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}; 839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectenum video_encoder { 859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project VIDEO_ENCODER_DEFAULT = 0, 869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project VIDEO_ENCODER_H263 = 1, 879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project VIDEO_ENCODER_H264 = 2, 889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project VIDEO_ENCODER_MPEG_4_SP = 3, 892bcda90c0234f67f210a96f195b355493ca7d1ffJianhong Jiang 902bcda90c0234f67f210a96f195b355493ca7d1ffJianhong Jiang VIDEO_ENCODER_LIST_END // must be the last - used to validate the video encoder type 919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}; 929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* 947fc8b4f5ff88da7011f2d04c8f019008cc23bd0fJames Dong * The state machine of the media_recorder. 959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectenum media_recorder_states { 977fc8b4f5ff88da7011f2d04c8f019008cc23bd0fJames Dong // Error state. 989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project MEDIA_RECORDER_ERROR = 0, 997fc8b4f5ff88da7011f2d04c8f019008cc23bd0fJames Dong 1007fc8b4f5ff88da7011f2d04c8f019008cc23bd0fJames Dong // Recorder was just created. 1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project MEDIA_RECORDER_IDLE = 1 << 0, 1027fc8b4f5ff88da7011f2d04c8f019008cc23bd0fJames Dong 1037fc8b4f5ff88da7011f2d04c8f019008cc23bd0fJames Dong // Recorder has been initialized. 1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project MEDIA_RECORDER_INITIALIZED = 1 << 1, 1057fc8b4f5ff88da7011f2d04c8f019008cc23bd0fJames Dong 1067fc8b4f5ff88da7011f2d04c8f019008cc23bd0fJames Dong // Configuration of the recorder has been completed. 1079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project MEDIA_RECORDER_DATASOURCE_CONFIGURED = 1 << 2, 1087fc8b4f5ff88da7011f2d04c8f019008cc23bd0fJames Dong 1097fc8b4f5ff88da7011f2d04c8f019008cc23bd0fJames Dong // Recorder is ready to start. 1109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project MEDIA_RECORDER_PREPARED = 1 << 3, 1117fc8b4f5ff88da7011f2d04c8f019008cc23bd0fJames Dong 1127fc8b4f5ff88da7011f2d04c8f019008cc23bd0fJames Dong // Recording is in progress. 1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project MEDIA_RECORDER_RECORDING = 1 << 4, 1149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}; 1159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// The "msg" code passed to the listener in notify. 117ba87e3e6c985e7175152993b5efcc7dd2f0e1c93The Android Open Source Projectenum media_recorder_event_type { 1187fc8b4f5ff88da7011f2d04c8f019008cc23bd0fJames Dong MEDIA_RECORDER_EVENT_LIST_START = 1, 119ba87e3e6c985e7175152993b5efcc7dd2f0e1c93The Android Open Source Project MEDIA_RECORDER_EVENT_ERROR = 1, 1207fc8b4f5ff88da7011f2d04c8f019008cc23bd0fJames Dong MEDIA_RECORDER_EVENT_INFO = 2, 1217fc8b4f5ff88da7011f2d04c8f019008cc23bd0fJames Dong MEDIA_RECORDER_EVENT_LIST_END = 99, 1227fc8b4f5ff88da7011f2d04c8f019008cc23bd0fJames Dong 1237fc8b4f5ff88da7011f2d04c8f019008cc23bd0fJames Dong // Track related event types 1247fc8b4f5ff88da7011f2d04c8f019008cc23bd0fJames Dong MEDIA_RECORDER_TRACK_EVENT_LIST_START = 100, 1257fc8b4f5ff88da7011f2d04c8f019008cc23bd0fJames Dong MEDIA_RECORDER_TRACK_EVENT_ERROR = 100, 1267fc8b4f5ff88da7011f2d04c8f019008cc23bd0fJames Dong MEDIA_RECORDER_TRACK_EVENT_INFO = 101, 1277fc8b4f5ff88da7011f2d04c8f019008cc23bd0fJames Dong MEDIA_RECORDER_TRACK_EVENT_LIST_END = 1000, 1289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}; 1299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1307fc8b4f5ff88da7011f2d04c8f019008cc23bd0fJames Dong/* 1317fc8b4f5ff88da7011f2d04c8f019008cc23bd0fJames Dong * The (part of) "what" code passed to the listener in notify. 1327fc8b4f5ff88da7011f2d04c8f019008cc23bd0fJames Dong * When the error or info type is track specific, the what has 1337fc8b4f5ff88da7011f2d04c8f019008cc23bd0fJames Dong * the following layout: 1347fc8b4f5ff88da7011f2d04c8f019008cc23bd0fJames Dong * the left-most 16-bit is meant for error or info type. 1357fc8b4f5ff88da7011f2d04c8f019008cc23bd0fJames Dong * the right-most 4-bit is meant for track id. 1367fc8b4f5ff88da7011f2d04c8f019008cc23bd0fJames Dong * the rest is reserved. 1377fc8b4f5ff88da7011f2d04c8f019008cc23bd0fJames Dong * 1387fc8b4f5ff88da7011f2d04c8f019008cc23bd0fJames Dong * | track id | reserved | error or info type | 1397fc8b4f5ff88da7011f2d04c8f019008cc23bd0fJames Dong * 31 28 16 0 1407fc8b4f5ff88da7011f2d04c8f019008cc23bd0fJames Dong * 1417fc8b4f5ff88da7011f2d04c8f019008cc23bd0fJames Dong */ 142ba87e3e6c985e7175152993b5efcc7dd2f0e1c93The Android Open Source Projectenum media_recorder_error_type { 1437fc8b4f5ff88da7011f2d04c8f019008cc23bd0fJames Dong MEDIA_RECORDER_ERROR_UNKNOWN = 1, 1447fc8b4f5ff88da7011f2d04c8f019008cc23bd0fJames Dong 1457fc8b4f5ff88da7011f2d04c8f019008cc23bd0fJames Dong // Track related error type 1467fc8b4f5ff88da7011f2d04c8f019008cc23bd0fJames Dong MEDIA_RECORDER_TRACK_ERROR_LIST_START = 100, 1477fc8b4f5ff88da7011f2d04c8f019008cc23bd0fJames Dong MEDIA_RECORDER_TRACK_ERROR_GENERAL = 100, 1487fc8b4f5ff88da7011f2d04c8f019008cc23bd0fJames Dong MEDIA_RECORDER_ERROR_VIDEO_NO_SYNC_FRAME = 200, 1497fc8b4f5ff88da7011f2d04c8f019008cc23bd0fJames Dong MEDIA_RECORDER_TRACK_ERROR_LIST_END = 1000, 1509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}; 1519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 152ba87e3e6c985e7175152993b5efcc7dd2f0e1c93The Android Open Source Project// The codes are distributed as follow: 153ba87e3e6c985e7175152993b5efcc7dd2f0e1c93The Android Open Source Project// 0xx: Reserved 154ba87e3e6c985e7175152993b5efcc7dd2f0e1c93The Android Open Source Project// 8xx: General info/warning 1552bcda90c0234f67f210a96f195b355493ca7d1ffJianhong Jiang// 156ba87e3e6c985e7175152993b5efcc7dd2f0e1c93The Android Open Source Projectenum media_recorder_info_type { 157ba87e3e6c985e7175152993b5efcc7dd2f0e1c93The Android Open Source Project MEDIA_RECORDER_INFO_UNKNOWN = 1, 1587fc8b4f5ff88da7011f2d04c8f019008cc23bd0fJames Dong 159105925376f8d0f6b318c9938c7b83ef7fef094daThe Android Open Source Project MEDIA_RECORDER_INFO_MAX_DURATION_REACHED = 800, 16068510e60f9671ee08f3cc18bd93400cafb7703bbJames Dong MEDIA_RECORDER_INFO_MAX_FILESIZE_REACHED = 801, 1617fc8b4f5ff88da7011f2d04c8f019008cc23bd0fJames Dong 1627fc8b4f5ff88da7011f2d04c8f019008cc23bd0fJames Dong // All track related informtional events start here 1637fc8b4f5ff88da7011f2d04c8f019008cc23bd0fJames Dong MEDIA_RECORDER_TRACK_INFO_LIST_START = 1000, 1647fc8b4f5ff88da7011f2d04c8f019008cc23bd0fJames Dong MEDIA_RECORDER_TRACK_INFO_COMPLETION_STATUS = 1000, 1657fc8b4f5ff88da7011f2d04c8f019008cc23bd0fJames Dong MEDIA_RECORDER_TRACK_INFO_PROGRESS_IN_TIME = 1001, 166ed742306b3d24ba1c2ca3fea0cc2ada8534a18b0James Dong MEDIA_RECORDER_TRACK_INFO_TYPE = 1002, 167ed742306b3d24ba1c2ca3fea0cc2ada8534a18b0James Dong MEDIA_RECORDER_TRACK_INFO_DURATION_MS = 1003, 1683aea037dd8c47fd5906b0d8409da7e7243fcb7d4James Dong 1693aea037dd8c47fd5906b0d8409da7e7243fcb7d4James Dong // The time to measure the max chunk duration 170ed742306b3d24ba1c2ca3fea0cc2ada8534a18b0James Dong MEDIA_RECORDER_TRACK_INFO_MAX_CHUNK_DUR_MS = 1004, 1713aea037dd8c47fd5906b0d8409da7e7243fcb7d4James Dong 172ed742306b3d24ba1c2ca3fea0cc2ada8534a18b0James Dong MEDIA_RECORDER_TRACK_INFO_ENCODED_FRAMES = 1005, 1733aea037dd8c47fd5906b0d8409da7e7243fcb7d4James Dong 1743aea037dd8c47fd5906b0d8409da7e7243fcb7d4James Dong // The time to measure how well the audio and video 1753aea037dd8c47fd5906b0d8409da7e7243fcb7d4James Dong // track data is interleaved. 1763aea037dd8c47fd5906b0d8409da7e7243fcb7d4James Dong MEDIA_RECORDER_TRACK_INTER_CHUNK_TIME_MS = 1006, 1773aea037dd8c47fd5906b0d8409da7e7243fcb7d4James Dong 1783aea037dd8c47fd5906b0d8409da7e7243fcb7d4James Dong // The time to measure system response. Note that 1793aea037dd8c47fd5906b0d8409da7e7243fcb7d4James Dong // the delay does not include the intentional delay 1803aea037dd8c47fd5906b0d8409da7e7243fcb7d4James Dong // we use to eliminate the recording sound. 1813aea037dd8c47fd5906b0d8409da7e7243fcb7d4James Dong MEDIA_RECORDER_TRACK_INFO_INITIAL_DELAY_MS = 1007, 1823aea037dd8c47fd5906b0d8409da7e7243fcb7d4James Dong 1833aea037dd8c47fd5906b0d8409da7e7243fcb7d4James Dong // The time used to compensate for initial A/V sync. 1843aea037dd8c47fd5906b0d8409da7e7243fcb7d4James Dong MEDIA_RECORDER_TRACK_INFO_START_OFFSET_MS = 1008, 1853aea037dd8c47fd5906b0d8409da7e7243fcb7d4James Dong 1860f32fb3ecfdfaa03acf880a356629d43da3fe2feJames Dong // Total number of bytes of the media data. 1870f32fb3ecfdfaa03acf880a356629d43da3fe2feJames Dong MEDIA_RECORDER_TRACK_INFO_DATA_KBYTES = 1009, 1880f32fb3ecfdfaa03acf880a356629d43da3fe2feJames Dong 1897fc8b4f5ff88da7011f2d04c8f019008cc23bd0fJames Dong MEDIA_RECORDER_TRACK_INFO_LIST_END = 2000, 190ba87e3e6c985e7175152993b5efcc7dd2f0e1c93The Android Open Source Project}; 191ba87e3e6c985e7175152993b5efcc7dd2f0e1c93The Android Open Source Project 1929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// ---------------------------------------------------------------------------- 1939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// ref-counted object for callbacks 1949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectclass MediaRecorderListener: virtual public RefBase 1959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 1969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic: 1979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual void notify(int msg, int ext1, int ext2) = 0; 1989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}; 1999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 200fe1bafecdecd49533c46521057c7c9eeb788d0faJames Dongclass MediaRecorder : public BnMediaRecorderClient, 20134bbc22cbca0004475788f06be2300fef23c6a52James Dong public virtual IMediaDeathNotifier 2029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 2039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic: 2049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project MediaRecorder(); 2059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ~MediaRecorder(); 2069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 20734bbc22cbca0004475788f06be2300fef23c6a52James Dong void died(); 2089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project status_t initCheck(); 20942419ce28a09eb63e29a8fef87e6f5534f41902fWu-cheng Li status_t setCamera(const sp<ICamera>& camera, const sp<ICameraRecordingProxy>& proxy); 2109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project status_t setPreviewSurface(const sp<Surface>& surface); 2119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project status_t setVideoSource(int vs); 2129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project status_t setAudioSource(int as); 2139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project status_t setOutputFormat(int of); 2149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project status_t setVideoEncoder(int ve); 2159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project status_t setAudioEncoder(int ae); 2169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project status_t setOutputFile(const char* path); 2179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project status_t setOutputFile(int fd, int64_t offset, int64_t length); 2189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project status_t setVideoSize(int width, int height); 2199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project status_t setVideoFrameRate(int frames_per_second); 220ba87e3e6c985e7175152993b5efcc7dd2f0e1c93The Android Open Source Project status_t setParameters(const String8& params); 2219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project status_t setListener(const sp<MediaRecorderListener>& listener); 2229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project status_t prepare(); 2239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project status_t getMaxAmplitude(int* max); 2249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project status_t start(); 2259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project status_t stop(); 2269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project status_t reset(); 2279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project status_t init(); 2289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project status_t close(); 2299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project status_t release(); 2309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void notify(int msg, int ext1, int ext2); 231897e27bc75886e44d2f9f09155127f401c4173eaPannag Sanketi sp<ISurfaceTexture> querySurfaceMediaSourceFromMediaServer(); 2329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectprivate: 2349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void doCleanUp(); 2359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project status_t doReset(); 2369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sp<IMediaRecorder> mMediaRecorder; 2389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sp<MediaRecorderListener> mListener; 239897e27bc75886e44d2f9f09155127f401c4173eaPannag Sanketi 240897e27bc75886e44d2f9f09155127f401c4173eaPannag Sanketi // Reference toISurfaceTexture 241897e27bc75886e44d2f9f09155127f401c4173eaPannag Sanketi // for encoding GL Frames. That is useful only when the 242897e27bc75886e44d2f9f09155127f401c4173eaPannag Sanketi // video source is set to VIDEO_SOURCE_GRALLOC_BUFFER 243897e27bc75886e44d2f9f09155127f401c4173eaPannag Sanketi sp<ISurfaceTexture> mSurfaceMediaSource; 244897e27bc75886e44d2f9f09155127f401c4173eaPannag Sanketi 2459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project media_recorder_states mCurrentState; 2469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bool mIsAudioSourceSet; 2479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bool mIsVideoSourceSet; 2489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bool mIsAudioEncoderSet; 2499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bool mIsVideoEncoderSet; 2509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bool mIsOutputFileSet; 2519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Mutex mLock; 2529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Mutex mNotifyLock; 2539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}; 2549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}; // namespace android 2569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#endif // ANDROID_MEDIARECORDER_H 258