| OLD | NEW | 
|---|
|  | (Empty) | 
| 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_MODULES_MEDIA_FILE_SOURCE_MEDIA_FILE_IMPL_H_ |  | 
| 12 #define WEBRTC_MODULES_MEDIA_FILE_SOURCE_MEDIA_FILE_IMPL_H_ |  | 
| 13 |  | 
| 14 #include "webrtc/common_types.h" |  | 
| 15 #include "webrtc/modules/include/module_common_types.h" |  | 
| 16 #include "webrtc/modules/media_file/include/media_file.h" |  | 
| 17 #include "webrtc/modules/media_file/include/media_file_defines.h" |  | 
| 18 #include "webrtc/modules/media_file/source/media_file_utility.h" |  | 
| 19 #include "webrtc/system_wrappers/include/critical_section_wrapper.h" |  | 
| 20 |  | 
| 21 namespace webrtc { |  | 
| 22 class MediaFileImpl : public MediaFile |  | 
| 23 { |  | 
| 24 |  | 
| 25 public: |  | 
| 26     MediaFileImpl(const int32_t id); |  | 
| 27     ~MediaFileImpl(); |  | 
| 28 |  | 
| 29     int32_t Process() override; |  | 
| 30     int64_t TimeUntilNextProcess() override; |  | 
| 31 |  | 
| 32     // MediaFile functions |  | 
| 33     int32_t PlayoutAudioData(int8_t* audioBuffer, |  | 
| 34                              size_t& dataLengthInBytes) override; |  | 
| 35 |  | 
| 36     int32_t PlayoutStereoData(int8_t* audioBufferLeft, |  | 
| 37                               int8_t* audioBufferRight, |  | 
| 38                               size_t& dataLengthInBytes) override; |  | 
| 39 |  | 
| 40     int32_t StartPlayingAudioFile( |  | 
| 41         const char* fileName, |  | 
| 42         const uint32_t notificationTimeMs = 0, |  | 
| 43         const bool loop = false, |  | 
| 44         const FileFormats format = kFileFormatPcm16kHzFile, |  | 
| 45         const CodecInst* codecInst = NULL, |  | 
| 46         const uint32_t startPointMs = 0, |  | 
| 47         const uint32_t stopPointMs = 0) override; |  | 
| 48 |  | 
| 49     int32_t StartPlayingAudioStream( |  | 
| 50         InStream& stream, |  | 
| 51         const uint32_t notificationTimeMs = 0, |  | 
| 52         const FileFormats format = kFileFormatPcm16kHzFile, |  | 
| 53         const CodecInst* codecInst = NULL, |  | 
| 54         const uint32_t startPointMs = 0, |  | 
| 55         const uint32_t stopPointMs = 0) override; |  | 
| 56 |  | 
| 57     int32_t StopPlaying() override; |  | 
| 58 |  | 
| 59     bool IsPlaying() override; |  | 
| 60 |  | 
| 61     int32_t PlayoutPositionMs(uint32_t& positionMs) const override; |  | 
| 62 |  | 
| 63     int32_t IncomingAudioData(const int8_t* audioBuffer, |  | 
| 64                               const size_t bufferLength) override; |  | 
| 65 |  | 
| 66     int32_t StartRecordingAudioFile(const char* fileName, |  | 
| 67                                     const FileFormats format, |  | 
| 68                                     const CodecInst& codecInst, |  | 
| 69                                     const uint32_t notificationTimeMs = 0, |  | 
| 70                                     const uint32_t maxSizeBytes = 0) override; |  | 
| 71 |  | 
| 72     int32_t StartRecordingAudioStream( |  | 
| 73         OutStream& stream, |  | 
| 74         const FileFormats format, |  | 
| 75         const CodecInst& codecInst, |  | 
| 76         const uint32_t notificationTimeMs = 0) override; |  | 
| 77 |  | 
| 78     int32_t StopRecording() override; |  | 
| 79 |  | 
| 80     bool IsRecording() override; |  | 
| 81 |  | 
| 82     int32_t RecordDurationMs(uint32_t& durationMs) override; |  | 
| 83 |  | 
| 84     bool IsStereo() override; |  | 
| 85 |  | 
| 86     int32_t SetModuleFileCallback(FileCallback* callback) override; |  | 
| 87 |  | 
| 88     int32_t FileDurationMs(const char* fileName, |  | 
| 89                            uint32_t& durationMs, |  | 
| 90                            const FileFormats format, |  | 
| 91                            const uint32_t freqInHz = 16000) override; |  | 
| 92 |  | 
| 93     int32_t codec_info(CodecInst& codecInst) const override; |  | 
| 94 |  | 
| 95 private: |  | 
| 96     // Returns true if the combination of format and codecInst is valid. |  | 
| 97     static bool ValidFileFormat(const FileFormats format, |  | 
| 98                                 const CodecInst*  codecInst); |  | 
| 99 |  | 
| 100 |  | 
| 101     // Returns true if the filename is valid |  | 
| 102     static bool ValidFileName(const char* fileName); |  | 
| 103 |  | 
| 104     // Returns true if the combination of startPointMs and stopPointMs is valid. |  | 
| 105     static bool ValidFilePositions(const uint32_t startPointMs, |  | 
| 106                                    const uint32_t stopPointMs); |  | 
| 107 |  | 
| 108     // Returns true if frequencyInHz is a supported frequency. |  | 
| 109     static bool ValidFrequency(const uint32_t frequencyInHz); |  | 
| 110 |  | 
| 111     void HandlePlayCallbacks(int32_t bytesRead); |  | 
| 112 |  | 
| 113     int32_t StartPlayingStream( |  | 
| 114         InStream& stream, |  | 
| 115         bool loop, |  | 
| 116         const uint32_t notificationTimeMs, |  | 
| 117         const FileFormats format, |  | 
| 118         const CodecInst*  codecInst, |  | 
| 119         const uint32_t startPointMs, |  | 
| 120         const uint32_t stopPointMs); |  | 
| 121 |  | 
| 122     int32_t _id; |  | 
| 123     CriticalSectionWrapper* _crit; |  | 
| 124     CriticalSectionWrapper* _callbackCrit; |  | 
| 125 |  | 
| 126     ModuleFileUtility* _ptrFileUtilityObj; |  | 
| 127     CodecInst codec_info_; |  | 
| 128 |  | 
| 129     InStream*  _ptrInStream; |  | 
| 130     OutStream* _ptrOutStream; |  | 
| 131 |  | 
| 132     FileFormats _fileFormat; |  | 
| 133     uint32_t _recordDurationMs; |  | 
| 134     uint32_t _playoutPositionMs; |  | 
| 135     uint32_t _notificationMs; |  | 
| 136 |  | 
| 137     bool _playingActive; |  | 
| 138     bool _recordingActive; |  | 
| 139     bool _isStereo; |  | 
| 140     bool _openFile; |  | 
| 141 |  | 
| 142     char _fileName[512]; |  | 
| 143 |  | 
| 144     FileCallback* _ptrCallback; |  | 
| 145 }; |  | 
| 146 }  // namespace webrtc |  | 
| 147 |  | 
| 148 #endif // WEBRTC_MODULES_MEDIA_FILE_SOURCE_MEDIA_FILE_IMPL_H_ |  | 
| OLD | NEW | 
|---|