/* * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. * * Use of this source code is governed by a BSD-style license * that can be found in the LICENSE file in the root of the source * tree. An additional intellectual property rights grant can be found * in the file PATENTS. All contributing project authors may * be found in the AUTHORS file in the root of the source tree. */ #ifndef WEBRTC_MODULES_UTILITY_INTERFACE_FILE_RECORDER_H_ #define WEBRTC_MODULES_UTILITY_INTERFACE_FILE_RECORDER_H_ #include "audio_coding_module_typedefs.h" #include "common_types.h" #include "engine_configurations.h" #include "media_file_defines.h" #include "module_common_types.h" #include "tick_util.h" #include "typedefs.h" namespace webrtc { class FileRecorder { public: // Note: will return NULL for video file formats (e.g. AVI) if the flag // WEBRTC_MODULE_UTILITY_VIDEO is not defined. static FileRecorder* CreateFileRecorder(const WebRtc_UWord32 instanceID, const FileFormats fileFormat); static void DestroyFileRecorder(FileRecorder* recorder); virtual WebRtc_Word32 RegisterModuleFileCallback( FileCallback* callback) = 0; virtual FileFormats RecordingFileFormat() const = 0; virtual WebRtc_Word32 StartRecordingAudioFile( const WebRtc_Word8* fileName, const CodecInst& codecInst, WebRtc_UWord32 notification, ACMAMRPackingFormat amrFormat = AMRFileStorage) = 0; virtual WebRtc_Word32 StartRecordingAudioFile( OutStream& destStream, const CodecInst& codecInst, WebRtc_UWord32 notification, ACMAMRPackingFormat amrFormat = AMRFileStorage) = 0; // Stop recording. // Note: this API is for both audio and video. virtual WebRtc_Word32 StopRecording() = 0; // Return true if recording. // Note: this API is for both audio and video. virtual bool IsRecording() const = 0; virtual WebRtc_Word32 codec_info(CodecInst& codecInst) const = 0; // Write frame to file. Frame should contain 10ms of un-ecoded audio data. virtual WebRtc_Word32 RecordAudioToFile( const AudioFrame& frame, const TickTime* playoutTS = NULL) = 0; // Open/create the file specified by fileName for writing audio/video data // (relative path is allowed). audioCodecInst specifies the encoding of the // audio data. videoCodecInst specifies the encoding of the video data. // Only video data will be recorded if videoOnly is true. amrFormat // specifies the amr/amrwb storage format. // Note: the file format is AVI. virtual WebRtc_Word32 StartRecordingVideoFile( const WebRtc_Word8* fileName, const CodecInst& audioCodecInst, const VideoCodec& videoCodecInst, ACMAMRPackingFormat amrFormat = AMRFileStorage, bool videoOnly = false) = 0; // Record the video frame in videoFrame to AVI file. virtual WebRtc_Word32 RecordVideoToFile(const VideoFrame& videoFrame) = 0; protected: virtual ~FileRecorder() {} }; } // namespace webrtc #endif // WEBRTC_MODULES_UTILITY_INTERFACE_FILE_RECORDER_H_