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

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

Issue 2299543009: Add "use-winrt-midi-api" flag to enable WinRT WebMIDI backend (Closed)
Patch Set: workaround for x86 MSVC and clang Created 4 years, 3 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
OLDNEW
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698