Index: media/midi/message_util.h |
diff --git a/media/midi/message_util.h b/media/midi/message_util.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..888e972d94ccd2d9ab4a5863faac722feac912cd |
--- /dev/null |
+++ b/media/midi/message_util.h |
@@ -0,0 +1,52 @@ |
+// Copyright 2013 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#ifndef MEDIA_MIDI_MESSAGE_UTIL_H_ |
+#define MEDIA_MIDI_MESSAGE_UTIL_H_ |
+ |
+#include <stddef.h> |
+#include <stdint.h> |
+ |
+#include <deque> |
+#include <vector> |
+ |
+#include "media/midi/midi_export.h" |
+ |
+namespace midi { |
+ |
+// Returns the length of a MIDI message in bytes. Never returns 4 or greater. |
+// Returns 0 if |status_byte| is: |
+// - not a valid status byte, namely data byte. |
+// - MIDI System Exclusive message. |
+// - End of System Exclusive message. |
+// - Reserved System Common Message (0xf4, 0xf5) |
+MIDI_EXPORT size_t GetMessageLength(uint8_t status_byte); |
+ |
+// Checks if the specified byte is a valid data byte. |
+MIDI_EXPORT bool IsDataByte(uint8_t data); |
+ |
+// Checks if the specified byte is a valid system real time message. |
+MIDI_EXPORT bool IsSystemRealTimeMessage(uint8_t data); |
+ |
+// Checks if the specified byte is a valid system message. |
+MIDI_EXPORT bool IsSystemMessage(uint8_t data); |
+ |
+// Checks if |data| fulfills the requirements of MidiOutput.send API that is |
+// defined in the Web MIDI spec. |
+// - |data| must be any number of complete MIDI messages (data abbreviation |
+// called "running status" is disallowed). |
+// - 1-byte MIDI realtime messages can be placed at any position of |data|. |
+MIDI_EXPORT bool IsValidWebMIDIData(const std::vector<uint8_t>& data); |
+ |
+const uint8_t kSysExByte = 0xf0; |
+const uint8_t kEndOfSysExByte = 0xf7; |
+ |
+const uint8_t kSysMessageBitMask = 0xf0; |
+const uint8_t kSysMessageBitPattern = 0xf0; |
+const uint8_t kSysRTMessageBitMask = 0xf8; |
+const uint8_t kSysRTMessageBitPattern = 0xf8; |
+ |
+} // namespace midi |
+ |
+#endif // MEDIA_MIDI_MESSAGE_UTIL_H_ |