OLD | NEW |
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/win/waveout_output_win.h" | 5 #include "media/audio/win/waveout_output_win.h" |
6 | 6 |
7 #include <windows.h> | 7 #include <windows.h> |
8 #include <mmsystem.h> | 8 #include <mmsystem.h> |
9 #pragma comment(lib, "winmm.lib") | 9 #pragma comment(lib, "winmm.lib") |
10 | 10 |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
77 | 77 |
78 PCMWaveOutAudioOutputStream::PCMWaveOutAudioOutputStream( | 78 PCMWaveOutAudioOutputStream::PCMWaveOutAudioOutputStream( |
79 AudioManagerWin* manager, const AudioParameters& params, int num_buffers, | 79 AudioManagerWin* manager, const AudioParameters& params, int num_buffers, |
80 UINT device_id) | 80 UINT device_id) |
81 : state_(PCMA_BRAND_NEW), | 81 : state_(PCMA_BRAND_NEW), |
82 manager_(manager), | 82 manager_(manager), |
83 device_id_(device_id), | 83 device_id_(device_id), |
84 waveout_(NULL), | 84 waveout_(NULL), |
85 callback_(NULL), | 85 callback_(NULL), |
86 num_buffers_(num_buffers), | 86 num_buffers_(num_buffers), |
87 buffer_size_(params.GetPacketSize()), | 87 buffer_size_(params.GetBytesPerBuffer()), |
88 volume_(1), | 88 volume_(1), |
89 channels_(params.channels), | 89 channels_(params.channels()), |
90 pending_bytes_(0) { | 90 pending_bytes_(0) { |
91 format_.Format.wFormatTag = WAVE_FORMAT_EXTENSIBLE; | 91 format_.Format.wFormatTag = WAVE_FORMAT_EXTENSIBLE; |
92 format_.Format.nChannels = params.channels; | 92 format_.Format.nChannels = params.channels(); |
93 format_.Format.nSamplesPerSec = params.sample_rate; | 93 format_.Format.nSamplesPerSec = params.sample_rate(); |
94 format_.Format.wBitsPerSample = params.bits_per_sample; | 94 format_.Format.wBitsPerSample = params.bits_per_sample(); |
95 format_.Format.cbSize = sizeof(format_) - sizeof(WAVEFORMATEX); | 95 format_.Format.cbSize = sizeof(format_) - sizeof(WAVEFORMATEX); |
96 // The next are computed from above. | 96 // The next are computed from above. |
97 format_.Format.nBlockAlign = (format_.Format.nChannels * | 97 format_.Format.nBlockAlign = (format_.Format.nChannels * |
98 format_.Format.wBitsPerSample) / 8; | 98 format_.Format.wBitsPerSample) / 8; |
99 format_.Format.nAvgBytesPerSec = format_.Format.nBlockAlign * | 99 format_.Format.nAvgBytesPerSec = format_.Format.nBlockAlign * |
100 format_.Format.nSamplesPerSec; | 100 format_.Format.nSamplesPerSec; |
101 if (params.channels > kMaxChannelsToMask) { | 101 if (params.channels() > kMaxChannelsToMask) { |
102 format_.dwChannelMask = kChannelsToMask[kMaxChannelsToMask]; | 102 format_.dwChannelMask = kChannelsToMask[kMaxChannelsToMask]; |
103 } else { | 103 } else { |
104 format_.dwChannelMask = kChannelsToMask[params.channels]; | 104 format_.dwChannelMask = kChannelsToMask[params.channels()]; |
105 } | 105 } |
106 format_.SubFormat = KSDATAFORMAT_SUBTYPE_PCM; | 106 format_.SubFormat = KSDATAFORMAT_SUBTYPE_PCM; |
107 format_.Samples.wValidBitsPerSample = params.bits_per_sample; | 107 format_.Samples.wValidBitsPerSample = params.bits_per_sample(); |
108 } | 108 } |
109 | 109 |
110 PCMWaveOutAudioOutputStream::~PCMWaveOutAudioOutputStream() { | 110 PCMWaveOutAudioOutputStream::~PCMWaveOutAudioOutputStream() { |
111 DCHECK(NULL == waveout_); | 111 DCHECK(NULL == waveout_); |
112 } | 112 } |
113 | 113 |
114 bool PCMWaveOutAudioOutputStream::Open() { | 114 bool PCMWaveOutAudioOutputStream::Open() { |
115 if (state_ != PCMA_BRAND_NEW) | 115 if (state_ != PCMA_BRAND_NEW) |
116 return false; | 116 return false; |
117 if (BufferSize() * num_buffers_ > kMaxOpenBufferSize) | 117 if (BufferSize() * num_buffers_ > kMaxOpenBufferSize) |
(...skipping 286 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
404 // the same buffers we can get away without calling waveOutPrepareHeader. | 404 // the same buffers we can get away without calling waveOutPrepareHeader. |
405 MMRESULT result = ::waveOutWrite(stream->waveout_, | 405 MMRESULT result = ::waveOutWrite(stream->waveout_, |
406 buffer, | 406 buffer, |
407 sizeof(WAVEHDR)); | 407 sizeof(WAVEHDR)); |
408 if (result != MMSYSERR_NOERROR) | 408 if (result != MMSYSERR_NOERROR) |
409 stream->HandleError(result); | 409 stream->HandleError(result); |
410 stream->pending_bytes_ += buffer->dwBufferLength; | 410 stream->pending_bytes_ += buffer->dwBufferLength; |
411 } | 411 } |
412 } | 412 } |
413 } | 413 } |
OLD | NEW |