File: hl_decoder.py

package info (click to toggle)
python-opuslib 3.0.1-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 184 kB
  • sloc: python: 1,201; makefile: 47
file content (102 lines) | stat: -rw-r--r-- 2,777 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# pylint: disable=missing-docstring
#

"""Tests for a high-level Decoder object"""

import unittest

import opuslib

__author__ = 'Никита Кузнецов <self@svartalf.info>'
__copyright__ = 'Copyright (c) 2012, SvartalF'
__license__ = 'BSD 3-Clause License'


class DecoderTest(unittest.TestCase):

    def test_create(self):
        try:
            opuslib.Decoder(1000, 3)
        except opuslib.OpusError as ex:
            self.assertEqual(ex.code, opuslib.BAD_ARG)

        opuslib.Decoder(48000, 2)

    def test_get_bandwidth(self):
        decoder = opuslib.Decoder(48000, 2)
        self.assertEqual(decoder.bandwidth, 0)

    def test_get_pitch(self):
        decoder = opuslib.Decoder(48000, 2)

        self.assertIn(decoder.pitch, (-1, 0))

        packet = bytes([252, 0, 0])
        decoder.decode(packet, frame_size=960)
        self.assertIn(decoder.pitch, (-1, 0))

        packet = bytes([1, 0, 0])
        decoder.decode(packet, frame_size=960)
        self.assertIn(decoder.pitch, (-1, 0))

    def test_gain(self):
        decoder = opuslib.Decoder(48000, 2)

        self.assertEqual(decoder.gain, 0)

        try:
            decoder.gain = -32769
        except opuslib.OpusError as exc:
            self.assertEqual(exc.code, opuslib.BAD_ARG)

        try:
            decoder.gain = 32768
        except opuslib.OpusError as exc:
            self.assertEqual(exc.code, opuslib.BAD_ARG)

        decoder.gain = -15
        self.assertEqual(decoder.gain, -15)

    @classmethod
    def test_reset_state(cls):
        decoder = opuslib.Decoder(48000, 2)
        decoder.reset_state()

    def test_decode(self):
        decoder = opuslib.Decoder(48000, 2)

        packet = bytes([255, 49])
        for _ in range(2, 51):
            packet += bytes([0])

        try:
            decoder.decode(packet, frame_size=960)
        except opuslib.OpusError as exc:
            self.assertEqual(exc.code, opuslib.INVALID_PACKET)

        packet = bytes([252, 0, 0])
        try:
            decoder.decode(packet, frame_size=60)
        except opuslib.OpusError as exc:
            self.assertEqual(exc.code, opuslib.BUFFER_TOO_SMALL)

        try:
            decoder.decode(packet, frame_size=480)
        except opuslib.OpusError as exc:
            self.assertEqual(exc.code, opuslib.BUFFER_TOO_SMALL)

        try:
            decoder.decode(packet, frame_size=960)
        except opuslib.OpusError:
            self.fail('Decode failed')

    def test_decode_float(self):
        decoder = opuslib.Decoder(48000, 2)
        packet = bytes([252, 0, 0])

        try:
            decoder.decode_float(packet, frame_size=960)
        except opuslib.OpusError:
            self.fail('Decode failed')