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

Unified Diff: media/audio/win/waveout_output_win.cc

Issue 4661001: Simplified AudioOutputStream interface. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: - Created 10 years, 1 month 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « media/audio/win/waveout_output_win.h ('k') | media/base/limits.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/audio/win/waveout_output_win.cc
diff --git a/media/audio/win/waveout_output_win.cc b/media/audio/win/waveout_output_win.cc
index 2c3d5c4e1660854c3b1a22d505437b9a1fa806f7..9c996340d1956914f6e4c5879f579bf817060ee2 100644
--- a/media/audio/win/waveout_output_win.cc
+++ b/media/audio/win/waveout_output_win.cc
@@ -87,10 +87,11 @@ PCMWaveOutAudioOutputStream::PCMWaveOutAudioOutputStream(
callback_(NULL),
num_buffers_(num_buffers),
buffer_(NULL),
- buffer_size_(0),
+ buffer_size_(params.GetPacketSize()),
volume_(1),
channels_(params.channels),
pending_bytes_(0) {
+
format_.Format.wFormatTag = WAVE_FORMAT_EXTENSIBLE;
format_.Format.nChannels = params.channels;
format_.Format.nSamplesPerSec = params.sample_rate;
@@ -116,11 +117,9 @@ PCMWaveOutAudioOutputStream::~PCMWaveOutAudioOutputStream() {
DCHECK(NULL == waveout_);
}
-bool PCMWaveOutAudioOutputStream::Open(uint32 buffer_size) {
+bool PCMWaveOutAudioOutputStream::Open() {
if (state_ != PCMA_BRAND_NEW)
return false;
- if (buffer_size > kMaxOpenBufferSize)
- return false;
if (num_buffers_ < 2 || num_buffers_ > 5)
return false;
// Open the device. We'll be getting callback in WaveCallback function.
@@ -132,24 +131,20 @@ bool PCMWaveOutAudioOutputStream::Open(uint32 buffer_size) {
CALLBACK_FUNCTION);
if (result != MMSYSERR_NOERROR)
return false;
- // If we don't have a packet size we use 100ms.
- if (!buffer_size)
- buffer_size = format_.Format.nAvgBytesPerSec / 10;
- SetupBuffers(buffer_size);
- buffer_size_ = buffer_size;
+ SetupBuffers();
state_ = PCMA_READY;
return true;
}
-void PCMWaveOutAudioOutputStream::SetupBuffers(uint32 rq_size) {
+void PCMWaveOutAudioOutputStream::SetupBuffers() {
WAVEHDR* last = NULL;
WAVEHDR* first = NULL;
for (int ix = 0; ix != num_buffers_; ++ix) {
- uint32 sz = sizeof(WAVEHDR) + rq_size;
+ uint32 sz = sizeof(WAVEHDR) + buffer_size_;
buffer_ = reinterpret_cast<WAVEHDR*>(new char[sz]);
buffer_->lpData = reinterpret_cast<char*>(buffer_) + sizeof(WAVEHDR);
- buffer_->dwBufferLength = rq_size;
+ buffer_->dwBufferLength = buffer_size_;
buffer_->dwBytesRecorded = 0;
buffer_->dwUser = reinterpret_cast<DWORD_PTR>(last);
buffer_->dwFlags = WHDR_DONE;
@@ -235,6 +230,10 @@ void PCMWaveOutAudioOutputStream::Stop() {
HandleError(res);
return;
}
+
+ // Don't use callback after Stop().
+ callback_ = NULL;
+
state_ = PCMA_READY;
}
@@ -347,10 +346,5 @@ void PCMWaveOutAudioOutputStream::WaveCallback(HWAVEOUT hwo, UINT msg,
obj->pending_bytes_ += buffer->dwBufferLength;
- } else if (msg == WOM_CLOSE) {
- // We can be closed before calling Start, so it is possible to have a
- // null callback at this point.
- if (obj->callback_)
- obj->callback_->OnClose(obj);
}
}
« no previous file with comments | « media/audio/win/waveout_output_win.h ('k') | media/base/limits.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698