189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project/* 289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project ** Copyright (C) 2008 The Android Open Source Project 389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project ** 489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project ** Licensed under the Apache License, Version 2.0 (the "License"); 589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project ** you may not use this file except in compliance with the License. 689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project ** You may obtain a copy of the License at 789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project ** 889fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project ** http://www.apache.org/licenses/LICENSE-2.0 989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project ** 1089fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project ** Unless required by applicable law or agreed to in writing, software 1189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project ** distributed under the License is distributed on an "AS IS" BASIS, 1289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project ** See the License for the specific language governing permissions and 1489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project ** 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_MEDIARECORDER_H 1989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project#define ANDROID_MEDIARECORDER_H 2089fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 21273d098cc72a88c797d01c7dff0c1350f315f05fMathias Agopian#include <utils/Log.h> 22273d098cc72a88c797d01c7dff0c1350f315f05fMathias Agopian#include <utils/threads.h> 23273d098cc72a88c797d01c7dff0c1350f315f05fMathias Agopian#include <utils/List.h> 24273d098cc72a88c797d01c7dff0c1350f315f05fMathias Agopian#include <utils/Errors.h> 2537047fceba836f341d0108beed0991b0f8dfc543James Dong#include <media/IMediaRecorderClient.h> 26dd172fce75b2a1c3cb3a5d3b3bbb5020b1ae8675James Dong#include <media/IMediaDeathNotifier.h> 2789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 2889fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Projectnamespace android { 2989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 3089fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Projectclass Surface; 3189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Projectclass IMediaRecorder; 3289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Projectclass ICamera; 334ca2c7c913f8bd4ada13aca56d36045d42d1e00fWu-cheng Liclass ICameraRecordingProxy; 34b33f3407bab0970a7f9241680723a1140b177c50Pannag Sanketiclass ISurfaceTexture; 35b33f3407bab0970a7f9241680723a1140b177c50Pannag Sanketiclass SurfaceTextureClient; 3689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 3789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Projecttypedef void (*media_completion_f)(status_t status, void *cookie); 3889fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 3989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Projectenum video_source { 4089fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project VIDEO_SOURCE_DEFAULT = 0, 4189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project VIDEO_SOURCE_CAMERA = 1, 42b33f3407bab0970a7f9241680723a1140b177c50Pannag Sanketi VIDEO_SOURCE_GRALLOC_BUFFER = 2, 439747c5a1f5e51fab72169767972bf55f73711000Jianhong Jiang 449747c5a1f5e51fab72169767972bf55f73711000Jianhong Jiang VIDEO_SOURCE_LIST_END // must be last - used to validate audio source type 4589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project}; 4689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 479747c5a1f5e51fab72169767972bf55f73711000Jianhong Jiang//Please update media/java/android/media/MediaRecorder.java if the following is updated. 4889fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Projectenum output_format { 4989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project OUTPUT_FORMAT_DEFAULT = 0, 509747c5a1f5e51fab72169767972bf55f73711000Jianhong Jiang OUTPUT_FORMAT_THREE_GPP = 1, 519747c5a1f5e51fab72169767972bf55f73711000Jianhong Jiang OUTPUT_FORMAT_MPEG_4 = 2, 529747c5a1f5e51fab72169767972bf55f73711000Jianhong Jiang 539747c5a1f5e51fab72169767972bf55f73711000Jianhong Jiang 549747c5a1f5e51fab72169767972bf55f73711000Jianhong Jiang OUTPUT_FORMAT_AUDIO_ONLY_START = 3, // Used in validating the output format. Should be the 559747c5a1f5e51fab72169767972bf55f73711000Jianhong Jiang // at the start of the audio only output formats. 569747c5a1f5e51fab72169767972bf55f73711000Jianhong Jiang 579747c5a1f5e51fab72169767972bf55f73711000Jianhong Jiang /* These are audio only file formats */ 589747c5a1f5e51fab72169767972bf55f73711000Jianhong Jiang OUTPUT_FORMAT_RAW_AMR = 3, //to be backward compatible 599747c5a1f5e51fab72169767972bf55f73711000Jianhong Jiang OUTPUT_FORMAT_AMR_NB = 3, 609747c5a1f5e51fab72169767972bf55f73711000Jianhong Jiang OUTPUT_FORMAT_AMR_WB = 4, 619747c5a1f5e51fab72169767972bf55f73711000Jianhong Jiang OUTPUT_FORMAT_AAC_ADIF = 5, 629747c5a1f5e51fab72169767972bf55f73711000Jianhong Jiang OUTPUT_FORMAT_AAC_ADTS = 6, 639747c5a1f5e51fab72169767972bf55f73711000Jianhong Jiang 6439ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber /* Stream over a socket, limited to a single stream */ 6539ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber OUTPUT_FORMAT_RTP_AVP = 7, 6639ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber 6759b7dc39ea8332d3418a599e51447d7edb612ac4Andreas Huber /* H.264/AAC data encapsulated in MPEG2/TS */ 6859b7dc39ea8332d3418a599e51447d7edb612ac4Andreas Huber OUTPUT_FORMAT_MPEG2TS = 8, 6959b7dc39ea8332d3418a599e51447d7edb612ac4Andreas Huber 7089fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project OUTPUT_FORMAT_LIST_END // must be last - used to validate format type 7189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project}; 7289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 7389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Projectenum audio_encoder { 7489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project AUDIO_ENCODER_DEFAULT = 0, 7589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project AUDIO_ENCODER_AMR_NB = 1, 769747c5a1f5e51fab72169767972bf55f73711000Jianhong Jiang AUDIO_ENCODER_AMR_WB = 2, 779747c5a1f5e51fab72169767972bf55f73711000Jianhong Jiang AUDIO_ENCODER_AAC = 3, 78f60c660f048d5f5e2458cff243c20400d73757a7Dave Burke AUDIO_ENCODER_HE_AAC = 4, 79f60c660f048d5f5e2458cff243c20400d73757a7Dave Burke AUDIO_ENCODER_AAC_ELD = 5, 809747c5a1f5e51fab72169767972bf55f73711000Jianhong Jiang 819747c5a1f5e51fab72169767972bf55f73711000Jianhong Jiang AUDIO_ENCODER_LIST_END // must be the last - used to validate the audio encoder type 8289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project}; 8389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 8489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Projectenum video_encoder { 8589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project VIDEO_ENCODER_DEFAULT = 0, 8689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project VIDEO_ENCODER_H263 = 1, 8789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project VIDEO_ENCODER_H264 = 2, 8889fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project VIDEO_ENCODER_MPEG_4_SP = 3, 899747c5a1f5e51fab72169767972bf55f73711000Jianhong Jiang 909747c5a1f5e51fab72169767972bf55f73711000Jianhong Jiang VIDEO_ENCODER_LIST_END // must be the last - used to validate the video encoder type 9189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project}; 9289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 9389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project/* 94bc07bcc65e91c7aea9713631ae67760dcf1b0286James Dong * The state machine of the media_recorder. 9589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project */ 9689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Projectenum media_recorder_states { 97bc07bcc65e91c7aea9713631ae67760dcf1b0286James Dong // Error state. 9889fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project MEDIA_RECORDER_ERROR = 0, 99bc07bcc65e91c7aea9713631ae67760dcf1b0286James Dong 100bc07bcc65e91c7aea9713631ae67760dcf1b0286James Dong // Recorder was just created. 10189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project MEDIA_RECORDER_IDLE = 1 << 0, 102bc07bcc65e91c7aea9713631ae67760dcf1b0286James Dong 103bc07bcc65e91c7aea9713631ae67760dcf1b0286James Dong // Recorder has been initialized. 10489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project MEDIA_RECORDER_INITIALIZED = 1 << 1, 105bc07bcc65e91c7aea9713631ae67760dcf1b0286James Dong 106bc07bcc65e91c7aea9713631ae67760dcf1b0286James Dong // Configuration of the recorder has been completed. 10789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project MEDIA_RECORDER_DATASOURCE_CONFIGURED = 1 << 2, 108bc07bcc65e91c7aea9713631ae67760dcf1b0286James Dong 109bc07bcc65e91c7aea9713631ae67760dcf1b0286James Dong // Recorder is ready to start. 11089fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project MEDIA_RECORDER_PREPARED = 1 << 3, 111bc07bcc65e91c7aea9713631ae67760dcf1b0286James Dong 112bc07bcc65e91c7aea9713631ae67760dcf1b0286James Dong // Recording is in progress. 11389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project MEDIA_RECORDER_RECORDING = 1 << 4, 11489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project}; 11589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 11689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project// The "msg" code passed to the listener in notify. 117c048cae0367db6fbb4fe1127be5011910713d4adThe Android Open Source Projectenum media_recorder_event_type { 118bc07bcc65e91c7aea9713631ae67760dcf1b0286James Dong MEDIA_RECORDER_EVENT_LIST_START = 1, 119c048cae0367db6fbb4fe1127be5011910713d4adThe Android Open Source Project MEDIA_RECORDER_EVENT_ERROR = 1, 120bc07bcc65e91c7aea9713631ae67760dcf1b0286James Dong MEDIA_RECORDER_EVENT_INFO = 2, 121bc07bcc65e91c7aea9713631ae67760dcf1b0286James Dong MEDIA_RECORDER_EVENT_LIST_END = 99, 122bc07bcc65e91c7aea9713631ae67760dcf1b0286James Dong 123bc07bcc65e91c7aea9713631ae67760dcf1b0286James Dong // Track related event types 124bc07bcc65e91c7aea9713631ae67760dcf1b0286James Dong MEDIA_RECORDER_TRACK_EVENT_LIST_START = 100, 125bc07bcc65e91c7aea9713631ae67760dcf1b0286James Dong MEDIA_RECORDER_TRACK_EVENT_ERROR = 100, 126bc07bcc65e91c7aea9713631ae67760dcf1b0286James Dong MEDIA_RECORDER_TRACK_EVENT_INFO = 101, 127bc07bcc65e91c7aea9713631ae67760dcf1b0286James Dong MEDIA_RECORDER_TRACK_EVENT_LIST_END = 1000, 12889fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project}; 12989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 130bc07bcc65e91c7aea9713631ae67760dcf1b0286James Dong/* 131bc07bcc65e91c7aea9713631ae67760dcf1b0286James Dong * The (part of) "what" code passed to the listener in notify. 132bc07bcc65e91c7aea9713631ae67760dcf1b0286James Dong * When the error or info type is track specific, the what has 133bc07bcc65e91c7aea9713631ae67760dcf1b0286James Dong * the following layout: 134bc07bcc65e91c7aea9713631ae67760dcf1b0286James Dong * the left-most 16-bit is meant for error or info type. 135bc07bcc65e91c7aea9713631ae67760dcf1b0286James Dong * the right-most 4-bit is meant for track id. 136bc07bcc65e91c7aea9713631ae67760dcf1b0286James Dong * the rest is reserved. 137bc07bcc65e91c7aea9713631ae67760dcf1b0286James Dong * 138bc07bcc65e91c7aea9713631ae67760dcf1b0286James Dong * | track id | reserved | error or info type | 139bc07bcc65e91c7aea9713631ae67760dcf1b0286James Dong * 31 28 16 0 140bc07bcc65e91c7aea9713631ae67760dcf1b0286James Dong * 141bc07bcc65e91c7aea9713631ae67760dcf1b0286James Dong */ 142c048cae0367db6fbb4fe1127be5011910713d4adThe Android Open Source Projectenum media_recorder_error_type { 143bc07bcc65e91c7aea9713631ae67760dcf1b0286James Dong MEDIA_RECORDER_ERROR_UNKNOWN = 1, 144bc07bcc65e91c7aea9713631ae67760dcf1b0286James Dong 145bc07bcc65e91c7aea9713631ae67760dcf1b0286James Dong // Track related error type 146bc07bcc65e91c7aea9713631ae67760dcf1b0286James Dong MEDIA_RECORDER_TRACK_ERROR_LIST_START = 100, 147bc07bcc65e91c7aea9713631ae67760dcf1b0286James Dong MEDIA_RECORDER_TRACK_ERROR_GENERAL = 100, 148bc07bcc65e91c7aea9713631ae67760dcf1b0286James Dong MEDIA_RECORDER_ERROR_VIDEO_NO_SYNC_FRAME = 200, 149bc07bcc65e91c7aea9713631ae67760dcf1b0286James Dong MEDIA_RECORDER_TRACK_ERROR_LIST_END = 1000, 15089fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project}; 15189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 152c048cae0367db6fbb4fe1127be5011910713d4adThe Android Open Source Project// The codes are distributed as follow: 153c048cae0367db6fbb4fe1127be5011910713d4adThe Android Open Source Project// 0xx: Reserved 154c048cae0367db6fbb4fe1127be5011910713d4adThe Android Open Source Project// 8xx: General info/warning 1559747c5a1f5e51fab72169767972bf55f73711000Jianhong Jiang// 156c048cae0367db6fbb4fe1127be5011910713d4adThe Android Open Source Projectenum media_recorder_info_type { 157c048cae0367db6fbb4fe1127be5011910713d4adThe Android Open Source Project MEDIA_RECORDER_INFO_UNKNOWN = 1, 158bc07bcc65e91c7aea9713631ae67760dcf1b0286James Dong 1591179bc9b0e3d17c984e8f4ad38561c049dd102faThe Android Open Source Project MEDIA_RECORDER_INFO_MAX_DURATION_REACHED = 800, 160f0ce2fb0c7bf3a414279e5aba61105f3d9025c0eJames Dong MEDIA_RECORDER_INFO_MAX_FILESIZE_REACHED = 801, 161bc07bcc65e91c7aea9713631ae67760dcf1b0286James Dong 162bc07bcc65e91c7aea9713631ae67760dcf1b0286James Dong // All track related informtional events start here 163bc07bcc65e91c7aea9713631ae67760dcf1b0286James Dong MEDIA_RECORDER_TRACK_INFO_LIST_START = 1000, 164bc07bcc65e91c7aea9713631ae67760dcf1b0286James Dong MEDIA_RECORDER_TRACK_INFO_COMPLETION_STATUS = 1000, 165bc07bcc65e91c7aea9713631ae67760dcf1b0286James Dong MEDIA_RECORDER_TRACK_INFO_PROGRESS_IN_TIME = 1001, 16643ec1dfc5dc3934680a52a026c5519ddc51bdbd3James Dong MEDIA_RECORDER_TRACK_INFO_TYPE = 1002, 16743ec1dfc5dc3934680a52a026c5519ddc51bdbd3James Dong MEDIA_RECORDER_TRACK_INFO_DURATION_MS = 1003, 16870ccfd44c4bfe95ddecc2df6c3695efc48229d72James Dong 16970ccfd44c4bfe95ddecc2df6c3695efc48229d72James Dong // The time to measure the max chunk duration 17043ec1dfc5dc3934680a52a026c5519ddc51bdbd3James Dong MEDIA_RECORDER_TRACK_INFO_MAX_CHUNK_DUR_MS = 1004, 17170ccfd44c4bfe95ddecc2df6c3695efc48229d72James Dong 17243ec1dfc5dc3934680a52a026c5519ddc51bdbd3James Dong MEDIA_RECORDER_TRACK_INFO_ENCODED_FRAMES = 1005, 17370ccfd44c4bfe95ddecc2df6c3695efc48229d72James Dong 17470ccfd44c4bfe95ddecc2df6c3695efc48229d72James Dong // The time to measure how well the audio and video 17570ccfd44c4bfe95ddecc2df6c3695efc48229d72James Dong // track data is interleaved. 17670ccfd44c4bfe95ddecc2df6c3695efc48229d72James Dong MEDIA_RECORDER_TRACK_INTER_CHUNK_TIME_MS = 1006, 17770ccfd44c4bfe95ddecc2df6c3695efc48229d72James Dong 17870ccfd44c4bfe95ddecc2df6c3695efc48229d72James Dong // The time to measure system response. Note that 17970ccfd44c4bfe95ddecc2df6c3695efc48229d72James Dong // the delay does not include the intentional delay 18070ccfd44c4bfe95ddecc2df6c3695efc48229d72James Dong // we use to eliminate the recording sound. 18170ccfd44c4bfe95ddecc2df6c3695efc48229d72James Dong MEDIA_RECORDER_TRACK_INFO_INITIAL_DELAY_MS = 1007, 18270ccfd44c4bfe95ddecc2df6c3695efc48229d72James Dong 18370ccfd44c4bfe95ddecc2df6c3695efc48229d72James Dong // The time used to compensate for initial A/V sync. 18470ccfd44c4bfe95ddecc2df6c3695efc48229d72James Dong MEDIA_RECORDER_TRACK_INFO_START_OFFSET_MS = 1008, 18570ccfd44c4bfe95ddecc2df6c3695efc48229d72James Dong 18607ec01904613a0bac32caaa8444b4690998faed7James Dong // Total number of bytes of the media data. 18707ec01904613a0bac32caaa8444b4690998faed7James Dong MEDIA_RECORDER_TRACK_INFO_DATA_KBYTES = 1009, 18807ec01904613a0bac32caaa8444b4690998faed7James Dong 189bc07bcc65e91c7aea9713631ae67760dcf1b0286James Dong MEDIA_RECORDER_TRACK_INFO_LIST_END = 2000, 190c048cae0367db6fbb4fe1127be5011910713d4adThe Android Open Source Project}; 191c048cae0367db6fbb4fe1127be5011910713d4adThe Android Open Source Project 19289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project// ---------------------------------------------------------------------------- 19389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project// ref-counted object for callbacks 19489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Projectclass MediaRecorderListener: virtual public RefBase 19589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project{ 19689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Projectpublic: 19789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project virtual void notify(int msg, int ext1, int ext2) = 0; 19889fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project}; 19989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 20037047fceba836f341d0108beed0991b0f8dfc543James Dongclass MediaRecorder : public BnMediaRecorderClient, 201dd172fce75b2a1c3cb3a5d3b3bbb5020b1ae8675James Dong public virtual IMediaDeathNotifier 20289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project{ 20389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Projectpublic: 20489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project MediaRecorder(); 20589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project ~MediaRecorder(); 20689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 207dd172fce75b2a1c3cb3a5d3b3bbb5020b1ae8675James Dong void died(); 20889fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project status_t initCheck(); 2094ca2c7c913f8bd4ada13aca56d36045d42d1e00fWu-cheng Li status_t setCamera(const sp<ICamera>& camera, const sp<ICameraRecordingProxy>& proxy); 21089fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project status_t setPreviewSurface(const sp<Surface>& surface); 21189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project status_t setVideoSource(int vs); 21289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project status_t setAudioSource(int as); 21389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project status_t setOutputFormat(int of); 21489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project status_t setVideoEncoder(int ve); 21589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project status_t setAudioEncoder(int ae); 21689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project status_t setOutputFile(const char* path); 21789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project status_t setOutputFile(int fd, int64_t offset, int64_t length); 21889fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project status_t setVideoSize(int width, int height); 21989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project status_t setVideoFrameRate(int frames_per_second); 220c048cae0367db6fbb4fe1127be5011910713d4adThe Android Open Source Project status_t setParameters(const String8& params); 22189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project status_t setListener(const sp<MediaRecorderListener>& listener); 22289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project status_t prepare(); 22389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project status_t getMaxAmplitude(int* max); 22489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project status_t start(); 22589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project status_t stop(); 22689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project status_t reset(); 22789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project status_t init(); 22889fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project status_t close(); 22989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project status_t release(); 23089fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project void notify(int msg, int ext1, int ext2); 231b33f3407bab0970a7f9241680723a1140b177c50Pannag Sanketi sp<ISurfaceTexture> querySurfaceMediaSourceFromMediaServer(); 23289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 23389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Projectprivate: 23489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project void doCleanUp(); 23589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project status_t doReset(); 23689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 23789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project sp<IMediaRecorder> mMediaRecorder; 23889fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project sp<MediaRecorderListener> mListener; 239b33f3407bab0970a7f9241680723a1140b177c50Pannag Sanketi 240b33f3407bab0970a7f9241680723a1140b177c50Pannag Sanketi // Reference toISurfaceTexture 241b33f3407bab0970a7f9241680723a1140b177c50Pannag Sanketi // for encoding GL Frames. That is useful only when the 242b33f3407bab0970a7f9241680723a1140b177c50Pannag Sanketi // video source is set to VIDEO_SOURCE_GRALLOC_BUFFER 243b33f3407bab0970a7f9241680723a1140b177c50Pannag Sanketi sp<ISurfaceTexture> mSurfaceMediaSource; 244b33f3407bab0970a7f9241680723a1140b177c50Pannag Sanketi 24589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project media_recorder_states mCurrentState; 24689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project bool mIsAudioSourceSet; 24789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project bool mIsVideoSourceSet; 24889fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project bool mIsAudioEncoderSet; 24989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project bool mIsVideoEncoderSet; 25089fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project bool mIsOutputFileSet; 25189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project Mutex mLock; 25289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project Mutex mNotifyLock; 25389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project}; 25489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 25589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project}; // namespace android 25689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 25789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project#endif // ANDROID_MEDIARECORDER_H 258