Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(243)

Side by Side Diff: media/midi/midi_manager.h

Issue 1534273002: Switch to standard integer types in media/. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: more Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 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_MIDI_MIDI_MANAGER_H_ 5 #ifndef MEDIA_MIDI_MIDI_MANAGER_H_
6 #define MEDIA_MIDI_MIDI_MANAGER_H_ 6 #define MEDIA_MIDI_MIDI_MANAGER_H_
7 7
8 #include <set> 8 #include <set>
9 #include <vector> 9 #include <vector>
10 10
11 #include "base/basictypes.h"
12 #include "base/memory/ref_counted.h" 11 #include "base/memory/ref_counted.h"
13 #include "base/synchronization/lock.h" 12 #include "base/synchronization/lock.h"
14 #include "base/time/time.h" 13 #include "base/time/time.h"
15 #include "media/midi/midi_export.h" 14 #include "media/midi/midi_export.h"
16 #include "media/midi/midi_port_info.h" 15 #include "media/midi/midi_port_info.h"
17 #include "media/midi/result.h" 16 #include "media/midi/result.h"
18 17
19 namespace base { 18 namespace base {
20 class SingleThreadTaskRunner; 19 class SingleThreadTaskRunner;
21 } // namespace base 20 } // namespace base
22 21
23 namespace media { 22 namespace media {
24 namespace midi { 23 namespace midi {
25 24
26 // A MidiManagerClient registers with the MidiManager to receive MIDI data. 25 // A MidiManagerClient registers with the MidiManager to receive MIDI data.
27 // See MidiManager::RequestAccess() and MidiManager::ReleaseAccess() 26 // See MidiManager::RequestAccess() and MidiManager::ReleaseAccess()
28 // for details. 27 // for details.
29 class MIDI_EXPORT MidiManagerClient { 28 class MIDI_EXPORT MidiManagerClient {
30 public: 29 public:
31 virtual ~MidiManagerClient() {} 30 virtual ~MidiManagerClient() {}
32 31
33 // AddInputPort() and AddOutputPort() are called before CompleteStartSession() 32 // AddInputPort() and AddOutputPort() are called before CompleteStartSession()
34 // is called to notify existing MIDI ports, and also called after that to 33 // is called to notify existing MIDI ports, and also called after that to
35 // notify new MIDI ports are added. 34 // notify new MIDI ports are added.
36 virtual void AddInputPort(const MidiPortInfo& info) = 0; 35 virtual void AddInputPort(const MidiPortInfo& info) = 0;
37 virtual void AddOutputPort(const MidiPortInfo& info) = 0; 36 virtual void AddOutputPort(const MidiPortInfo& info) = 0;
38 37
39 // SetInputPortState() and SetOutputPortState() are called to notify a known 38 // SetInputPortState() and SetOutputPortState() are called to notify a known
40 // device gets disconnected, or connected again. 39 // device gets disconnected, or connected again.
41 virtual void SetInputPortState(uint32 port_index, MidiPortState state) = 0; 40 virtual void SetInputPortState(uint32_t port_index, MidiPortState state) = 0;
42 virtual void SetOutputPortState(uint32 port_index, MidiPortState state) = 0; 41 virtual void SetOutputPortState(uint32_t port_index, MidiPortState state) = 0;
43 42
44 // CompleteStartSession() is called when platform dependent preparation is 43 // CompleteStartSession() is called when platform dependent preparation is
45 // finished. 44 // finished.
46 virtual void CompleteStartSession(Result result) = 0; 45 virtual void CompleteStartSession(Result result) = 0;
47 46
48 // ReceiveMidiData() is called when MIDI data has been received from the 47 // ReceiveMidiData() is called when MIDI data has been received from the
49 // MIDI system. 48 // MIDI system.
50 // |port_index| represents the specific input port from input_ports(). 49 // |port_index| represents the specific input port from input_ports().
51 // |data| represents a series of bytes encoding one or more MIDI messages. 50 // |data| represents a series of bytes encoding one or more MIDI messages.
52 // |length| is the number of bytes in |data|. 51 // |length| is the number of bytes in |data|.
53 // |timestamp| is the time the data was received, in seconds. 52 // |timestamp| is the time the data was received, in seconds.
54 virtual void ReceiveMidiData(uint32 port_index, 53 virtual void ReceiveMidiData(uint32_t port_index,
55 const uint8* data, 54 const uint8_t* data,
56 size_t length, 55 size_t length,
57 double timestamp) = 0; 56 double timestamp) = 0;
58 57
59 // AccumulateMidiBytesSent() is called to acknowledge when bytes have 58 // AccumulateMidiBytesSent() is called to acknowledge when bytes have
60 // successfully been sent to the hardware. 59 // successfully been sent to the hardware.
61 // This happens as a result of the client having previously called 60 // This happens as a result of the client having previously called
62 // MidiManager::DispatchSendMidiData(). 61 // MidiManager::DispatchSendMidiData().
63 virtual void AccumulateMidiBytesSent(size_t n) = 0; 62 virtual void AccumulateMidiBytesSent(size_t n) = 0;
64 63
65 // Detach() is called when MidiManager is going to shutdown immediately. 64 // Detach() is called when MidiManager is going to shutdown immediately.
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
102 // DispatchSendMidiData() is called when MIDI data should be sent to the MIDI 101 // DispatchSendMidiData() is called when MIDI data should be sent to the MIDI
103 // system. 102 // system.
104 // This method is supposed to return immediately and should not block. 103 // This method is supposed to return immediately and should not block.
105 // |port_index| represents the specific output port from output_ports(). 104 // |port_index| represents the specific output port from output_ports().
106 // |data| represents a series of bytes encoding one or more MIDI messages. 105 // |data| represents a series of bytes encoding one or more MIDI messages.
107 // |length| is the number of bytes in |data|. 106 // |length| is the number of bytes in |data|.
108 // |timestamp| is the time to send the data, in seconds. A value of 0 107 // |timestamp| is the time to send the data, in seconds. A value of 0
109 // means send "now" or as soon as possible. 108 // means send "now" or as soon as possible.
110 // The default implementation is for unsupported platforms. 109 // The default implementation is for unsupported platforms.
111 virtual void DispatchSendMidiData(MidiManagerClient* client, 110 virtual void DispatchSendMidiData(MidiManagerClient* client,
112 uint32 port_index, 111 uint32_t port_index,
113 const std::vector<uint8>& data, 112 const std::vector<uint8_t>& data,
114 double timestamp); 113 double timestamp);
115 114
116 protected: 115 protected:
117 friend class MidiManagerUsb; 116 friend class MidiManagerUsb;
118 117
119 // Initializes the platform dependent MIDI system. MidiManager class has a 118 // Initializes the platform dependent MIDI system. MidiManager class has a
120 // default implementation that synchronously calls CompleteInitialization() 119 // default implementation that synchronously calls CompleteInitialization()
121 // with Result::NOT_SUPPORTED on the caller thread. A derived class for a 120 // with Result::NOT_SUPPORTED on the caller thread. A derived class for a
122 // specific platform should override this method correctly. 121 // specific platform should override this method correctly.
123 // This method is called on Chrome_IOThread thread inside StartSession(). 122 // This method is called on Chrome_IOThread thread inside StartSession().
(...skipping 10 matching lines...) Expand all
134 virtual void Finalize() {} 133 virtual void Finalize() {}
135 134
136 // Called from a platform dependent implementation of StartInitialization(). 135 // Called from a platform dependent implementation of StartInitialization().
137 // It invokes CompleteInitializationInternal() on the thread that calls 136 // It invokes CompleteInitializationInternal() on the thread that calls
138 // StartSession() and distributes |result| to MIDIManagerClient objects in 137 // StartSession() and distributes |result| to MIDIManagerClient objects in
139 // |pending_clients_|. 138 // |pending_clients_|.
140 void CompleteInitialization(Result result); 139 void CompleteInitialization(Result result);
141 140
142 void AddInputPort(const MidiPortInfo& info); 141 void AddInputPort(const MidiPortInfo& info);
143 void AddOutputPort(const MidiPortInfo& info); 142 void AddOutputPort(const MidiPortInfo& info);
144 void SetInputPortState(uint32 port_index, MidiPortState state); 143 void SetInputPortState(uint32_t port_index, MidiPortState state);
145 void SetOutputPortState(uint32 port_index, MidiPortState state); 144 void SetOutputPortState(uint32_t port_index, MidiPortState state);
146 145
147 // Dispatches to all clients. 146 // Dispatches to all clients.
148 // TODO(toyoshim): Fix the mac implementation to use 147 // TODO(toyoshim): Fix the mac implementation to use
149 // |ReceiveMidiData(..., base::TimeTicks)|. 148 // |ReceiveMidiData(..., base::TimeTicks)|.
150 void ReceiveMidiData(uint32 port_index, 149 void ReceiveMidiData(uint32_t port_index,
151 const uint8* data, 150 const uint8_t* data,
152 size_t length, 151 size_t length,
153 double timestamp); 152 double timestamp);
154 153
155 void ReceiveMidiData(uint32 port_index, 154 void ReceiveMidiData(uint32_t port_index,
156 const uint8* data, 155 const uint8_t* data,
157 size_t length, 156 size_t length,
158 base::TimeTicks time) { 157 base::TimeTicks time) {
159 ReceiveMidiData(port_index, data, length, 158 ReceiveMidiData(port_index, data, length,
160 (time - base::TimeTicks()).InSecondsF()); 159 (time - base::TimeTicks()).InSecondsF());
161 } 160 }
162 161
163 size_t clients_size_for_testing() const { return clients_.size(); } 162 size_t clients_size_for_testing() const { return clients_.size(); }
164 size_t pending_clients_size_for_testing() const { 163 size_t pending_clients_size_for_testing() const {
165 return pending_clients_.size(); 164 return pending_clients_.size();
166 } 165 }
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
203 // |input_ports_| and |output_ports_|. 202 // |input_ports_| and |output_ports_|.
204 base::Lock lock_; 203 base::Lock lock_;
205 204
206 DISALLOW_COPY_AND_ASSIGN(MidiManager); 205 DISALLOW_COPY_AND_ASSIGN(MidiManager);
207 }; 206 };
208 207
209 } // namespace midi 208 } // namespace midi
210 } // namespace media 209 } // namespace media
211 210
212 #endif // MEDIA_MIDI_MIDI_MANAGER_H_ 211 #endif // MEDIA_MIDI_MIDI_MANAGER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698