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 #ifndef MEDIA_AUDIO_AUDIO_DEVICE_THREAD_H_ | 5 #ifndef MEDIA_AUDIO_AUDIO_DEVICE_THREAD_H_ |
6 #define MEDIA_AUDIO_AUDIO_DEVICE_THREAD_H_ | 6 #define MEDIA_AUDIO_AUDIO_DEVICE_THREAD_H_ |
7 | 7 |
8 #include "base/basictypes.h" | 8 #include "base/basictypes.h" |
9 #include "base/memory/ref_counted.h" | 9 #include "base/memory/ref_counted.h" |
10 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
(...skipping 19 matching lines...) Expand all Loading... |
30 // TODO(tommi): Multiple audio input/output device instances should be able to | 30 // TODO(tommi): Multiple audio input/output device instances should be able to |
31 // share the same thread instead of spinning one per instance. | 31 // share the same thread instead of spinning one per instance. |
32 class MEDIA_EXPORT AudioDeviceThread { | 32 class MEDIA_EXPORT AudioDeviceThread { |
33 public: | 33 public: |
34 // This is the callback interface/base class that Audio[Output|Input]Device | 34 // This is the callback interface/base class that Audio[Output|Input]Device |
35 // implements to render input/output data. The callbacks run on the | 35 // implements to render input/output data. The callbacks run on the |
36 // thread owned by AudioDeviceThread. | 36 // thread owned by AudioDeviceThread. |
37 class Callback { | 37 class Callback { |
38 public: | 38 public: |
39 Callback(const AudioParameters& audio_parameters, | 39 Callback(const AudioParameters& audio_parameters, |
| 40 int input_channels, |
40 base::SharedMemoryHandle memory, | 41 base::SharedMemoryHandle memory, |
41 int memory_length); | 42 int memory_length); |
42 virtual ~Callback(); | 43 virtual ~Callback(); |
43 | 44 |
44 // One time initialization for the callback object on the audio thread. | 45 // One time initialization for the callback object on the audio thread. |
45 void InitializeOnAudioThread(); | 46 void InitializeOnAudioThread(); |
46 | 47 |
47 // Derived implementations must call shared_memory_.Map appropriately | 48 // Derived implementations must call shared_memory_.Map appropriately |
48 // before Process can be called. | 49 // before Process can be called. |
49 virtual void MapSharedMemory() = 0; | 50 virtual void MapSharedMemory() = 0; |
50 | 51 |
51 // Called whenever we receive notifications about pending data. | 52 // Called whenever we receive notifications about pending data. |
52 virtual void Process(int pending_data) = 0; | 53 virtual void Process(int pending_data) = 0; |
53 | 54 |
54 protected: | 55 protected: |
55 // Protected so that derived classes can access directly. | 56 // Protected so that derived classes can access directly. |
56 // The variables are 'const' since values are calculated/set in the | 57 // The variables are 'const' since values are calculated/set in the |
57 // constructor and must never change. | 58 // constructor and must never change. |
58 const AudioParameters audio_parameters_; | 59 const AudioParameters audio_parameters_; |
| 60 const int input_channels_; |
59 const int samples_per_ms_; | 61 const int samples_per_ms_; |
60 const int bytes_per_ms_; | 62 const int bytes_per_ms_; |
61 | 63 |
62 // Audio buffers that are allocated in InitializeOnAudioThread() based on | |
63 // info from audio_parameters_. | |
64 base::SharedMemory shared_memory_; | 64 base::SharedMemory shared_memory_; |
65 const int memory_length_; | 65 const int memory_length_; |
66 | 66 |
67 private: | 67 private: |
68 DISALLOW_COPY_AND_ASSIGN(Callback); | 68 DISALLOW_COPY_AND_ASSIGN(Callback); |
69 }; | 69 }; |
70 | 70 |
71 AudioDeviceThread(); | 71 AudioDeviceThread(); |
72 ~AudioDeviceThread(); | 72 ~AudioDeviceThread(); |
73 | 73 |
(...skipping 28 matching lines...) Expand all Loading... |
102 | 102 |
103 base::Lock thread_lock_; | 103 base::Lock thread_lock_; |
104 scoped_refptr<AudioDeviceThread::Thread> thread_; | 104 scoped_refptr<AudioDeviceThread::Thread> thread_; |
105 | 105 |
106 DISALLOW_COPY_AND_ASSIGN(AudioDeviceThread); | 106 DISALLOW_COPY_AND_ASSIGN(AudioDeviceThread); |
107 }; | 107 }; |
108 | 108 |
109 } // namespace media. | 109 } // namespace media. |
110 | 110 |
111 #endif // MEDIA_AUDIO_AUDIO_DEVICE_THREAD_H_ | 111 #endif // MEDIA_AUDIO_AUDIO_DEVICE_THREAD_H_ |
OLD | NEW |