예제 #1
0
    def test_tid(self):
        descr, rest = VpxPayloadDescriptor.parse(b'\x90\x20\xe0')
        self.assertEqual(descr.partition_start, 1)
        self.assertEqual(descr.partition_id, 0)
        self.assertEqual(descr.picture_id, None)
        self.assertEqual(descr.tl0picidx, None)
        self.assertEqual(descr.tid, (3, 1))
        self.assertEqual(descr.keyidx, None)
        self.assertEqual(bytes(descr), b'\x90\x20\xe0')

        self.assertEqual(rest, b'')
예제 #2
0
    def test_short_picture_id_127(self):
        descr, rest = VpxPayloadDescriptor.parse(b"\x90\x80\x7f")
        self.assertEqual(descr.partition_start, 1)
        self.assertEqual(descr.partition_id, 0)
        self.assertEqual(descr.picture_id, 127)
        self.assertEqual(descr.tl0picidx, None)
        self.assertEqual(descr.tid, None)
        self.assertEqual(descr.keyidx, None)
        self.assertEqual(bytes(descr), b"\x90\x80\x7f")

        self.assertEqual(rest, b"")
예제 #3
0
    def test_tl0picidx(self):
        descr, rest = VpxPayloadDescriptor.parse(b'\x90\xc0\x92\x67\x81')
        self.assertEqual(descr.partition_start, 1)
        self.assertEqual(descr.partition_id, 0)
        self.assertEqual(descr.picture_id, 4711)
        self.assertEqual(descr.tl0picidx, 129)
        self.assertEqual(descr.tid, None)
        self.assertEqual(descr.keyidx, None)
        self.assertEqual(bytes(descr), b'\x90\xc0\x92\x67\x81')

        self.assertEqual(rest, b'')
예제 #4
0
    def test_long_picture_id_128(self):
        descr, rest = VpxPayloadDescriptor.parse(b'\x90\x80\x80\x80')
        self.assertEqual(descr.partition_start, 1)
        self.assertEqual(descr.partition_id, 0)
        self.assertEqual(descr.picture_id, 128)
        self.assertEqual(descr.tl0picidx, None)
        self.assertEqual(descr.tid, None)
        self.assertEqual(descr.keyidx, None)
        self.assertEqual(bytes(descr), b'\x90\x80\x80\x80')

        self.assertEqual(rest, b'')
예제 #5
0
    def test_keyidx(self):
        descr, rest = VpxPayloadDescriptor.parse(b"\x90\x10\x1f")
        self.assertEqual(descr.partition_start, 1)
        self.assertEqual(descr.partition_id, 0)
        self.assertEqual(descr.picture_id, None)
        self.assertEqual(descr.tl0picidx, None)
        self.assertEqual(descr.tid, None)
        self.assertEqual(descr.keyidx, 31)
        self.assertEqual(bytes(descr), b"\x90\x10\x1f")

        self.assertEqual(rest, b"")
예제 #6
0
    def test_no_picture_id(self):
        descr, rest = VpxPayloadDescriptor.parse(b'\x10')
        self.assertEqual(descr.partition_start, 1)
        self.assertEqual(descr.partition_id, 0)
        self.assertEqual(descr.picture_id, None)
        self.assertEqual(descr.tl0picidx, None)
        self.assertEqual(descr.tid, None)
        self.assertEqual(descr.keyidx, None)
        self.assertEqual(bytes(descr), b'\x10')
        self.assertEqual(repr(descr), 'VpxPayloadDescriptor(S=1, PID=0, pic_id=None)')

        self.assertEqual(rest, b'')
예제 #7
0
    def test_long_picture_id_4711(self):
        """
        From RFC 7741 - 4.6.5
        """
        descr, rest = VpxPayloadDescriptor.parse(b'\x90\x80\x92\x67')
        self.assertEqual(descr.partition_start, 1)
        self.assertEqual(descr.partition_id, 0)
        self.assertEqual(descr.picture_id, 4711)
        self.assertEqual(descr.tl0picidx, None)
        self.assertEqual(descr.tid, None)
        self.assertEqual(descr.keyidx, None)
        self.assertEqual(bytes(descr), b'\x90\x80\x92\x67')

        self.assertEqual(rest, b'')
