|  | /* | 
|  | *  Copyright (c) 2021 The WebRTC project authors. All Rights Reserved. | 
|  | * | 
|  | *  Use of this source code is governed by a BSD-style license | 
|  | *  that can be found in the LICENSE file in the root of the source | 
|  | *  tree. An additional intellectual property rights grant can be found | 
|  | *  in the file PATENTS.  All contributing project authors may | 
|  | *  be found in the AUTHORS file in the root of the source tree. | 
|  | */ | 
|  |  | 
|  | #ifndef MODULES_RTP_RTCP_SOURCE_RTP_PACKETIZER_AV1_TEST_HELPER_H_ | 
|  | #define MODULES_RTP_RTCP_SOURCE_RTP_PACKETIZER_AV1_TEST_HELPER_H_ | 
|  |  | 
|  | #include <stdint.h> | 
|  |  | 
|  | #include <initializer_list> | 
|  | #include <utility> | 
|  | #include <vector> | 
|  |  | 
|  | namespace webrtc { | 
|  | // All obu types offset by 3 to take correct position in the obu_header. | 
|  | constexpr uint8_t kAv1ObuTypeSequenceHeader = 1 << 3; | 
|  | constexpr uint8_t kAv1ObuTypeTemporalDelimiter = 2 << 3; | 
|  | constexpr uint8_t kAv1ObuTypeFrameHeader = 3 << 3; | 
|  | constexpr uint8_t kAv1ObuTypeTileGroup = 4 << 3; | 
|  | constexpr uint8_t kAv1ObuTypeMetadata = 5 << 3; | 
|  | constexpr uint8_t kAv1ObuTypeFrame = 6 << 3; | 
|  | constexpr uint8_t kAv1ObuTypeTileList = 8 << 3; | 
|  | constexpr uint8_t kAv1ObuExtensionPresentBit = 0b0'0000'100; | 
|  | constexpr uint8_t kAv1ObuSizePresentBit = 0b0'0000'010; | 
|  | constexpr uint8_t kAv1ObuExtensionS1T1 = 0b001'01'000; | 
|  |  | 
|  | class Av1Obu { | 
|  | public: | 
|  | explicit Av1Obu(uint8_t obu_type); | 
|  |  | 
|  | Av1Obu& WithExtension(uint8_t extension); | 
|  | Av1Obu& WithoutSize(); | 
|  | Av1Obu& WithPayload(std::vector<uint8_t> payload); | 
|  |  | 
|  | private: | 
|  | friend std::vector<uint8_t> BuildAv1Frame(std::initializer_list<Av1Obu> obus); | 
|  | uint8_t header_; | 
|  | uint8_t extension_ = 0; | 
|  | std::vector<uint8_t> payload_; | 
|  | }; | 
|  |  | 
|  | std::vector<uint8_t> BuildAv1Frame(std::initializer_list<Av1Obu> obus); | 
|  |  | 
|  | }  // namespace webrtc | 
|  | #endif  // MODULES_RTP_RTCP_SOURCE_RTP_PACKETIZER_AV1_TEST_HELPER_H_ |