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

Unified Diff: media/midi/message_util.h

Issue 2431393002: Web MIDI: move MIDI message validating logic into message_util.{cc|h} (Closed)
Patch Set: build fix Created 4 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « media/midi/BUILD.gn ('k') | media/midi/message_util.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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_
« no previous file with comments | « media/midi/BUILD.gn ('k') | media/midi/message_util.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698