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

Side by Side Diff: media/midi/midi_manager_mac.cc

Issue 646803005: Web MIDI: move static helper methods to functions in anonymous namespace (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 2 months 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
« no previous file with comments | « media/midi/midi_manager_mac.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 #include "media/midi/midi_manager_mac.h" 5 #include "media/midi/midi_manager_mac.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/message_loop/message_loop.h" 10 #include "base/message_loop/message_loop.h"
11 #include "base/strings/string_number_conversions.h" 11 #include "base/strings/string_number_conversions.h"
12 #include "base/strings/sys_string_conversions.h" 12 #include "base/strings/sys_string_conversions.h"
13 13
14 #include <CoreAudio/HostTime.h> 14 #include <CoreAudio/HostTime.h>
15 15
16 using base::IntToString; 16 using base::IntToString;
17 using base::SysCFStringRefToUTF8; 17 using base::SysCFStringRefToUTF8;
18 using std::string; 18 using std::string;
19 19
20 // NB: System MIDI types are pointer types in 32-bit and integer types in 20 // NB: System MIDI types are pointer types in 32-bit and integer types in
21 // 64-bit. Therefore, the initialization is the simplest one that satisfies both 21 // 64-bit. Therefore, the initialization is the simplest one that satisfies both
22 // (if possible). 22 // (if possible).
23 23
24 namespace media { 24 namespace media {
25 25
26 namespace {
27
28 MidiPortInfo GetPortInfoFromEndpoint(
29 MIDIEndpointRef endpoint) {
30 SInt32 id_number = 0;
31 MIDIObjectGetIntegerProperty(endpoint, kMIDIPropertyUniqueID, &id_number);
32 string id = IntToString(id_number);
33
34 string manufacturer;
35 CFStringRef manufacturer_ref = NULL;
36 OSStatus result = MIDIObjectGetStringProperty(
37 endpoint, kMIDIPropertyManufacturer, &manufacturer_ref);
38 if (result == noErr) {
39 manufacturer = SysCFStringRefToUTF8(manufacturer_ref);
40 } else {
41 // kMIDIPropertyManufacturer is not supported in IAC driver providing
42 // endpoints, and the result will be kMIDIUnknownProperty (-10835).
43 DLOG(WARNING) << "Failed to get kMIDIPropertyManufacturer with status "
44 << result;
45 }
46
47 string name;
48 CFStringRef name_ref = NULL;
49 result = MIDIObjectGetStringProperty(endpoint, kMIDIPropertyName, &name_ref);
50 if (result == noErr)
51 name = SysCFStringRefToUTF8(name_ref);
52 else
53 DLOG(WARNING) << "Failed to get kMIDIPropertyName with status " << result;
54
55 string version;
56 SInt32 version_number = 0;
57 result = MIDIObjectGetIntegerProperty(
58 endpoint, kMIDIPropertyDriverVersion, &version_number);
59 if (result == noErr) {
60 version = IntToString(version_number);
61 } else {
62 // kMIDIPropertyDriverVersion is not supported in IAC driver providing
63 // endpoints, and the result will be kMIDIUnknownProperty (-10835).
64 DLOG(WARNING) << "Failed to get kMIDIPropertyDriverVersion with status "
65 << result;
66 }
67
68 return MidiPortInfo(id, manufacturer, name, version);
69 }
70
71 double MIDITimeStampToSeconds(MIDITimeStamp timestamp) {
72 UInt64 nanoseconds = AudioConvertHostTimeToNanos(timestamp);
73 return static_cast<double>(nanoseconds) / 1.0e9;
74 }
75
76 MIDITimeStamp SecondsToMIDITimeStamp(double seconds) {
77 UInt64 nanos = UInt64(seconds * 1.0e9);
78 return AudioConvertNanosToHostTime(nanos);
79 }
80
81 } // namespace
82
26 MidiManager* MidiManager::Create() { 83 MidiManager* MidiManager::Create() {
27 return new MidiManagerMac(); 84 return new MidiManagerMac();
28 } 85 }
29 86
30 MidiManagerMac::MidiManagerMac() 87 MidiManagerMac::MidiManagerMac()
31 : midi_client_(0), 88 : midi_client_(0),
32 coremidi_input_(0), 89 coremidi_input_(0),
33 coremidi_output_(0), 90 coremidi_output_(0),
34 packet_list_(NULL), 91 packet_list_(NULL),
35 midi_packet_(NULL), 92 midi_packet_(NULL),
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after
184 MIDIEndpointRef destination = destinations_[port_index]; 241 MIDIEndpointRef destination = destinations_[port_index];
185 242
186 MIDISend(coremidi_output_, destination, packet_list_); 243 MIDISend(coremidi_output_, destination, packet_list_);
187 244
188 // Re-initialize for next time. 245 // Re-initialize for next time.
189 midi_packet_ = MIDIPacketListInit(packet_list_); 246 midi_packet_ = MIDIPacketListInit(packet_list_);
190 247
191 client->AccumulateMidiBytesSent(data.size()); 248 client->AccumulateMidiBytesSent(data.size());
192 } 249 }
193 250
194 // static
195 MidiPortInfo MidiManagerMac::GetPortInfoFromEndpoint(
196 MIDIEndpointRef endpoint) {
197 SInt32 id_number = 0;
198 MIDIObjectGetIntegerProperty(endpoint, kMIDIPropertyUniqueID, &id_number);
199 string id = IntToString(id_number);
200
201 string manufacturer;
202 CFStringRef manufacturer_ref = NULL;
203 OSStatus result = MIDIObjectGetStringProperty(
204 endpoint, kMIDIPropertyManufacturer, &manufacturer_ref);
205 if (result == noErr) {
206 manufacturer = SysCFStringRefToUTF8(manufacturer_ref);
207 } else {
208 // kMIDIPropertyManufacturer is not supported in IAC driver providing
209 // endpoints, and the result will be kMIDIUnknownProperty (-10835).
210 DLOG(WARNING) << "Failed to get kMIDIPropertyManufacturer with status "
211 << result;
212 }
213
214 string name;
215 CFStringRef name_ref = NULL;
216 result = MIDIObjectGetStringProperty(endpoint, kMIDIPropertyName, &name_ref);
217 if (result == noErr)
218 name = SysCFStringRefToUTF8(name_ref);
219 else
220 DLOG(WARNING) << "Failed to get kMIDIPropertyName with status " << result;
221
222 string version;
223 SInt32 version_number = 0;
224 result = MIDIObjectGetIntegerProperty(
225 endpoint, kMIDIPropertyDriverVersion, &version_number);
226 if (result == noErr) {
227 version = IntToString(version_number);
228 } else {
229 // kMIDIPropertyDriverVersion is not supported in IAC driver providing
230 // endpoints, and the result will be kMIDIUnknownProperty (-10835).
231 DLOG(WARNING) << "Failed to get kMIDIPropertyDriverVersion with status "
232 << result;
233 }
234
235 return MidiPortInfo(id, manufacturer, name, version);
236 }
237
238 // static
239 double MidiManagerMac::MIDITimeStampToSeconds(MIDITimeStamp timestamp) {
240 UInt64 nanoseconds = AudioConvertHostTimeToNanos(timestamp);
241 return static_cast<double>(nanoseconds) / 1.0e9;
242 }
243
244 // static
245 MIDITimeStamp MidiManagerMac::SecondsToMIDITimeStamp(double seconds) {
246 UInt64 nanos = UInt64(seconds * 1.0e9);
247 return AudioConvertNanosToHostTime(nanos);
248 }
249
250 } // namespace media 251 } // namespace media
OLDNEW
« no previous file with comments | « media/midi/midi_manager_mac.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698