diff options
author | kwiberg@webrtc.org <kwiberg@webrtc.org> | 2014-08-25 06:26:04 +0000 |
---|---|---|
committer | kwiberg@webrtc.org <kwiberg@webrtc.org> | 2014-08-25 06:26:04 +0000 |
commit | 999bcbc7588ed449b0ee6db29aeb79f72007488b (patch) | |
tree | 75ee1c860eb0e2cc46445efddedc739399958b1b /common_audio | |
parent | f854f30d7981795f687f9b4379100c037934535d (diff) | |
download | webrtc-999bcbc7588ed449b0ee6db29aeb79f72007488b.tar.gz |
Fix WEBRTC_AEC_DEBUG_DUMP (broken by int16->float conversion)
And in the process, make it dump WAV files instead of raw PCM.
R=andrew@webrtc.org, bjornv@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/19089004
git-svn-id: http://webrtc.googlecode.com/svn/trunk/webrtc@6959 4adac7df-926f-26a2-2b94-8c16560cd09d
Diffstat (limited to 'common_audio')
-rw-r--r-- | common_audio/wav_writer.cc | 12 | ||||
-rw-r--r-- | common_audio/wav_writer.h | 7 | ||||
-rw-r--r-- | common_audio/wav_writer_unittest.cc | 21 |
3 files changed, 36 insertions, 4 deletions
diff --git a/common_audio/wav_writer.cc b/common_audio/wav_writer.cc index e5714735..f3b8118c 100644 --- a/common_audio/wav_writer.cc +++ b/common_audio/wav_writer.cc @@ -101,3 +101,15 @@ void rtc_WavWriteSamples(rtc_WavFile* wf, size_t num_samples) { reinterpret_cast<webrtc::WavFile*>(wf)->WriteSamples(samples, num_samples); } + +int rtc_WavSampleRate(const rtc_WavFile* wf) { + return reinterpret_cast<const webrtc::WavFile*>(wf)->sample_rate(); +} + +int rtc_WavNumChannels(const rtc_WavFile* wf) { + return reinterpret_cast<const webrtc::WavFile*>(wf)->num_channels(); +} + +uint32_t rtc_WavNumSamples(const rtc_WavFile* wf) { + return reinterpret_cast<const webrtc::WavFile*>(wf)->num_samples(); +} diff --git a/common_audio/wav_writer.h b/common_audio/wav_writer.h index a8fee51e..e0582657 100644 --- a/common_audio/wav_writer.h +++ b/common_audio/wav_writer.h @@ -34,6 +34,10 @@ class WavFile { // interleaved channels. void WriteSamples(const float* samples, size_t num_samples); + int sample_rate() const { return sample_rate_; } + int num_channels() const { return num_channels_; } + uint32_t num_samples() const { return num_samples_; } + private: void WriteSamples(const int16_t* samples, size_t num_samples); void Close(); @@ -57,6 +61,9 @@ void rtc_WavClose(rtc_WavFile* wf); void rtc_WavWriteSamples(rtc_WavFile* wf, const float* samples, size_t num_samples); +int rtc_WavSampleRate(const rtc_WavFile* wf); +int rtc_WavNumChannels(const rtc_WavFile* wf); +uint32_t rtc_WavNumSamples(const rtc_WavFile* wf); #ifdef __cplusplus } // extern "C" diff --git a/common_audio/wav_writer_unittest.cc b/common_audio/wav_writer_unittest.cc index 9efe96e3..9c593be6 100644 --- a/common_audio/wav_writer_unittest.cc +++ b/common_audio/wav_writer_unittest.cc @@ -25,10 +25,14 @@ static const float kSamples[] = {0.0, 10.0, 4e4, -1e9}; // Write a tiny WAV file with the C++ interface and verify the result. TEST(WavWriterTest, CPP) { const std::string outfile = webrtc::test::OutputPath() + "wavtest1.wav"; - static const int kNumSamples = 3; + static const uint32_t kNumSamples = 3; { webrtc::WavFile w(outfile, 14099, 1); + EXPECT_EQ(14099, w.sample_rate()); + EXPECT_EQ(1, w.num_channels()); + EXPECT_EQ(0u, w.num_samples()); w.WriteSamples(kSamples, kNumSamples); + EXPECT_EQ(kNumSamples, w.num_samples()); } static const uint8_t kExpectedContents[] = { 'R', 'I', 'F', 'F', @@ -64,9 +68,14 @@ TEST(WavWriterTest, CPP) { TEST(WavWriterTest, C) { const std::string outfile = webrtc::test::OutputPath() + "wavtest2.wav"; rtc_WavFile *w = rtc_WavOpen(outfile.c_str(), 11904, 2); - static const int kNumSamples = 4; + EXPECT_EQ(11904, rtc_WavSampleRate(w)); + EXPECT_EQ(2, rtc_WavNumChannels(w)); + EXPECT_EQ(0u, rtc_WavNumSamples(w)); + static const uint32_t kNumSamples = 4; rtc_WavWriteSamples(w, &kSamples[0], 2); + EXPECT_EQ(2u, rtc_WavNumSamples(w)); rtc_WavWriteSamples(w, &kSamples[2], kNumSamples - 2); + EXPECT_EQ(kNumSamples, rtc_WavNumSamples(w)); rtc_WavClose(w); static const uint8_t kExpectedContents[] = { 'R', 'I', 'F', 'F', @@ -104,9 +113,9 @@ TEST(WavWriterTest, LargeFile) { std::string outfile = webrtc::test::OutputPath() + "wavtest3.wav"; static const int kSampleRate = 8000; static const int kNumChannels = 2; - static const int kNumSamples = 3 * kSampleRate * kNumChannels; + static const uint32_t kNumSamples = 3 * kSampleRate * kNumChannels; float samples[kNumSamples]; - for (int i = 0; i < kNumSamples; i += kNumChannels) { + for (uint32_t i = 0; i < kNumSamples; i += kNumChannels) { // A nice periodic beeping sound. static const double kToneHz = 440; const double t = static_cast<double>(i) / (kNumChannels * kSampleRate); @@ -117,7 +126,11 @@ TEST(WavWriterTest, LargeFile) { } { webrtc::WavFile w(outfile, kSampleRate, kNumChannels); + EXPECT_EQ(kSampleRate, w.sample_rate()); + EXPECT_EQ(kNumChannels, w.num_channels()); + EXPECT_EQ(0u, w.num_samples()); w.WriteSamples(samples, kNumSamples); + EXPECT_EQ(kNumSamples, w.num_samples()); } EXPECT_EQ(sizeof(int16_t) * kNumSamples + webrtc::kWavHeaderSize, webrtc::test::GetFileSize(outfile)); |