OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 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_win.h" | 5 #include "media/midi/midi_manager_win.h" |
6 | 6 |
7 #include <windows.h> | 7 #include <windows.h> |
8 #include <ks.h> | 8 #include <ks.h> |
9 #include <ksmedia.h> | 9 #include <ksmedia.h> |
10 #include <mmreg.h> | 10 #include <mmreg.h> |
11 // Prevent unnecessary functions from being included from <mmsystem.h> | 11 // Prevent unnecessary functions from being included from <mmsystem.h> |
12 #define MMNODRV | 12 #define MMNODRV |
13 #define MMNOSOUND | 13 #define MMNOSOUND |
14 #define MMNOWAVE | 14 #define MMNOWAVE |
15 #define MMNOAUX | 15 #define MMNOAUX |
16 #define MMNOMIXER | 16 #define MMNOMIXER |
17 #define MMNOTIMER | 17 #define MMNOTIMER |
18 #define MMNOJOY | 18 #define MMNOJOY |
19 #define MMNOMCI | 19 #define MMNOMCI |
20 #define MMNOMMIO | 20 #define MMNOMMIO |
21 #include <mmsystem.h> | 21 #include <mmsystem.h> |
22 #include <stddef.h> | 22 #include <stddef.h> |
23 | 23 |
24 #include <algorithm> | 24 #include <algorithm> |
25 #include <functional> | 25 #include <functional> |
26 #include <queue> | 26 #include <queue> |
27 #include <string> | 27 #include <string> |
28 | 28 |
29 #include "base/bind.h" | 29 #include "base/bind.h" |
| 30 #include "base/command_line.h" |
30 #include "base/containers/hash_tables.h" | 31 #include "base/containers/hash_tables.h" |
31 #include "base/macros.h" | 32 #include "base/macros.h" |
32 #include "base/message_loop/message_loop.h" | 33 #include "base/message_loop/message_loop.h" |
33 #include "base/single_thread_task_runner.h" | 34 #include "base/single_thread_task_runner.h" |
34 #include "base/strings/string16.h" | 35 #include "base/strings/string16.h" |
35 #include "base/strings/string_number_conversions.h" | 36 #include "base/strings/string_number_conversions.h" |
36 #include "base/strings/string_piece.h" | 37 #include "base/strings/string_piece.h" |
37 #include "base/strings/stringprintf.h" | 38 #include "base/strings/stringprintf.h" |
38 #include "base/strings/utf_string_conversions.h" | 39 #include "base/strings/utf_string_conversions.h" |
39 #include "base/system_monitor/system_monitor.h" | 40 #include "base/system_monitor/system_monitor.h" |
40 #include "base/threading/thread_checker.h" | 41 #include "base/threading/thread_checker.h" |
41 #include "base/timer/timer.h" | 42 #include "base/timer/timer.h" |
42 #include "base/win/message_window.h" | 43 #include "base/win/message_window.h" |
| 44 #include "base/win/windows_version.h" |
43 #include "device/usb/usb_ids.h" | 45 #include "device/usb/usb_ids.h" |
| 46 #include "media/midi/midi_manager_winrt.h" |
44 #include "media/midi/midi_message_queue.h" | 47 #include "media/midi/midi_message_queue.h" |
45 #include "media/midi/midi_message_util.h" | 48 #include "media/midi/midi_message_util.h" |
46 #include "media/midi/midi_port_info.h" | 49 #include "media/midi/midi_port_info.h" |
| 50 #include "media/midi/midi_switches.h" |
47 | 51 |
48 namespace media { | 52 namespace media { |
49 namespace midi { | 53 namespace midi { |
50 namespace { | 54 namespace { |
51 | 55 |
52 static const size_t kBufferLength = 32 * 1024; | 56 static const size_t kBufferLength = 32 * 1024; |
53 | 57 |
54 // We assume that nullpter represents an invalid MIDI handle. | 58 // We assume that nullpter represents an invalid MIDI handle. |
55 const HMIDIIN kInvalidMidiInHandle = nullptr; | 59 const HMIDIIN kInvalidMidiInHandle = nullptr; |
56 const HMIDIOUT kInvalidMidiOutHandle = nullptr; | 60 const HMIDIOUT kInvalidMidiOutHandle = nullptr; |
(...skipping 1125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1182 SetOutputPortState(port_index, state); | 1186 SetOutputPortState(port_index, state); |
1183 } | 1187 } |
1184 | 1188 |
1185 void MidiManagerWin::OnReceiveMidiData(uint32_t port_index, | 1189 void MidiManagerWin::OnReceiveMidiData(uint32_t port_index, |
1186 const std::vector<uint8_t>& data, | 1190 const std::vector<uint8_t>& data, |
1187 base::TimeTicks time) { | 1191 base::TimeTicks time) { |
1188 ReceiveMidiData(port_index, &data[0], data.size(), time); | 1192 ReceiveMidiData(port_index, &data[0], data.size(), time); |
1189 } | 1193 } |
1190 | 1194 |
1191 MidiManager* MidiManager::Create() { | 1195 MidiManager* MidiManager::Create() { |
| 1196 if (base::CommandLine::ForCurrentProcess()->HasSwitch( |
| 1197 switches::kUseWinrtMidiApi) && |
| 1198 base::win::GetVersion() >= base::win::VERSION_WIN10) |
| 1199 return new MidiManagerWinrt(); |
1192 return new MidiManagerWin(); | 1200 return new MidiManagerWin(); |
1193 } | 1201 } |
1194 | 1202 |
1195 } // namespace midi | 1203 } // namespace midi |
1196 } // namespace media | 1204 } // namespace media |
OLD | NEW |