class RTCP::PSFB

PSFB: Payload-specific FB message Documentation: RFC 4585, 6.1.

 0                   1                   2                   3
 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|V=2|P|   FMT   |       PT      |          length               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                  SSRC of packet sender                        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                  SSRC of media source                         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
:            Feedback Control Information (FCI)                 :
:                                                               :

Constants

FORMATS
PT_ID

Attributes

fci[R]
first_mb[R]
format[R]
number[R]
picture_id[R]
sender_ssrc[R]
source_ssrc[R]
version[R]

Public Instance Methods

decode(packet_data) click to toggle source
# File lib/rtcp/psfb.rb, line 30
def decode(packet_data) 
  vpfmt, packet_type, length, @sender_ssrc, @source_ssrc =
    packet_data.unpack('CCnN2')
  ensure_packet_type(packet_type)

  @length  = 4 * (length + 1)
  @version = vpfmt >> 6
  format  = vpfmt & 31
  @format = FORMATS[format] || format

  @fci_data = payload_data(packet_data, @length, 12)

  case @format
  when :sli
    pl  = @fci_data.unpack('L')
    @first_mb   = pl >> 19
    @number     = (pl >> 6) & 8191
    @picture_id = pl & 63
  # when :pli # No parameters
  # when :rpsi
  # when :afb
  end
  self
end