OLD | NEW |
---|---|
(Empty) | |
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 | |
3 // found in the LICENSE file. | |
4 | |
5 #ifndef MEDIA_AUDIO_AUDIO_INPUT_DEVICE_IPC_H_ | |
scherkus (not reviewing)
2012/07/25 17:43:37
fix filename + header guards
tommi (sloooow) - chröme
2012/07/25 20:10:27
Done.
| |
6 #define MEDIA_AUDIO_AUDIO_INPUT_DEVICE_IPC_H_ | |
7 | |
8 #include "base/shared_memory.h" | |
9 #include "base/sync_socket.h" | |
10 #include "media/audio/audio_parameters.h" | |
11 #include "media/base/media_export.h" | |
12 | |
13 namespace media { | |
14 | |
15 // Contains IPC notifications for the state of the server side | |
16 // (AudioInputController) audio state changes and when an AudioInputController | |
17 // has been created. Implemented by AudioInputDevice. | |
18 class MEDIA_EXPORT AudioInputIPCDelegate { | |
19 public: | |
20 // Valid states for the input stream. | |
21 enum State { | |
22 kRecording, | |
23 kStopped, | |
24 kError | |
25 }; | |
26 | |
27 // Called when an AudioInputController has been created. | |
28 // The shared memory |handle| points to a memory section that's used to | |
29 // transfer data between the AudioInputDevice and AudioInputController | |
30 // objects. The implementation of OnStreamCreated takes ownership. | |
31 // The |socket_handle| is used by the AudioInputController to signal | |
32 // notifications that more data is available and can optionally provide | |
33 // parameter changes back. The AudioInputDevice must read from this socket | |
34 // and process the shared memory whenever data is read from the socket. | |
35 virtual void OnStreamCreated(base::SharedMemoryHandle handle, | |
36 base::SyncSocket::Handle socket_handle, | |
37 int length) = 0; | |
38 | |
39 // Called when state of an audio stream has changed. | |
40 virtual void OnStateChanged(State state) = 0; | |
41 | |
42 // Called when the input stream volume has changed. | |
43 virtual void OnVolume(double volume) = 0; | |
44 | |
45 // Called when a device has been started on the server side. | |
46 // If the device could not be started, |device_id| will be empty. | |
47 virtual void OnDeviceReady(const std::string& device_id) = 0; | |
48 | |
49 // Called when the AudioInputDeviceIPC object is going away and/or when the | |
50 // IPC channel has been closed and no more IPC requests can be made. | |
51 // Implementations must clear any references to the AudioInputDeviceIPC object | |
52 // at this point. | |
53 virtual void OnIPCClosed() = 0; | |
54 | |
55 protected: | |
56 virtual ~AudioInputIPCDelegate(); | |
57 }; | |
58 | |
59 // Provides IPC functionality for an AudioInputDevice. The implementation | |
60 // should asynchronously deliver the messages to an AudioInputController object | |
61 // (or create one in the case of CreateStream()), that may live in a separate | |
62 // process. | |
63 class MEDIA_EXPORT AudioInputDeviceIPC { | |
64 public: | |
65 // Registers an AudioInputIPCDelegate and returns a |stream_id| that | |
66 // must be used with all other IPC functions in this interface. | |
67 virtual int AddDelegate(AudioInputIPCDelegate* delegate) = 0; | |
68 | |
69 // Unregisters a delegate that was previously registered via a call to | |
70 // AddDelegate(). The audio stream should be in a closed state prior to | |
71 // calling this function. | |
72 virtual void RemoveDelegate(int stream_id) = 0; | |
73 | |
74 // Sends a request to create an AudioInputController object in the peer | |
75 // process, identify it by |stream_id| and configure it to use the specified | |
76 // audio |params|. Once the stream has been created, the implementation must | |
77 // generate a notification to the AudioInputIPCDelegate and call | |
78 // OnStreamCreated(). | |
79 virtual void CreateStream(int stream_id, const AudioParameters& params, | |
80 const std::string& device_id, bool automatic_gain_control) = 0; | |
81 | |
82 // Starts the device on the server side. Once the device has started, | |
83 // or failed to start, a callback to | |
84 // AudioInputIPCDelegate::OnDeviceReady() must be made. | |
85 virtual void StartDevice(int stream_id, int session_id) = 0; | |
86 | |
87 // Corresponds to a call to AudioInputController::Record() on the server side. | |
88 virtual void RecordStream(int stream_id) = 0; | |
89 | |
90 // Sets the volume of the audio stream. | |
91 virtual void SetVolume(int stream_id, double volume) = 0; | |
92 | |
93 // Closes the audio stream and deletes the matching AudioInputController | |
94 // instance. Prior to deleting the AudioInputController object, a call to | |
95 // AudioInputController::Close must be made. | |
96 virtual void CloseStream(int stream_id) = 0; | |
97 | |
98 protected: | |
99 virtual ~AudioInputDeviceIPC(); | |
100 }; | |
101 | |
102 } // namespace media | |
103 | |
104 #endif // MEDIA_AUDIO_AUDIO_INPUT_DEVICE_IPC_H_ | |
OLD | NEW |