예제 #8
0
    def test_short_picture_id_17(self):
        """
        From RFC 7741 - 4.6.3
        """
        descr, rest = VpxPayloadDescriptor.parse(b'\x90\x80\x11')
        self.assertEqual(descr.partition_start, 1)
        self.assertEqual(descr.partition_id, 0)
        self.assertEqual(descr.picture_id, 17)
        self.assertEqual(descr.tl0picidx, None)
        self.assertEqual(descr.tid, None)
        self.assertEqual(descr.keyidx, None)
        self.assertEqual(bytes(descr), b'\x90\x80\x11')
        self.assertEqual(repr(descr), 'VpxPayloadDescriptor(S=1, PID=0, pic_id=17)')

        self.assertEqual(rest, b'')
예제 #9
0
    def test_truncated(self):
        with self.assertRaises(ValueError) as cm:
            VpxPayloadDescriptor.parse(b"")
        self.assertEqual(str(cm.exception), "VPX descriptor is too short")

        with self.assertRaises(ValueError) as cm:
            VpxPayloadDescriptor.parse(b"\x80")
        self.assertEqual(str(cm.exception),
                         "VPX descriptor has truncated extended bits")

        with self.assertRaises(ValueError) as cm:
            VpxPayloadDescriptor.parse(b"\x80\x80")
        self.assertEqual(str(cm.exception),
                         "VPX descriptor has truncated PictureID")

        with self.assertRaises(ValueError) as cm:
            VpxPayloadDescriptor.parse(b"\x80\x80\x80")
        self.assertEqual(str(cm.exception),
                         "VPX descriptor has truncated long PictureID")

        with self.assertRaises(ValueError) as cm:
            VpxPayloadDescriptor.parse(b"\x80\x40")
        self.assertEqual(str(cm.exception),
                         "VPX descriptor has truncated TL0PICIDX")

        with self.assertRaises(ValueError) as cm:
            VpxPayloadDescriptor.parse(b"\x80\x20")
        self.assertEqual(str(cm.exception), "VPX descriptor has truncated T/K")

        with self.assertRaises(ValueError) as cm:
            VpxPayloadDescriptor.parse(b"\x80\x10")
        self.assertEqual(str(cm.exception), "VPX descriptor has truncated T/K")
예제 #10
0
    def test_truncated(self):
        with self.assertRaises(ValueError) as cm:
            VpxPayloadDescriptor.parse(b'')
        self.assertEqual(str(cm.exception), 'VPX descriptor is too short')

        with self.assertRaises(ValueError) as cm:
            VpxPayloadDescriptor.parse(b'\x80')
        self.assertEqual(str(cm.exception),
                         'VPX descriptor has truncated extended bits')

        with self.assertRaises(ValueError) as cm:
            VpxPayloadDescriptor.parse(b'\x80\x80')
        self.assertEqual(str(cm.exception),
                         'VPX descriptor has truncated PictureID')

        with self.assertRaises(ValueError) as cm:
            VpxPayloadDescriptor.parse(b'\x80\x80\x80')
        self.assertEqual(str(cm.exception),
                         'VPX descriptor has truncated long PictureID')

        with self.assertRaises(ValueError) as cm:
            VpxPayloadDescriptor.parse(b'\x80\x40')
        self.assertEqual(str(cm.exception),
                         'VPX descriptor has truncated TL0PICIDX')

        with self.assertRaises(ValueError) as cm:
            VpxPayloadDescriptor.parse(b'\x80\x20')
        self.assertEqual(str(cm.exception), 'VPX descriptor has truncated T/K')

        with self.assertRaises(ValueError) as cm:
            VpxPayloadDescriptor.parse(b'\x80\x10')
        self.assertEqual(str(cm.exception), 'VPX descriptor has truncated T/K')