Chromium Code Reviews| 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 unsigned int port_index, |
| 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 (static_cast<size_t>(port_index) >= destinations_.size()) |
|
scherkus (not reviewing)
2013/08/21 17:46:29
if you make port_index size_t, you can remove the
Takashi Toyoshima
2013/08/22 05:47:45
Done.
| |
| 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 |