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 "remoting/host/audio_capturer_win.h" | 5 #include "remoting/host/audio_capturer_win.h" |
6 | 6 |
7 #include <windows.h> | 7 #include <windows.h> |
8 #include <avrt.h> | 8 #include <avrt.h> |
9 #include <mmreg.h> | 9 #include <mmreg.h> |
10 #include <mmsystem.h> | 10 #include <mmsystem.h> |
11 | 11 |
| 12 #include <stdint.h> |
| 13 #include <stdlib.h> |
12 #include <algorithm> | 14 #include <algorithm> |
13 #include <stdlib.h> | |
14 | 15 |
15 #include "base/logging.h" | 16 #include "base/logging.h" |
16 | 17 |
17 namespace { | 18 namespace { |
18 const int kChannels = 2; | 19 const int kChannels = 2; |
19 const int kBytesPerSample = 2; | 20 const int kBytesPerSample = 2; |
20 const int kBitsPerSample = kBytesPerSample * 8; | 21 const int kBitsPerSample = kBytesPerSample * 8; |
21 // Conversion factor from 100ns to 1ms. | 22 // Conversion factor from 100ns to 1ms. |
22 const int k100nsPerMillisecond = 10000; | 23 const int k100nsPerMillisecond = 10000; |
23 | 24 |
(...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
219 | 220 |
220 BYTE* data; | 221 BYTE* data; |
221 UINT32 frames; | 222 UINT32 frames; |
222 DWORD flags; | 223 DWORD flags; |
223 hr = audio_capture_client_->GetBuffer(&data, &frames, &flags, nullptr, | 224 hr = audio_capture_client_->GetBuffer(&data, &frames, &flags, nullptr, |
224 nullptr); | 225 nullptr); |
225 if (FAILED(hr)) | 226 if (FAILED(hr)) |
226 break; | 227 break; |
227 | 228 |
228 if ((flags & AUDCLNT_BUFFERFLAGS_SILENT) == 0 && | 229 if ((flags & AUDCLNT_BUFFERFLAGS_SILENT) == 0 && |
229 !silence_detector_.IsSilence( | 230 !silence_detector_.IsSilence(reinterpret_cast<const int16_t*>(data), |
230 reinterpret_cast<const int16*>(data), frames * kChannels)) { | 231 frames * kChannels)) { |
231 scoped_ptr<AudioPacket> packet(new AudioPacket()); | 232 scoped_ptr<AudioPacket> packet(new AudioPacket()); |
232 packet->add_data(data, frames * wave_format_ex_->nBlockAlign); | 233 packet->add_data(data, frames * wave_format_ex_->nBlockAlign); |
233 packet->set_encoding(AudioPacket::ENCODING_RAW); | 234 packet->set_encoding(AudioPacket::ENCODING_RAW); |
234 packet->set_sampling_rate(sampling_rate_); | 235 packet->set_sampling_rate(sampling_rate_); |
235 packet->set_bytes_per_sample(AudioPacket::BYTES_PER_SAMPLE_2); | 236 packet->set_bytes_per_sample(AudioPacket::BYTES_PER_SAMPLE_2); |
236 packet->set_channels(AudioPacket::CHANNELS_STEREO); | 237 packet->set_channels(AudioPacket::CHANNELS_STEREO); |
237 | 238 |
238 callback_.Run(packet.Pass()); | 239 callback_.Run(packet.Pass()); |
239 } | 240 } |
240 | 241 |
(...skipping 17 matching lines...) Expand all Loading... |
258 | 259 |
259 bool AudioCapturer::IsSupported() { | 260 bool AudioCapturer::IsSupported() { |
260 return true; | 261 return true; |
261 } | 262 } |
262 | 263 |
263 scoped_ptr<AudioCapturer> AudioCapturer::Create() { | 264 scoped_ptr<AudioCapturer> AudioCapturer::Create() { |
264 return make_scoped_ptr(new AudioCapturerWin()); | 265 return make_scoped_ptr(new AudioCapturerWin()); |
265 } | 266 } |
266 | 267 |
267 } // namespace remoting | 268 } // namespace remoting |
OLD | NEW |