Home | History | Annotate | Download | only in rtcp_packet
      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 
     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 void Rtpfb::ParseCommonFeedback(const uint8_t* payload) {
     35   sender_ssrc_ = ByteReader<uint32_t>::ReadBigEndian(&payload[0]);
     36   media_ssrc_ = ByteReader<uint32_t>::ReadBigEndian(&payload[4]);
     37 }
     38 
     39 void Rtpfb::CreateCommonFeedback(uint8_t* payload) const {
     40   ByteWriter<uint32_t>::WriteBigEndian(&payload[0], sender_ssrc_);
     41   ByteWriter<uint32_t>::WriteBigEndian(&payload[4], media_ssrc_);
     42 }
     43 
     44 }  // namespace rtcp
     45 }  // namespace webrtc
     46