blob: 226612079966d8d2d6d17717b7106fd2642e777d [file] [log] [blame]
Danil Chapovalovfc50e442019-12-05 13:41:451/*
2 * Copyright (c) 2019 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_RTP_RTCP_SOURCE_VIDEO_RTP_DEPACKETIZER_H_
12#define MODULES_RTP_RTCP_SOURCE_VIDEO_RTP_DEPACKETIZER_H_
13
Danil Chapovalov69679592020-03-24 12:24:4214#include <stdint.h>
15
Danil Chapovalovfc50e442019-12-05 13:41:4516#include "absl/types/optional.h"
Danil Chapovalov69679592020-03-24 12:24:4217#include "api/array_view.h"
18#include "api/scoped_refptr.h"
19#include "api/video/encoded_image.h"
Danil Chapovalovfc50e442019-12-05 13:41:4520#include "modules/rtp_rtcp/source/rtp_video_header.h"
21#include "rtc_base/copy_on_write_buffer.h"
22
23namespace webrtc {
24
25class VideoRtpDepacketizer {
26 public:
27 struct ParsedRtpPayload {
28 RTPVideoHeader video_header;
29 rtc::CopyOnWriteBuffer video_payload;
30 };
31
32 virtual ~VideoRtpDepacketizer() = default;
33 virtual absl::optional<ParsedRtpPayload> Parse(
34 rtc::CopyOnWriteBuffer rtp_payload) = 0;
Danil Chapovalov69679592020-03-24 12:24:4235 virtual rtc::scoped_refptr<EncodedImageBuffer> AssembleFrame(
36 rtc::ArrayView<const rtc::ArrayView<const uint8_t>> rtp_payloads);
Danil Chapovalovfc50e442019-12-05 13:41:4537};
38
39} // namespace webrtc
40
41#endif // MODULES_RTP_RTCP_SOURCE_VIDEO_RTP_DEPACKETIZER_H_