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 size_t kBytesPerSample = sizeof(int32_t); |
| 17 const int kNumChannels = 2; |
| 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 |