1/*
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
11#ifndef WEBRTC_VOICE_ENGINE_VOE_FILE_IMPL_H
12#define WEBRTC_VOICE_ENGINE_VOE_FILE_IMPL_H
13
14#include "webrtc/voice_engine/include/voe_file.h"
15#include "webrtc/voice_engine/shared_data.h"
16
17namespace webrtc {
18
19class VoEFileImpl : public VoEFile {
20 public:
21  // Playout file locally
22
23  int StartPlayingFileLocally(int channel,
24                              const char fileNameUTF8[1024],
25                              bool loop = false,
26                              FileFormats format = kFileFormatPcm16kHzFile,
27                              float volumeScaling = 1.0,
28                              int startPointMs = 0,
29                              int stopPointMs = 0) override;
30
31  int StartPlayingFileLocally(int channel,
32                              InStream* stream,
33                              FileFormats format = kFileFormatPcm16kHzFile,
34                              float volumeScaling = 1.0,
35                              int startPointMs = 0,
36                              int stopPointMs = 0) override;
37
38  int StopPlayingFileLocally(int channel) override;
39
40  int IsPlayingFileLocally(int channel) override;
41
42  // Use file as microphone input
43
44  int StartPlayingFileAsMicrophone(int channel,
45                                   const char fileNameUTF8[1024],
46                                   bool loop = false,
47                                   bool mixWithMicrophone = false,
48                                   FileFormats format = kFileFormatPcm16kHzFile,
49                                   float volumeScaling = 1.0) override;
50
51  int StartPlayingFileAsMicrophone(int channel,
52                                   InStream* stream,
53                                   bool mixWithMicrophone = false,
54                                   FileFormats format = kFileFormatPcm16kHzFile,
55                                   float volumeScaling = 1.0) override;
56
57  int StopPlayingFileAsMicrophone(int channel) override;
58
59  int IsPlayingFileAsMicrophone(int channel) override;
60
61  // Record speaker signal to file
62
63  int StartRecordingPlayout(int channel,
64                            const char* fileNameUTF8,
65                            CodecInst* compression = NULL,
66                            int maxSizeBytes = -1) override;
67
68  int StartRecordingPlayout(int channel,
69                            OutStream* stream,
70                            CodecInst* compression = NULL) override;
71
72  int StopRecordingPlayout(int channel) override;
73
74  // Record microphone signal to file
75
76  int StartRecordingMicrophone(const char* fileNameUTF8,
77                               CodecInst* compression = NULL,
78                               int maxSizeBytes = -1) override;
79
80  int StartRecordingMicrophone(OutStream* stream,
81                               CodecInst* compression = NULL) override;
82
83  int StopRecordingMicrophone() override;
84
85 protected:
86  VoEFileImpl(voe::SharedData* shared);
87  ~VoEFileImpl() override;
88
89 private:
90  voe::SharedData* _shared;
91};
92
93}  // namespace webrtc
94
95#endif  // WEBRTC_VOICE_ENGINE_VOE_FILE_IMPL_H
96