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 <algorithm> | 7 #include <algorithm> |
8 #include <string> | 8 #include <string> |
9 | 9 |
10 #include "base/bind.h" | 10 #include "base/bind.h" |
(...skipping 269 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
280 | 280 |
281 // Lookup the port index based on the source. | 281 // Lookup the port index based on the source. |
282 SourceMap::iterator j = source_map_.find(source); | 282 SourceMap::iterator j = source_map_.find(source); |
283 if (j == source_map_.end()) | 283 if (j == source_map_.end()) |
284 return; | 284 return; |
285 // This is safe since MidiManagerMac does not remove any existing | 285 // This is safe since MidiManagerMac does not remove any existing |
286 // MIDIEndpointRef, and the order is saved. | 286 // MIDIEndpointRef, and the order is saved. |
287 uint32 port_index = source_map_[source]; | 287 uint32 port_index = source_map_[source]; |
288 | 288 |
289 // Go through each packet and process separately. | 289 // Go through each packet and process separately. |
| 290 const MIDIPacket* packet = &packet_list->packet[0]; |
290 for (size_t i = 0; i < packet_list->numPackets; i++) { | 291 for (size_t i = 0; i < packet_list->numPackets; i++) { |
291 // Each packet contains MIDI data for one or more messages (like note-on). | 292 // Each packet contains MIDI data for one or more messages (like note-on). |
292 const MIDIPacket &packet = packet_list->packet[i]; | 293 double timestamp_seconds = MIDITimeStampToSeconds(packet->timeStamp); |
293 double timestamp_seconds = MIDITimeStampToSeconds(packet.timeStamp); | |
294 | 294 |
295 ReceiveMidiData( | 295 ReceiveMidiData( |
296 port_index, | 296 port_index, |
297 packet.data, | 297 packet->data, |
298 packet.length, | 298 packet->length, |
299 timestamp_seconds); | 299 timestamp_seconds); |
| 300 |
| 301 packet = MIDIPacketNext(packet); |
300 } | 302 } |
301 } | 303 } |
302 | 304 |
303 void MidiManagerMac::SendMidiData(MidiManagerClient* client, | 305 void MidiManagerMac::SendMidiData(MidiManagerClient* client, |
304 uint32 port_index, | 306 uint32 port_index, |
305 const std::vector<uint8>& data, | 307 const std::vector<uint8>& data, |
306 double timestamp) { | 308 double timestamp) { |
307 DCHECK(client_thread_.message_loop_proxy()->BelongsToCurrentThread()); | 309 DCHECK(client_thread_.message_loop_proxy()->BelongsToCurrentThread()); |
308 | 310 |
309 // System Exclusive has already been filtered. | 311 // System Exclusive has already been filtered. |
(...skipping 15 matching lines...) Expand all Loading... |
325 | 327 |
326 MIDISend(coremidi_output_, destination, packet_list_); | 328 MIDISend(coremidi_output_, destination, packet_list_); |
327 | 329 |
328 // Re-initialize for next time. | 330 // Re-initialize for next time. |
329 midi_packet_ = MIDIPacketListInit(packet_list_); | 331 midi_packet_ = MIDIPacketListInit(packet_list_); |
330 | 332 |
331 client->AccumulateMidiBytesSent(data.size()); | 333 client->AccumulateMidiBytesSent(data.size()); |
332 } | 334 } |
333 | 335 |
334 } // namespace media | 336 } // namespace media |
OLD | NEW |