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 "content/browser/renderer_host/media/midi_host.h" | 5 #include "content/browser/renderer_host/media/midi_host.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/bind_helpers.h" | 8 #include "base/bind_helpers.h" |
9 #include "base/debug/trace_event.h" | 9 #include "base/debug/trace_event.h" |
10 #include "base/process/process.h" | 10 #include "base/process/process.h" |
(...skipping 17 matching lines...) Expand all Loading... |
28 // The total number of bytes which we're allowed to send to the OS | 28 // The total number of bytes which we're allowed to send to the OS |
29 // before knowing that they have been successfully sent. | 29 // before knowing that they have been successfully sent. |
30 const size_t kMaxInFlightBytes = 10 * 1024 * 1024; // 10 MB. | 30 const size_t kMaxInFlightBytes = 10 * 1024 * 1024; // 10 MB. |
31 | 31 |
32 // We keep track of the number of bytes successfully sent to | 32 // We keep track of the number of bytes successfully sent to |
33 // the hardware. Every once in a while we report back to the renderer | 33 // the hardware. Every once in a while we report back to the renderer |
34 // the number of bytes sent since the last report. This threshold determines | 34 // the number of bytes sent since the last report. This threshold determines |
35 // how many bytes will be sent before reporting back to the renderer. | 35 // how many bytes will be sent before reporting back to the renderer. |
36 const size_t kAcknowledgementThresholdBytes = 1024 * 1024; // 1 MB. | 36 const size_t kAcknowledgementThresholdBytes = 1024 * 1024; // 1 MB. |
37 | 37 |
| 38 const uint32 kFilteredMessageClasses[] = { |
| 39 MidiMsgStart, |
| 40 }; |
| 41 |
38 bool IsDataByte(uint8 data) { | 42 bool IsDataByte(uint8 data) { |
39 return (data & 0x80) == 0; | 43 return (data & 0x80) == 0; |
40 } | 44 } |
41 | 45 |
42 bool IsSystemRealTimeMessage(uint8 data) { | 46 bool IsSystemRealTimeMessage(uint8 data) { |
43 return 0xf8 <= data && data <= 0xff; | 47 return 0xf8 <= data && data <= 0xff; |
44 } | 48 } |
45 | 49 |
46 } // namespace | 50 } // namespace |
47 | 51 |
48 using media::kSysExByte; | 52 using media::kSysExByte; |
49 using media::kEndOfSysExByte; | 53 using media::kEndOfSysExByte; |
50 | 54 |
51 MidiHost::MidiHost(int renderer_process_id, media::MidiManager* midi_manager) | 55 MidiHost::MidiHost(int renderer_process_id, media::MidiManager* midi_manager) |
52 : renderer_process_id_(renderer_process_id), | 56 : BrowserMessageFilter( |
| 57 kFilteredMessageClasses, arraysize(kFilteredMessageClasses)), |
| 58 renderer_process_id_(renderer_process_id), |
53 has_sys_ex_permission_(false), | 59 has_sys_ex_permission_(false), |
54 midi_manager_(midi_manager), | 60 midi_manager_(midi_manager), |
55 sent_bytes_in_flight_(0), | 61 sent_bytes_in_flight_(0), |
56 bytes_sent_since_last_acknowledgement_(0) { | 62 bytes_sent_since_last_acknowledgement_(0) { |
57 } | 63 } |
58 | 64 |
59 MidiHost::~MidiHost() { | 65 MidiHost::~MidiHost() { |
60 if (midi_manager_) | 66 if (midi_manager_) |
61 midi_manager_->EndSession(this); | 67 midi_manager_->EndSession(this); |
62 } | 68 } |
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
217 } | 223 } |
218 waiting_data_length = media::GetMidiMessageLength(current); | 224 waiting_data_length = media::GetMidiMessageLength(current); |
219 if (waiting_data_length == 0) | 225 if (waiting_data_length == 0) |
220 return false; // Error: |current| should have been a valid status byte. | 226 return false; // Error: |current| should have been a valid status byte. |
221 --waiting_data_length; // Found status byte | 227 --waiting_data_length; // Found status byte |
222 } | 228 } |
223 return waiting_data_length == 0 && !in_sysex; | 229 return waiting_data_length == 0 && !in_sysex; |
224 } | 230 } |
225 | 231 |
226 } // namespace content | 232 } // namespace content |
OLD | NEW |