| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chromecast/media/cma/backend/alsa/mock_alsa_wrapper.h" | 5 #include "chromecast/media/cma/backend/alsa/mock_alsa_wrapper.h" |
| 6 | 6 |
| 7 #include "base/logging.h" | 7 #include "base/logging.h" |
| 8 | 8 |
| 9 // Define dummy structs here to avoid linking in the ALSA lib. | 9 // Define dummy structs here to avoid linking in the ALSA lib. |
| 10 struct _snd_pcm_hw_params {}; | 10 struct _snd_pcm_hw_params {}; |
| 11 struct _snd_pcm {}; | 11 struct _snd_pcm {}; |
| 12 | 12 |
| 13 namespace chromecast { | 13 namespace chromecast { |
| 14 namespace media { | 14 namespace media { |
| 15 | 15 |
| 16 const int kNumChannels = 2; |
| 17 const int kBytesPerSample = sizeof(int32_t); |
| 18 |
| 16 // This class keeps basic state to ensure that ALSA is being used correctly. | 19 // This class keeps basic state to ensure that ALSA is being used correctly. |
| 17 // Calls from MockAlsaWrapper are delegated to an instance of this class in | 20 // Calls from MockAlsaWrapper are delegated to an instance of this class in |
| 18 // cases where internal ALSA state change occurs, or where a valid value needs | 21 // cases where internal ALSA state change occurs, or where a valid value needs |
| 19 // to be returned to the caller. | 22 // to be returned to the caller. |
| 20 class MockAlsaWrapper::FakeAlsaWrapper : public AlsaWrapper { | 23 class MockAlsaWrapper::FakeAlsaWrapper : public AlsaWrapper { |
| 21 public: | 24 public: |
| 22 FakeAlsaWrapper() | 25 FakeAlsaWrapper() |
| 23 : state_(SND_PCM_STATE_RUNNING), | 26 : state_(SND_PCM_STATE_RUNNING), |
| 24 fake_handle_(nullptr), | 27 fake_handle_(nullptr), |
| 25 fake_pcm_hw_params_(nullptr) {} | 28 fake_pcm_hw_params_(nullptr) {} |
| (...skipping 24 matching lines...) Expand all Loading... |
| 50 *handle = fake_handle_; | 53 *handle = fake_handle_; |
| 51 return 0; | 54 return 0; |
| 52 } | 55 } |
| 53 | 56 |
| 54 snd_pcm_sframes_t PcmWritei(snd_pcm_t* handle, | 57 snd_pcm_sframes_t PcmWritei(snd_pcm_t* handle, |
| 55 const void* buffer, | 58 const void* buffer, |
| 56 snd_pcm_uframes_t size) override { | 59 snd_pcm_uframes_t size) override { |
| 57 CHECK_EQ(fake_handle_, handle); | 60 CHECK_EQ(fake_handle_, handle); |
| 58 CHECK(buffer); | 61 CHECK(buffer); |
| 59 const uint8_t* ptr = reinterpret_cast<const uint8_t*>(buffer); | 62 const uint8_t* ptr = reinterpret_cast<const uint8_t*>(buffer); |
| 60 int len = size * 2 * 4; | 63 int len = size * kNumChannels * kBytesPerSample; |
| 61 data_.assign(ptr, ptr + len); | 64 data_.assign(ptr, ptr + len); |
| 62 return size; | 65 return size; |
| 63 } | 66 } |
| 64 | 67 |
| 65 int PcmHwParamsMalloc(snd_pcm_hw_params_t** ptr) override { | 68 int PcmHwParamsMalloc(snd_pcm_hw_params_t** ptr) override { |
| 66 fake_pcm_hw_params_ = new snd_pcm_hw_params_t(); | 69 fake_pcm_hw_params_ = new snd_pcm_hw_params_t(); |
| 67 CHECK(fake_pcm_hw_params_); | 70 CHECK(fake_pcm_hw_params_); |
| 68 *ptr = fake_pcm_hw_params_; | 71 *ptr = fake_pcm_hw_params_; |
| 69 return 0; | 72 return 0; |
| 70 } | 73 } |
| 71 | 74 |
| 72 ssize_t PcmFormatSize(snd_pcm_format_t format, size_t samples) override { | 75 ssize_t PcmFormatSize(snd_pcm_format_t format, size_t samples) override { |
| 73 return 4 * samples; | 76 return kBytesPerSample * samples; |
| 74 }; | 77 }; |
| 75 | 78 |
| 76 snd_pcm_state_t state() { return state_; } | 79 snd_pcm_state_t state() { return state_; } |
| 77 std::vector<uint8_t>& data() { return data_; } | 80 std::vector<uint8_t>& data() { return data_; } |
| 78 | 81 |
| 79 private: | 82 private: |
| 80 snd_pcm_state_t state_; | 83 snd_pcm_state_t state_; |
| 81 snd_pcm_t* fake_handle_; | 84 snd_pcm_t* fake_handle_; |
| 82 snd_pcm_hw_params_t* fake_pcm_hw_params_; | 85 snd_pcm_hw_params_t* fake_pcm_hw_params_; |
| 83 std::vector<uint8_t> data_; | 86 std::vector<uint8_t> data_; |
| (...skipping 27 matching lines...) Expand all Loading... |
| 111 snd_pcm_state_t MockAlsaWrapper::state() { | 114 snd_pcm_state_t MockAlsaWrapper::state() { |
| 112 return fake_->state(); | 115 return fake_->state(); |
| 113 } | 116 } |
| 114 | 117 |
| 115 const std::vector<uint8_t>& MockAlsaWrapper::data() { | 118 const std::vector<uint8_t>& MockAlsaWrapper::data() { |
| 116 return fake_->data(); | 119 return fake_->data(); |
| 117 } | 120 } |
| 118 | 121 |
| 119 } // namespace media | 122 } // namespace media |
| 120 } // namespace chromecast | 123 } // namespace chromecast |
| OLD | NEW |