OLD | NEW |
---|---|
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 #include "media/midi/midi_manager_mac.h" | 5 #include "media/midi/midi_manager_mac.h" |
6 | 6 |
7 #include <iostream> | 7 #include <iostream> |
8 #include <string> | 8 #include <string> |
9 | 9 |
10 #include "base/debug/trace_event.h" | 10 #include "base/debug/trace_event.h" |
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
140 | 140 |
141 ReceiveMIDIData( | 141 ReceiveMIDIData( |
142 port_index, | 142 port_index, |
143 packet.data, | 143 packet.data, |
144 packet.length, | 144 packet.length, |
145 timestamp_seconds); | 145 timestamp_seconds); |
146 } | 146 } |
147 } | 147 } |
148 | 148 |
149 void MIDIManagerMac::SendMIDIData(MIDIManagerClient* client, | 149 void MIDIManagerMac::SendMIDIData(MIDIManagerClient* client, |
150 int port_index, | 150 size_t port_index, |
palmer
2013/08/26 17:43:25
uint32_t
Takashi Toyoshima
2013/08/27 07:14:33
Done.
| |
151 const uint8* data, | 151 const std::vector<uint8>& data, |
152 size_t length, | |
153 double timestamp) { | 152 double timestamp) { |
153 DCHECK(CurrentlyOnMIDISendThread()); | |
154 | |
154 // System Exclusive has already been filtered. | 155 // System Exclusive has already been filtered. |
155 MIDITimeStamp coremidi_timestamp = SecondsToMIDITimeStamp(timestamp); | 156 MIDITimeStamp coremidi_timestamp = SecondsToMIDITimeStamp(timestamp); |
156 | 157 |
157 midi_packet_ = MIDIPacketListAdd( | 158 midi_packet_ = MIDIPacketListAdd( |
158 packet_list_, | 159 packet_list_, |
159 kMaxPacketListSize, | 160 kMaxPacketListSize, |
160 midi_packet_, | 161 midi_packet_, |
161 coremidi_timestamp, | 162 coremidi_timestamp, |
162 length, | 163 data.size(), |
163 data); | 164 &data[0]); |
164 | 165 |
165 // Lookup the destination based on the port index. | 166 // Lookup the destination based on the port index. |
166 // TODO(crogers): re-factor |port_index| to use unsigned | 167 if (port_index >= destinations_.size()) |
167 // to avoid the need for this check. | |
168 if (port_index < 0 || | |
169 static_cast<size_t>(port_index) >= destinations_.size()) | |
170 return; | 168 return; |
171 | 169 |
172 MIDIEndpointRef destination = destinations_[port_index]; | 170 MIDIEndpointRef destination = destinations_[port_index]; |
173 | 171 |
174 MIDISend(coremidi_output_, destination, packet_list_); | 172 MIDISend(coremidi_output_, destination, packet_list_); |
175 | 173 |
176 // Re-initialize for next time. | 174 // Re-initialize for next time. |
177 midi_packet_ = MIDIPacketListInit(packet_list_); | 175 midi_packet_ = MIDIPacketListInit(packet_list_); |
178 | 176 |
179 client->AccumulateMIDIBytesSent(length); | 177 client->AccumulateMIDIBytesSent(data.size()); |
180 } | 178 } |
181 | 179 |
182 MIDIPortInfo MIDIManagerMac::GetPortInfoFromEndpoint( | 180 MIDIPortInfo MIDIManagerMac::GetPortInfoFromEndpoint( |
183 MIDIEndpointRef endpoint) { | 181 MIDIEndpointRef endpoint) { |
184 SInt32 id_number = 0; | 182 SInt32 id_number = 0; |
185 MIDIObjectGetIntegerProperty(endpoint, kMIDIPropertyUniqueID, &id_number); | 183 MIDIObjectGetIntegerProperty(endpoint, kMIDIPropertyUniqueID, &id_number); |
186 string id = IntToString(id_number); | 184 string id = IntToString(id_number); |
187 | 185 |
188 CFStringRef manufacturer_ref = NULL; | 186 CFStringRef manufacturer_ref = NULL; |
189 MIDIObjectGetStringProperty( | 187 MIDIObjectGetStringProperty( |
(...skipping 16 matching lines...) Expand all Loading... | |
206 UInt64 nanoseconds = AudioConvertHostTimeToNanos(timestamp); | 204 UInt64 nanoseconds = AudioConvertHostTimeToNanos(timestamp); |
207 return static_cast<double>(nanoseconds) / 1.0e9; | 205 return static_cast<double>(nanoseconds) / 1.0e9; |
208 } | 206 } |
209 | 207 |
210 MIDITimeStamp MIDIManagerMac::SecondsToMIDITimeStamp(double seconds) { | 208 MIDITimeStamp MIDIManagerMac::SecondsToMIDITimeStamp(double seconds) { |
211 UInt64 nanos = UInt64(seconds * 1.0e9); | 209 UInt64 nanos = UInt64(seconds * 1.0e9); |
212 return AudioConvertNanosToHostTime(nanos); | 210 return AudioConvertNanosToHostTime(nanos); |
213 } | 211 } |
214 | 212 |
215 } // namespace media | 213 } // namespace media |
OLD | NEW |