| 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 <windows.h> | 5 #include <windows.h> |
| 6 #include <mmsystem.h> | 6 #include <mmsystem.h> |
| 7 | 7 |
| 8 #include "base/basictypes.h" | 8 #include "base/basictypes.h" |
| 9 #include "base/base_paths.h" | 9 #include "base/base_paths.h" |
| 10 #include "base/file_util.h" | 10 #include "base/file_util.h" |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 47 had_error_(0) { | 47 had_error_(0) { |
| 48 } | 48 } |
| 49 // AudioSourceCallback::OnMoreData implementation: | 49 // AudioSourceCallback::OnMoreData implementation: |
| 50 virtual int OnMoreData(AudioBus* audio_bus, | 50 virtual int OnMoreData(AudioBus* audio_bus, |
| 51 AudioBuffersState buffers_state) { | 51 AudioBuffersState buffers_state) { |
| 52 ++callback_count_; | 52 ++callback_count_; |
| 53 // Touch the channel memory value to make sure memory is good. | 53 // Touch the channel memory value to make sure memory is good. |
| 54 audio_bus->Zero(); | 54 audio_bus->Zero(); |
| 55 return audio_bus->frames(); | 55 return audio_bus->frames(); |
| 56 } | 56 } |
| 57 virtual int OnMoreIOData(AudioBus* source, |
| 58 AudioBus* dest, |
| 59 AudioBuffersState buffers_state) { |
| 60 NOTREACHED(); |
| 61 return 0; |
| 62 } |
| 57 // AudioSourceCallback::OnError implementation: | 63 // AudioSourceCallback::OnError implementation: |
| 58 virtual void OnError(AudioOutputStream* stream, int code) { | 64 virtual void OnError(AudioOutputStream* stream, int code) { |
| 59 ++had_error_; | 65 ++had_error_; |
| 60 } | 66 } |
| 61 // Returns how many times OnMoreData() has been called. | 67 // Returns how many times OnMoreData() has been called. |
| 62 int callback_count() const { | 68 int callback_count() const { |
| 63 return callback_count_; | 69 return callback_count_; |
| 64 } | 70 } |
| 65 // Returns how many times the OnError callback was called. | 71 // Returns how many times the OnError callback was called. |
| 66 int had_error() const { | 72 int had_error() const { |
| (...skipping 28 matching lines...) Expand all Loading... |
| 95 } | 101 } |
| 96 private: | 102 private: |
| 97 int laggy_after_buffer_; | 103 int laggy_after_buffer_; |
| 98 int lag_in_ms_; | 104 int lag_in_ms_; |
| 99 }; | 105 }; |
| 100 | 106 |
| 101 class MockAudioSource : public AudioOutputStream::AudioSourceCallback { | 107 class MockAudioSource : public AudioOutputStream::AudioSourceCallback { |
| 102 public: | 108 public: |
| 103 MOCK_METHOD2(OnMoreData, int(AudioBus* audio_bus, | 109 MOCK_METHOD2(OnMoreData, int(AudioBus* audio_bus, |
| 104 AudioBuffersState buffers_state)); | 110 AudioBuffersState buffers_state)); |
| 111 MOCK_METHOD3(OnMoreIOData, int(AudioBus* source, |
| 112 AudioBus* dest, |
| 113 AudioBuffersState buffers_state)); |
| 105 MOCK_METHOD2(OnError, void(AudioOutputStream* stream, int code)); | 114 MOCK_METHOD2(OnError, void(AudioOutputStream* stream, int code)); |
| 106 | 115 |
| 107 static int ClearData(AudioBus* audio_bus, AudioBuffersState buffers_state) { | 116 static int ClearData(AudioBus* audio_bus, AudioBuffersState buffers_state) { |
| 108 audio_bus->Zero(); | 117 audio_bus->Zero(); |
| 109 return audio_bus->frames(); | 118 return audio_bus->frames(); |
| 110 } | 119 } |
| 111 }; | 120 }; |
| 112 | 121 |
| 113 // Helper class to memory map an entire file. The mapping is read-only. Don't | 122 // Helper class to memory map an entire file. The mapping is read-only. Don't |
| 114 // use for gigabyte-sized files. Attempts to write to this memory generate | 123 // use for gigabyte-sized files. Attempts to write to this memory generate |
| (...skipping 467 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 582 | 591 |
| 583 // AudioSourceCallback::OnMoreData implementation: | 592 // AudioSourceCallback::OnMoreData implementation: |
| 584 virtual int OnMoreData(AudioBus* audio_bus, | 593 virtual int OnMoreData(AudioBus* audio_bus, |
| 585 AudioBuffersState buffers_state) { | 594 AudioBuffersState buffers_state) { |
| 586 socket_->Send(&buffers_state, sizeof(buffers_state)); | 595 socket_->Send(&buffers_state, sizeof(buffers_state)); |
| 587 uint32 size = socket_->Receive(data_.get(), data_size_); | 596 uint32 size = socket_->Receive(data_.get(), data_size_); |
| 588 DCHECK_EQ(static_cast<size_t>(size) % sizeof(*audio_bus_->channel(0)), 0U); | 597 DCHECK_EQ(static_cast<size_t>(size) % sizeof(*audio_bus_->channel(0)), 0U); |
| 589 audio_bus_->CopyTo(audio_bus); | 598 audio_bus_->CopyTo(audio_bus); |
| 590 return audio_bus_->frames(); | 599 return audio_bus_->frames(); |
| 591 } | 600 } |
| 601 virtual int OnMoreIOData(AudioBus* source, |
| 602 AudioBus* dest, |
| 603 AudioBuffersState buffers_state) { |
| 604 NOTREACHED(); |
| 605 return 0; |
| 606 } |
| 592 // AudioSourceCallback::OnError implementation: | 607 // AudioSourceCallback::OnError implementation: |
| 593 virtual void OnError(AudioOutputStream* stream, int code) { | 608 virtual void OnError(AudioOutputStream* stream, int code) { |
| 594 } | 609 } |
| 595 | 610 |
| 596 private: | 611 private: |
| 597 base::SyncSocket* socket_; | 612 base::SyncSocket* socket_; |
| 598 int data_size_; | 613 int data_size_; |
| 599 scoped_ptr_malloc<float, base::ScopedPtrAlignedFree> data_; | 614 scoped_ptr_malloc<float, base::ScopedPtrAlignedFree> data_; |
| 600 scoped_ptr<AudioBus> audio_bus_; | 615 scoped_ptr<AudioBus> audio_bus_; |
| 601 }; | 616 }; |
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 686 oas->Start(&source); | 701 oas->Start(&source); |
| 687 | 702 |
| 688 ::WaitForSingleObject(thread, INFINITE); | 703 ::WaitForSingleObject(thread, INFINITE); |
| 689 ::CloseHandle(thread); | 704 ::CloseHandle(thread); |
| 690 | 705 |
| 691 oas->Stop(); | 706 oas->Stop(); |
| 692 oas->Close(); | 707 oas->Close(); |
| 693 } | 708 } |
| 694 | 709 |
| 695 } // namespace media | 710 } // namespace media |
| OLD | NEW |