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

Unified Diff: extensions/renderer/api/display_source/wifi_display/wifi_display_elementary_stream_packetizer.h

Issue 1796123002: Implement WiFi Display elementary stream packetizer. (Closed) Base URL: https://chromium.googlesource.com/chromium/src@master
Patch Set: Comments Created 4 years, 9 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
Index: extensions/renderer/api/display_source/wifi_display/wifi_display_elementary_stream_packetizer.h
diff --git a/extensions/renderer/api/display_source/wifi_display/wifi_display_elementary_stream_packetizer.h b/extensions/renderer/api/display_source/wifi_display/wifi_display_elementary_stream_packetizer.h
new file mode 100644
index 0000000000000000000000000000000000000000..4201a58287daf9657a594cfcb6815f2e1c659e69
--- /dev/null
+++ b/extensions/renderer/api/display_source/wifi_display/wifi_display_elementary_stream_packetizer.h
@@ -0,0 +1,72 @@
+// Copyright 2016 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 EXTENSIONS_RENDERER_API_DISPLAY_SOURCE_WIFI_DISPLAY_WIFI_DISPLAY_ELEMENTARY_STREAM_PACKETIZER_H_
+#define EXTENSIONS_RENDERER_API_DISPLAY_SOURCE_WIFI_DISPLAY_WIFI_DISPLAY_ELEMENTARY_STREAM_PACKETIZER_H_
+
+#include "base/time/time.h"
+#include "extensions/renderer/api/display_source/wifi_display/wifi_display_stream_packet_part.h"
+
+namespace extensions {
+
+// WiFi Display elementary stream packet represents a Packetized Elementary
+// Stream (PES) packet containing WiFi Display elementary stream unit data.
+class WiFiDisplayElementaryStreamPacket {
+ public:
+ using HeaderBuffer = uint8_t[19];
+
+ WiFiDisplayElementaryStreamPacket(const HeaderBuffer& header_data,
+ size_t header_size,
+ const uint8_t* unit_header_data,
+ size_t unit_header_size,
+ const uint8_t* unit_data,
+ size_t unit_size);
+ // WiFiDisplayElementaryStreamPacketizer::EncodeElementaryStreamUnit returns
+ // WiFiDisplayElementaryStreamPacket so WiFiDisplayElementaryStreamPacket
+ // must be move constructible (as it is not copy constructible).
+ // A compiler should however use return value optimization and elide each
+ // call to this move constructor.
+ WiFiDisplayElementaryStreamPacket(WiFiDisplayElementaryStreamPacket&& other);
+
+ const WiFiDisplayStreamPacketPart& header() const { return header_; }
+ const WiFiDisplayStreamPacketPart& unit_header() const {
+ return unit_header_;
+ }
+ const WiFiDisplayStreamPacketPart& unit() const { return unit_; }
+
+ private:
+ HeaderBuffer header_buffer_;
+ WiFiDisplayStreamPacketPart header_;
+ WiFiDisplayStreamPacketPart unit_header_;
+ WiFiDisplayStreamPacketPart unit_;
+
+ DISALLOW_COPY_AND_ASSIGN(WiFiDisplayElementaryStreamPacket);
+};
+
+// The WiFi Display elementary stream packetizer packetizes unit buffers to
+// Packetized Elementary Stream (PES) packets.
+// It is used internally by a WiFi Display transport stream packetizer.
+class WiFiDisplayElementaryStreamPacketizer {
+ public:
+ enum : uint8_t {
+ kPrivateStream1Id = 0xBDu,
+ kFirstAudioStreamId = 0xC0u,
+ kLastAudioStreamId = 0xDFu,
+ kFirstVideoStreamId = 0xE0u,
+ kLastVideoStreamId = 0xEFu,
+ };
+
+ static WiFiDisplayElementaryStreamPacket EncodeElementaryStreamUnit(
+ uint8_t stream_id,
+ const uint8_t* unit_header_data,
+ size_t unit_header_size,
+ const uint8_t* unit_data,
+ size_t unit_size,
+ const base::TimeTicks& pts,
+ const base::TimeTicks& dts);
+};
+
+} // namespace extensions
+
+#endif // EXTENSIONS_RENDERER_API_DISPLAY_SOURCE_WIFI_DISPLAY_WIFI_DISPLAY_ELEMENTARY_STREAM_PACKETIZER_H_

Powered by Google App Engine
This is Rietveld 408576698