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_AUDIO_CODING_MAIN_TEST_PCMFILE_H_ 12 #define WEBRTC_MODULES_AUDIO_CODING_MAIN_TEST_PCMFILE_H_ 13 14 #include <stdio.h> 15 #include <stdlib.h> 16 17 #include <string> 18 19 #include "webrtc/modules/interface/module_common_types.h" 20 #include "webrtc/typedefs.h" 21 22 namespace webrtc { 23 24 class PCMFile { 25 public: 26 PCMFile(); 27 PCMFile(uint32_t timestamp); 28 ~PCMFile() { 29 if (pcm_file_ != NULL) { 30 fclose(pcm_file_); 31 } 32 } 33 34 void Open(const std::string& filename, uint16_t frequency, const char* mode, 35 bool auto_rewind = false); 36 37 int32_t Read10MsData(AudioFrame& audio_frame); 38 39 void Write10MsData(int16_t *playout_buffer, uint16_t length_smpls); 40 void Write10MsData(AudioFrame& audio_frame); 41 42 uint16_t PayloadLength10Ms() const; 43 int32_t SamplingFrequency() const; 44 void Close(); 45 bool EndOfFile() const { 46 return end_of_file_; 47 } 48 void Rewind(); 49 static int16_t ChooseFile(std::string* file_name, int16_t max_len, 50 uint16_t* frequency_hz); 51 bool Rewinded(); 52 void SaveStereo(bool is_stereo = true); 53 void ReadStereo(bool is_stereo = true); 54 private: 55 FILE* pcm_file_; 56 uint16_t samples_10ms_; 57 int32_t frequency_; 58 bool end_of_file_; 59 bool auto_rewind_; 60 bool rewinded_; 61 uint32_t timestamp_; 62 bool read_stereo_; 63 bool save_stereo_; 64 }; 65 66 } // namespace webrtc 67 68 #endif // WEBRTC_MODULES_AUDIO_CODING_MAIN_TEST_PCMFILE_H_ 69