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