Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1202)

Side by Side Diff: chromecast/media/cma/backend/alsa/stream_mixer_alsa.h

Issue 1875623002: Convert //chromecast from scoped_ptr to std::unique_ptr (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 #ifndef CHROMECAST_MEDIA_CMA_BACKEND_ALSA_STREAM_MIXER_ALSA_H_ 5 #ifndef CHROMECAST_MEDIA_CMA_BACKEND_ALSA_STREAM_MIXER_ALSA_H_
6 #define CHROMECAST_MEDIA_CMA_BACKEND_ALSA_STREAM_MIXER_ALSA_H_ 6 #define CHROMECAST_MEDIA_CMA_BACKEND_ALSA_STREAM_MIXER_ALSA_H_
7 7
8 #include <alsa/asoundlib.h> 8 #include <alsa/asoundlib.h>
9 #include <stdint.h> 9 #include <stdint.h>
10 10
11 #include <memory>
11 #include <string> 12 #include <string>
12 #include <vector> 13 #include <vector>
13 14
14 #include "base/macros.h" 15 #include "base/macros.h"
15 #include "base/memory/ref_counted.h" 16 #include "base/memory/ref_counted.h"
16 #include "base/memory/scoped_ptr.h"
17 #include "base/memory/scoped_vector.h" 17 #include "base/memory/scoped_vector.h"
18 #include "base/threading/thread.h" 18 #include "base/threading/thread.h"
19 #include "base/timer/timer.h" 19 #include "base/timer/timer.h"
20 #include "chromecast/media/cma/backend/alsa/media_pipeline_backend_alsa.h" 20 #include "chromecast/media/cma/backend/alsa/media_pipeline_backend_alsa.h"
21 #include "chromecast/public/cast_media_shlib.h" 21 #include "chromecast/public/cast_media_shlib.h"
22 22
23 namespace media { 23 namespace media {
24 class AudioBus; 24 class AudioBus;
25 } // namespace media 25 } // namespace media
26 26
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
121 bool empty() const { return inputs_.empty(); } 121 bool empty() const { return inputs_.empty(); }
122 State state() const { return state_; } 122 State state() const { return state_; }
123 int num_output_channels() const { return num_output_channels_; } 123 int num_output_channels() const { return num_output_channels_; }
124 124
125 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner() const { 125 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner() const {
126 return mixer_task_runner_; 126 return mixer_task_runner_;
127 } 127 }
128 128
129 // Adds an input to the mixer. The input will live at least until 129 // Adds an input to the mixer. The input will live at least until
130 // RemoveInput(input) is called. Can be called on any thread. 130 // RemoveInput(input) is called. Can be called on any thread.
131 void AddInput(scoped_ptr<InputQueue> input); 131 void AddInput(std::unique_ptr<InputQueue> input);
132 // Instructs the mixer to remove an input. The input should not be referenced 132 // Instructs the mixer to remove an input. The input should not be referenced
133 // after this is called. Can be called on any thread. 133 // after this is called. Can be called on any thread.
134 void RemoveInput(InputQueue* input); 134 void RemoveInput(InputQueue* input);
135 135
136 // Attempts to write some frames of audio to ALSA. Must only be called on the 136 // Attempts to write some frames of audio to ALSA. Must only be called on the
137 // mixer thread. 137 // mixer thread.
138 void OnFramesQueued(); 138 void OnFramesQueued();
139 139
140 void SetAlsaWrapperForTest(scoped_ptr<AlsaWrapper> alsa_wrapper); 140 void SetAlsaWrapperForTest(std::unique_ptr<AlsaWrapper> alsa_wrapper);
141 void WriteFramesForTest(); // Can be called on any thread. 141 void WriteFramesForTest(); // Can be called on any thread.
142 void ClearInputsForTest(); // Removes all inputs. 142 void ClearInputsForTest(); // Removes all inputs.
143 143
144 void AddLoopbackAudioObserver( 144 void AddLoopbackAudioObserver(
145 CastMediaShlib::LoopbackAudioObserver* observer); 145 CastMediaShlib::LoopbackAudioObserver* observer);
146 146
147 void RemoveLoopbackAudioObserver( 147 void RemoveLoopbackAudioObserver(
148 CastMediaShlib::LoopbackAudioObserver* observer); 148 CastMediaShlib::LoopbackAudioObserver* observer);
149 149
150 protected: 150 protected:
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
184 void CheckClose(); 184 void CheckClose();
185 185
186 void WriteFrames(); 186 void WriteFrames();
187 bool TryWriteFrames(); 187 bool TryWriteFrames();
188 void WriteMixedPcm(const ::media::AudioBus& mixed, int frames); 188 void WriteMixedPcm(const ::media::AudioBus& mixed, int frames);
189 void UpdateRenderingDelay(int newly_pushed_frames); 189 void UpdateRenderingDelay(int newly_pushed_frames);
190 ssize_t BytesPerOutputFormatSample(); 190 ssize_t BytesPerOutputFormatSample();
191 191
192 static bool single_threaded_for_test_; 192 static bool single_threaded_for_test_;
193 193
194 scoped_ptr<AlsaWrapper> alsa_; 194 std::unique_ptr<AlsaWrapper> alsa_;
195 scoped_ptr<base::Thread> mixer_thread_; 195 std::unique_ptr<base::Thread> mixer_thread_;
196 scoped_refptr<base::SingleThreadTaskRunner> mixer_task_runner_; 196 scoped_refptr<base::SingleThreadTaskRunner> mixer_task_runner_;
197 197
198 unsigned int fixed_output_samples_per_second_; 198 unsigned int fixed_output_samples_per_second_;
199 int requested_output_samples_per_second_; 199 int requested_output_samples_per_second_;
200 int output_samples_per_second_; 200 int output_samples_per_second_;
201 snd_pcm_t* pcm_; 201 snd_pcm_t* pcm_;
202 snd_pcm_hw_params_t* pcm_hw_params_; 202 snd_pcm_hw_params_t* pcm_hw_params_;
203 snd_pcm_status_t* pcm_status_; 203 snd_pcm_status_t* pcm_status_;
204 snd_pcm_format_t pcm_format_; 204 snd_pcm_format_t pcm_format_;
205 205
(...skipping 11 matching lines...) Expand all
217 217
218 ScopedVector<InputQueue> inputs_; 218 ScopedVector<InputQueue> inputs_;
219 ScopedVector<InputQueue> ignored_inputs_; 219 ScopedVector<InputQueue> ignored_inputs_;
220 MediaPipelineBackendAlsa::RenderingDelay rendering_delay_; 220 MediaPipelineBackendAlsa::RenderingDelay rendering_delay_;
221 // Buffer to write final interleaved data before sending to snd_pcm_writei(). 221 // Buffer to write final interleaved data before sending to snd_pcm_writei().
222 std::vector<uint8_t> interleaved_; 222 std::vector<uint8_t> interleaved_;
223 223
224 // Buffers that hold audio data while it is mixed, before it is passed to the 224 // Buffers that hold audio data while it is mixed, before it is passed to the
225 // ALSA layer. These are kept as members of this class to minimize copies and 225 // ALSA layer. These are kept as members of this class to minimize copies and
226 // allocations. 226 // allocations.
227 scoped_ptr<::media::AudioBus> temp_; 227 std::unique_ptr<::media::AudioBus> temp_;
228 scoped_ptr<::media::AudioBus> mixed_; 228 std::unique_ptr<::media::AudioBus> mixed_;
229 229
230 scoped_ptr<base::Timer> retry_write_frames_timer_; 230 std::unique_ptr<base::Timer> retry_write_frames_timer_;
231 231
232 int check_close_timeout_; 232 int check_close_timeout_;
233 scoped_ptr<base::Timer> check_close_timer_; 233 std::unique_ptr<base::Timer> check_close_timer_;
234 234
235 std::vector<CastMediaShlib::LoopbackAudioObserver*> loopback_observers_; 235 std::vector<CastMediaShlib::LoopbackAudioObserver*> loopback_observers_;
236 236
237 DISALLOW_COPY_AND_ASSIGN(StreamMixerAlsa); 237 DISALLOW_COPY_AND_ASSIGN(StreamMixerAlsa);
238 }; 238 };
239 239
240 } // namespace media 240 } // namespace media
241 } // namespace chromecast 241 } // namespace chromecast
242 242
243 #endif // CHROMECAST_MEDIA_CMA_BACKEND_ALSA_STREAM_MIXER_ALSA_H_ 243 #endif // CHROMECAST_MEDIA_CMA_BACKEND_ALSA_STREAM_MIXER_ALSA_H_
OLDNEW
« no previous file with comments | « chromecast/media/cma/backend/alsa/mock_alsa_wrapper.h ('k') | chromecast/media/cma/backend/alsa/stream_mixer_alsa.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698