Esempio n. 1
0
    def test_rtx(self):
        extensions_map = rtp.HeaderExtensionsMap()
        extensions_map.configure(
            RTCRtpParameters(headerExtensions=[
                RTCRtpHeaderExtensionParameters(
                    id=9, uri="urn:ietf:params:rtp-hdrext:sdes:mid")
            ]))

        data = load("rtp_with_sdes_mid.bin")
        packet = RtpPacket.parse(data, extensions_map)

        # wrap / unwrap RTX
        rtx = wrap_rtx(packet,
                       payload_type=112,
                       sequence_number=12345,
                       ssrc=1234)
        recovered = unwrap_rtx(rtx, payload_type=111, ssrc=4084547440)

        # check roundtrip
        self.assertEqual(recovered.version, packet.version)
        self.assertEqual(recovered.marker, packet.marker)
        self.assertEqual(recovered.payload_type, packet.payload_type)
        self.assertEqual(recovered.sequence_number, packet.sequence_number)
        self.assertEqual(recovered.timestamp, packet.timestamp)
        self.assertEqual(recovered.ssrc, packet.ssrc)
        self.assertEqual(recovered.csrc, packet.csrc)
        self.assertEqual(recovered.extensions, packet.extensions)
        self.assertEqual(recovered.payload, packet.payload)
Esempio n. 2
0
    def test_padding_only_with_header_extensions(self):
        extensions_map = rtp.HeaderExtensionsMap()
        extensions_map.configure(
            RTCRtpParameters(headerExtensions=[
                RTCRtpHeaderExtensionParameters(
                    id=2,
                    uri=
                    "http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time",
                )
            ]))

        data = load("rtp_only_padding_with_header_extensions.bin")
        packet = RtpPacket.parse(data, extensions_map)
        self.assertEqual(packet.version, 2)
        self.assertEqual(packet.marker, 0)
        self.assertEqual(packet.payload_type, 98)
        self.assertEqual(packet.sequence_number, 22138)
        self.assertEqual(packet.timestamp, 3171065731)
        self.assertEqual(packet.csrc, [])
        self.assertEqual(packet.extensions,
                         rtp.HeaderExtensions(abs_send_time=15846540))
        self.assertEqual(len(packet.payload), 0)
        self.assertEqual(packet.padding_size, 224)

        serialized = packet.serialize(extensions_map)
        self.assertEqual(len(serialized), len(data))
        self.assertEqual(serialized[0:20], data[0:20])
        self.assertEqual(serialized[-1], data[-1])
Esempio n. 3
0
    def test_map_header_extensions(self):
        data = bytearray([
            0x90, 0x64, 0x00, 0x58,
            0x65, 0x43, 0x12, 0x78,
            0x12, 0x34, 0x56, 0x78,  # SSRC
            0xbe, 0xde, 0x00, 0x08,  # Extension of size 8x32bit words.
            0x40, 0xda,              # AudioLevel.
            0x22, 0x01, 0x56, 0xce,  # TransmissionOffset.
            0x62, 0x12, 0x34, 0x56,  # AbsoluteSendTime.
            0x81, 0xce, 0xab,        # TransportSequenceNumber.
            0xa0, 0x03,              # VideoRotation.
            0xb2, 0x12, 0x48, 0x76,  # PlayoutDelayLimits.
            0xc2, 0x72, 0x74, 0x78,  # RtpStreamId
            0xd5, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d,  # RepairedRtpStreamId
            0x00, 0x00,              # Padding to 32bit boundary.
        ])
        extensions_map = rtp.HeaderExtensionsMap()
        extensions_map.configure(RTCRtpParameters(
            headerExtensions=[
                RTCRtpHeaderExtensionParameters(
                    id=2,
                    uri='urn:ietf:params:rtp-hdrext:toffset'),
                RTCRtpHeaderExtensionParameters(
                    id=4,
                    uri='urn:ietf:params:rtp-hdrext:ssrc-audio-level'),
                RTCRtpHeaderExtensionParameters(
                    id=6,
                    uri='http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time'),
                RTCRtpHeaderExtensionParameters(
                    id=8,
                    uri='http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01'),  # noqa
                RTCRtpHeaderExtensionParameters(
                    id=12,
                    uri='urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id'),
                RTCRtpHeaderExtensionParameters(
                    id=13,
                    uri='urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id'),
            ]))

        packet = RtpPacket.parse(data, extensions_map)

        # check mapped values
        self.assertEqual(packet.extensions.abs_send_time, 0x123456)
        self.assertEqual(packet.extensions.audio_level, (True, 90))
        self.assertEqual(packet.extensions.mid, None)
        self.assertEqual(packet.extensions.repaired_rtp_stream_id, 'stream')
        self.assertEqual(packet.extensions.rtp_stream_id, 'rtx')
        self.assertEqual(packet.extensions.transmission_offset, 0x156ce)
        self.assertEqual(packet.extensions.transport_sequence_number, 0xceab)

        # TODO: check
        packet.serialize(extensions_map)
Esempio n. 4
0
    def test_with_sdes_mid(self):
        extensions_map = rtp.HeaderExtensionsMap()
        extensions_map.configure(
            RTCRtpParameters(headerExtensions=[
                RTCRtpHeaderExtensionParameters(
                    id=9, uri="urn:ietf:params:rtp-hdrext:sdes:mid")
            ]))

        data = load("rtp_with_sdes_mid.bin")
        packet = RtpPacket.parse(data, extensions_map)
        self.assertEqual(packet.version, 2)
        self.assertEqual(packet.marker, 1)
        self.assertEqual(packet.payload_type, 111)
        self.assertEqual(packet.sequence_number, 14156)
        self.assertEqual(packet.timestamp, 1327210925)
        self.assertEqual(packet.csrc, [])
        self.assertEqual(packet.extensions, rtp.HeaderExtensions(mid="0"))
        self.assertEqual(len(packet.payload), 54)
        self.assertEqual(packet.serialize(extensions_map), data)