• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  *  Copyright (c) 2018 The WebRTC project authors. All Rights Reserved.
3  *
4  *  Use of this source code is governed by a BSD-style license
5  *  that can be found in the LICENSE file in the root of the source
6  *  tree. An additional intellectual property rights grant can be found
7  *  in the file PATENTS.  All contributing project authors may
8  *  be found in the AUTHORS file in the root of the source tree.
9  */
10 
11 #ifndef MODULES_VIDEO_CODING_CODECS_MULTIPLEX_INCLUDE_AUGMENTED_VIDEO_FRAME_BUFFER_H_
12 #define MODULES_VIDEO_CODING_CODECS_MULTIPLEX_INCLUDE_AUGMENTED_VIDEO_FRAME_BUFFER_H_
13 
14 #include <cstdint>
15 #include <memory>
16 
17 #include "api/scoped_refptr.h"
18 #include "api/video/video_frame_buffer.h"
19 
20 namespace webrtc {
21 class AugmentedVideoFrameBuffer : public VideoFrameBuffer {
22  public:
23   AugmentedVideoFrameBuffer(
24       const rtc::scoped_refptr<VideoFrameBuffer>& video_frame_buffer,
25       std::unique_ptr<uint8_t[]> augmenting_data,
26       uint16_t augmenting_data_size);
27 
28   // Retrieves the underlying VideoFrameBuffer without the augmented data
29   rtc::scoped_refptr<VideoFrameBuffer> GetVideoFrameBuffer() const;
30 
31   // Gets a pointer to the augmenting data and moves ownership to the caller
32   uint8_t* GetAugmentingData() const;
33 
34   // Get the size of the augmenting data
35   uint16_t GetAugmentingDataSize() const;
36 
37   // Returns the type of the underlying VideoFrameBuffer
38   Type type() const final;
39 
40   // Returns the width of the underlying VideoFrameBuffer
41   int width() const final;
42 
43   // Returns the height of the underlying VideoFrameBuffer
44   int height() const final;
45 
46   // Get the I140 Buffer from the underlying frame buffer
47   rtc::scoped_refptr<I420BufferInterface> ToI420() final;
48 
49  private:
50   uint16_t augmenting_data_size_;
51   std::unique_ptr<uint8_t[]> augmenting_data_;
52   rtc::scoped_refptr<webrtc::VideoFrameBuffer> video_frame_buffer_;
53 };
54 }  // namespace webrtc
55 
56 #endif  // MODULES_VIDEO_CODING_CODECS_MULTIPLEX_INCLUDE_AUGMENTED_VIDEO_FRAME_BUFFER_H_
57