diff options
Diffstat (limited to 'third_party/libwebrtc/common_video/generic_frame_descriptor/generic_frame_info.h')
-rw-r--r-- | third_party/libwebrtc/common_video/generic_frame_descriptor/generic_frame_info.h | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/third_party/libwebrtc/common_video/generic_frame_descriptor/generic_frame_info.h b/third_party/libwebrtc/common_video/generic_frame_descriptor/generic_frame_info.h new file mode 100644 index 0000000000..19f413b5d4 --- /dev/null +++ b/third_party/libwebrtc/common_video/generic_frame_descriptor/generic_frame_info.h @@ -0,0 +1,63 @@ +/* + * Copyright (c) 2019 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 COMMON_VIDEO_GENERIC_FRAME_DESCRIPTOR_GENERIC_FRAME_INFO_H_ +#define COMMON_VIDEO_GENERIC_FRAME_DESCRIPTOR_GENERIC_FRAME_INFO_H_ + +#include <bitset> +#include <initializer_list> +#include <vector> + +#include "absl/container/inlined_vector.h" +#include "absl/strings/string_view.h" +#include "api/transport/rtp/dependency_descriptor.h" +#include "api/video/video_codec_constants.h" + +namespace webrtc { + +// Describes how a certain encoder buffer was used when encoding a frame. +struct CodecBufferUsage { + constexpr CodecBufferUsage(int id, bool referenced, bool updated) + : id(id), referenced(referenced), updated(updated) {} + + int id = 0; + bool referenced = false; + bool updated = false; +}; + +struct GenericFrameInfo : public FrameDependencyTemplate { + class Builder; + + GenericFrameInfo(); + GenericFrameInfo(const GenericFrameInfo&); + ~GenericFrameInfo(); + + absl::InlinedVector<CodecBufferUsage, kMaxEncoderBuffers> encoder_buffers; + std::vector<bool> part_of_chain; + std::bitset<32> active_decode_targets = ~uint32_t{0}; +}; + +class GenericFrameInfo::Builder { + public: + Builder(); + ~Builder(); + + GenericFrameInfo Build() const; + Builder& T(int temporal_id); + Builder& S(int spatial_id); + Builder& Dtis(absl::string_view indication_symbols); + + private: + GenericFrameInfo info_; +}; + +} // namespace webrtc + +#endif // COMMON_VIDEO_GENERIC_FRAME_DESCRIPTOR_GENERIC_FRAME_INFO_H_ |