blob: c4195d0ebad453e24dc864f40cd5d16f7af2eaa3 [file] [log] [blame]
Henrik Kjellanderff761fb2015-11-04 08:31:52 +01001/*
2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
3 *
4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10
kwiberg97744472017-01-10 01:12:51 -080011#ifndef WEBRTC_VOICE_ENGINE_FILE_RECORDER_H_
12#define WEBRTC_VOICE_ENGINE_FILE_RECORDER_H_
Henrik Kjellanderff761fb2015-11-04 08:31:52 +010013
kwiberg5a25d952016-08-17 07:31:12 -070014#include <memory>
15
Henrik Kjellanderff761fb2015-11-04 08:31:52 +010016#include "webrtc/common_types.h"
Henrik Kjellanderff761fb2015-11-04 08:31:52 +010017#include "webrtc/modules/include/module_common_types.h"
Henrik Kjellander0b9e29c2015-11-16 11:12:24 +010018#include "webrtc/modules/media_file/media_file_defines.h"
Henrik Kjellanderff761fb2015-11-04 08:31:52 +010019#include "webrtc/typedefs.h"
Henrik Kjellanderff761fb2015-11-04 08:31:52 +010020
21namespace webrtc {
22
kwiberga06ce492016-08-16 05:35:24 -070023class FileRecorder {
24 public:
25 // Note: will return NULL for unsupported formats.
kwiberg5a25d952016-08-17 07:31:12 -070026 static std::unique_ptr<FileRecorder> CreateFileRecorder(
27 const uint32_t instanceID,
28 const FileFormats fileFormat);
Henrik Kjellanderff761fb2015-11-04 08:31:52 +010029
kwiberg5a25d952016-08-17 07:31:12 -070030 virtual ~FileRecorder() = default;
Henrik Kjellanderff761fb2015-11-04 08:31:52 +010031
kwiberga06ce492016-08-16 05:35:24 -070032 virtual int32_t RegisterModuleFileCallback(FileCallback* callback) = 0;
Henrik Kjellanderff761fb2015-11-04 08:31:52 +010033
kwiberga06ce492016-08-16 05:35:24 -070034 virtual FileFormats RecordingFileFormat() const = 0;
Henrik Kjellanderff761fb2015-11-04 08:31:52 +010035
kwiberga06ce492016-08-16 05:35:24 -070036 virtual int32_t StartRecordingAudioFile(const char* fileName,
37 const CodecInst& codecInst,
38 uint32_t notification) = 0;
Henrik Kjellanderff761fb2015-11-04 08:31:52 +010039
kwiberg4ec01d92016-08-22 08:43:54 -070040 virtual int32_t StartRecordingAudioFile(OutStream* destStream,
kwiberga06ce492016-08-16 05:35:24 -070041 const CodecInst& codecInst,
42 uint32_t notification) = 0;
Henrik Kjellanderff761fb2015-11-04 08:31:52 +010043
kwiberga06ce492016-08-16 05:35:24 -070044 // Stop recording.
45 virtual int32_t StopRecording() = 0;
Henrik Kjellanderff761fb2015-11-04 08:31:52 +010046
kwiberga06ce492016-08-16 05:35:24 -070047 // Return true if recording.
48 virtual bool IsRecording() const = 0;
Henrik Kjellanderff761fb2015-11-04 08:31:52 +010049
kwiberg4ec01d92016-08-22 08:43:54 -070050 virtual int32_t codec_info(CodecInst* codecInst) const = 0;
Henrik Kjellanderff761fb2015-11-04 08:31:52 +010051
kwiberga06ce492016-08-16 05:35:24 -070052 // Write frame to file. Frame should contain 10ms of un-ecoded audio data.
53 virtual int32_t RecordAudioToFile(const AudioFrame& frame) = 0;
Henrik Kjellanderff761fb2015-11-04 08:31:52 +010054};
kwiberg5a25d952016-08-17 07:31:12 -070055
Henrik Kjellanderff761fb2015-11-04 08:31:52 +010056} // namespace webrtc
kwiberg97744472017-01-10 01:12:51 -080057#endif // WEBRTC_VOICE_ENGINE_FILE_RECORDER_H_