Line data Source code
1 : /*
2 : * Copyright (c) 2015 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 : #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/psfb.h"
12 :
13 : #include "webrtc/modules/rtp_rtcp/source/byte_io.h"
14 :
15 : namespace webrtc {
16 : namespace rtcp {
17 : constexpr uint8_t Psfb::kPacketType;
18 : constexpr size_t Psfb::kCommonFeedbackLength;
19 : // RFC 4585: Feedback format.
20 : //
21 : // Common packet format:
22 : //
23 : // 0 1 2 3
24 : // 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
25 : // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
26 : // |V=2|P| FMT | PT | length |
27 : // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
28 : // 0 | SSRC of packet sender |
29 : // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
30 : // 4 | SSRC of media source |
31 : // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
32 : // : Feedback Control Information (FCI) :
33 : // : :
34 :
35 0 : void Psfb::ParseCommonFeedback(const uint8_t* payload) {
36 0 : sender_ssrc_ = ByteReader<uint32_t>::ReadBigEndian(&payload[0]);
37 0 : media_ssrc_ = ByteReader<uint32_t>::ReadBigEndian(&payload[4]);
38 0 : }
39 :
40 0 : void Psfb::CreateCommonFeedback(uint8_t* payload) const {
41 0 : ByteWriter<uint32_t>::WriteBigEndian(&payload[0], sender_ssrc_);
42 0 : ByteWriter<uint32_t>::WriteBigEndian(&payload[4], media_ssrc_);
43 0 : }
44 :
45 : } // namespace rtcp
46 : } // namespace webrtc
|