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

Side by Side Diff: media/audio/null_audio_sink.cc

Issue 10067035: RefCounted types should not have public destructors, media/ and gpu/ edition (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebased Created 8 years, 7 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 | Annotate | Revision Log
« no previous file with comments | « media/audio/null_audio_sink.h ('k') | media/audio/test_audio_input_controller_factory.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "media/audio/null_audio_sink.h" 5 #include "media/audio/null_audio_sink.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/threading/platform_thread.h" 8 #include "base/threading/platform_thread.h"
9 9
10 namespace media { 10 namespace media {
11 11
12 NullAudioSink::NullAudioSink() 12 NullAudioSink::NullAudioSink()
13 : initialized_(false), 13 : initialized_(false),
14 playback_rate_(0.0), 14 playback_rate_(0.0),
15 playing_(false), 15 playing_(false),
16 callback_(NULL), 16 callback_(NULL),
17 thread_("NullAudioThread") { 17 thread_("NullAudioThread") {
18 } 18 }
19 19
20 NullAudioSink::~NullAudioSink() { 20 void NullAudioSink::Initialize(const AudioParameters& params,
21 DCHECK(!thread_.IsRunning()); 21 RenderCallback* callback) {
22 for (size_t i = 0; i < audio_data_.size(); ++i) 22 DCHECK(!initialized_);
23 delete [] audio_data_[i]; 23 params_ = params;
24
25 audio_data_.reserve(params.channels());
26 for (int i = 0; i < params.channels(); ++i) {
27 float* channel_data = new float[params.frames_per_buffer()];
28 audio_data_.push_back(channel_data);
29 }
30
31 callback_ = callback;
32 initialized_ = true;
24 } 33 }
25 34
26 void NullAudioSink::Start() { 35 void NullAudioSink::Start() {
27 if (!thread_.Start()) 36 if (!thread_.Start())
28 return; 37 return;
29 38
30 thread_.message_loop()->PostTask(FROM_HERE, base::Bind( 39 thread_.message_loop()->PostTask(FROM_HERE, base::Bind(
31 &NullAudioSink::FillBufferTask, this)); 40 &NullAudioSink::FillBufferTask, this));
32 } 41 }
33 42
(...skipping 23 matching lines...) Expand all
57 void NullAudioSink::GetVolume(double* volume) { 66 void NullAudioSink::GetVolume(double* volume) {
58 // Audio is always muted. 67 // Audio is always muted.
59 *volume = 0.0; 68 *volume = 0.0;
60 } 69 }
61 70
62 void NullAudioSink::SetPlaying(bool is_playing) { 71 void NullAudioSink::SetPlaying(bool is_playing) {
63 base::AutoLock auto_lock(lock_); 72 base::AutoLock auto_lock(lock_);
64 playing_ = is_playing; 73 playing_ = is_playing;
65 } 74 }
66 75
67 void NullAudioSink::Initialize(const AudioParameters& params, 76 NullAudioSink::~NullAudioSink() {
68 RenderCallback* callback) { 77 DCHECK(!thread_.IsRunning());
69 DCHECK(!initialized_); 78 for (size_t i = 0; i < audio_data_.size(); ++i)
70 params_ = params; 79 delete [] audio_data_[i];
71
72 audio_data_.reserve(params.channels());
73 for (int i = 0; i < params.channels(); ++i) {
74 float* channel_data = new float[params.frames_per_buffer()];
75 audio_data_.push_back(channel_data);
76 }
77
78 callback_ = callback;
79 initialized_ = true;
80 } 80 }
81 81
82 void NullAudioSink::FillBufferTask() { 82 void NullAudioSink::FillBufferTask() {
83 base::AutoLock auto_lock(lock_); 83 base::AutoLock auto_lock(lock_);
84 84
85 base::TimeDelta delay; 85 base::TimeDelta delay;
86 // Only consume buffers when actually playing. 86 // Only consume buffers when actually playing.
87 if (playing_) { 87 if (playing_) {
88 DCHECK_GT(playback_rate_, 0.0f); 88 DCHECK_GT(playback_rate_, 0.0f);
89 int requested_frames = params_.frames_per_buffer(); 89 int requested_frames = params_.frames_per_buffer();
(...skipping 10 matching lines...) Expand all
100 } 100 }
101 101
102 // Sleep for at least one millisecond so we don't spin the CPU. 102 // Sleep for at least one millisecond so we don't spin the CPU.
103 MessageLoop::current()->PostDelayedTask( 103 MessageLoop::current()->PostDelayedTask(
104 FROM_HERE, 104 FROM_HERE,
105 base::Bind(&NullAudioSink::FillBufferTask, this), 105 base::Bind(&NullAudioSink::FillBufferTask, this),
106 std::max(delay, base::TimeDelta::FromMilliseconds(1))); 106 std::max(delay, base::TimeDelta::FromMilliseconds(1)));
107 } 107 }
108 108
109 } // namespace media 109 } // namespace media
OLDNEW
« no previous file with comments | « media/audio/null_audio_sink.h ('k') | media/audio/test_audio_input_controller_factory.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698