def test_decode(self): decoder = Decoder(48000, 2) packet = chr((63 << 2) + 3) + chr(49) for j in range(2, 51): packet += chr(0) try: decoder.decode(packet, frame_size=960) except OpusError as e: self.assertEqual(e.code, constants.INVALID_PACKET) packet = chr(63 << 2) + chr(0) + chr(0) try: decoder.decode(packet, frame_size=60) except OpusError as e: self.assertEqual(e.code, constants.BUFFER_TOO_SMALL) try: decoder.decode(packet, frame_size=480) except OpusError as e: self.assertEqual(e.code, constants.BUFFER_TOO_SMALL) try: decoder.decode(packet, frame_size=960) except OpusError: self.fail('Decode failed')
def test_create(self): try: Decoder(1000, 3) except OpusError as e: self.assertEqual(e.code, constants.BAD_ARG) Decoder(48000, 2)
def test_decode_float(self): decoder = Decoder(48000, 2) packet = chr(63<<2)+chr(0)+chr(0) try: decoder.decode_float(packet, frame_size=960) except OpusError: self.fail('Decode failed')
def test_decode_float(self): decoder = Decoder(48000, 2) packet = chr(63 << 2) + chr(0) + chr(0) try: decoder.decode_float(packet, frame_size=960) except OpusError: self.fail('Decode failed')
def test_decode(self): decoder = Decoder(48000, 2) packet = chr((63<<2)+3)+chr(49) for j in range(2, 51): packet += chr(0) try: decoder.decode(packet, frame_size=960) except OpusError as e: self.assertEqual(e.code, constants.INVALID_PACKET) packet = chr(63<<2)+chr(0)+chr(0) try: decoder.decode(packet, frame_size=60) except OpusError as e: self.assertEqual(e.code, constants.BUFFER_TOO_SMALL) try: decoder.decode(packet, frame_size=480) except OpusError as e: self.assertEqual(e.code, constants.BUFFER_TOO_SMALL) try: decoder.decode(packet, frame_size=960) except OpusError: self.fail('Decode failed')
def test_get_pitch(self): decoder = Decoder(48000, 2) self.assertIn(decoder.pitch, (-1, 0)) packet = chr(63<<2)+chr(0)+chr(0) decoder.decode(packet, frame_size=960) self.assertIn(decoder.pitch, (-1, 0)) packet = chr(1)+chr(0)+chr(0) decoder.decode(packet, frame_size=960) self.assertIn(decoder.pitch, (-1, 0))
def my_init(self, msg) : print(msg) rate, is_encoded, op_rate, op_frm_dur = [int(i) for i in msg.split(',')] #rate : actual sampling rate #op_rate : the rate we told opus encoder #op_frm_dur : opus frame duration txt = "" filename = DATADIR + str(uuid.uuid4()) + '.wav' wave_write = wave.open(filename, 'wb') wave_write.setnchannels(1) wave_write.setsampwidth(2) #int16, even when not encoded wave_write.setframerate(rate) if self.initialized : self.wave_write.close() self.filename = filename print("filename: ", filename) db.execute('insert into post(body) values (?)', [filename]) db.commit() self.is_encoded = is_encoded self.decoder = OpusDecoder(op_rate, 1) self.frame_size = op_frm_dur * op_rate self.wave_write = wave_write self.initialized = True
def my_init(self, msg): print(msg) rate, is_encoded, op_rate, op_frm_dur = [ int(i) for i in msg.split(',') ] #rate : actual sampling rate #op_rate : the rate we told opus encoder #op_frm_dur : opus frame duration filename = str(uuid.uuid4()) + '.wav' wave_write = wave.open(filename, 'wb') wave_write.setnchannels(1) wave_write.setsampwidth(2) #int16, even when not encoded wave_write.setframerate(rate) if self.initialized: self.wave_write.close() self.is_encoded = is_encoded self.decoder = OpusDecoder(op_rate, 1) self.frame_size = op_frm_dur * op_rate self.wave_write = wave_write self.initialized = True
def test_gain(self): decoder = Decoder(48000, 2) self.assertEqual(decoder.gain, 0) try: decoder.gain = -32769 except OpusError as e: self.assertEqual(e.code, constants.BAD_ARG) try: decoder.gain = 32768 except OpusError as e: self.assertEqual(e.code, constants.BAD_ARG) decoder.gain = -15 self.assertEqual(decoder.gain, -15)
class OpusDecoderWS(tornado.websocket.WebSocketHandler): def open(self): print('new connection') self.initialized = False def my_init(self, msg): print(msg) rate, is_encoded, op_rate, op_frm_dur = [ int(i) for i in msg.split(',') ] #rate : actual sampling rate #op_rate : the rate we told opus encoder #op_frm_dur : opus frame duration filename = str(uuid.uuid4()) + '.wav' wave_write = wave.open(filename, 'wb') wave_write.setnchannels(1) wave_write.setsampwidth(2) #int16, even when not encoded wave_write.setframerate(rate) if self.initialized: self.wave_write.close() self.is_encoded = is_encoded self.decoder = OpusDecoder(op_rate, 1) self.frame_size = op_frm_dur * op_rate self.wave_write = wave_write self.initialized = True def on_message(self, data): if str(data).startswith('m:'): self.my_init(str(data[2:])) else: if self.is_encoded: pcm = self.decoder.decode(data, self.frame_size, False) self.wave_write.writeframes(pcm) # force garbage collector # default rate of cleaning is not sufficient gc.collect() else: self.wave_write.writeframes(data) def on_close(self): if self.initialized: self.wave_write.close() print('connection closed')
class OpusDecoderWS(tornado.websocket.WebSocketHandler): def open(self): print('new connection') self.initialized = False def my_init(self, msg) : print(msg) rate, is_encoded, op_rate, op_frm_dur = [int(i) for i in msg.split(',')] #rate : actual sampling rate #op_rate : the rate we told opus encoder #op_frm_dur : opus frame duration filename = str(uuid.uuid4()) + '.wav' wave_write = wave.open(filename, 'wb') wave_write.setnchannels(1) wave_write.setsampwidth(2) #int16, even when not encoded wave_write.setframerate(rate) if self.initialized : self.wave_write.close() self.is_encoded = is_encoded self.decoder = OpusDecoder(op_rate, 1) self.frame_size = op_frm_dur * op_rate self.wave_write = wave_write self.initialized = True def on_message(self, data) : if str(data).startswith('m:') : self.my_init(str(data[2:])) else : if self.is_encoded : pcm = self.decoder.decode(data, self.frame_size, False) self.wave_write.writeframes(pcm) # force garbage collector # default rate of cleaning is not sufficient gc.collect() else : self.wave_write.writeframes(data) def on_close(self): if self.initialized : self.wave_write.close() print('connection closed')
def test_get_pitch(self): decoder = Decoder(48000, 2) self.assertIn(decoder.pitch, (-1, 0)) packet = chr(63 << 2) + chr(0) + chr(0) decoder.decode(packet, frame_size=960) self.assertIn(decoder.pitch, (-1, 0)) packet = chr(1) + chr(0) + chr(0) decoder.decode(packet, frame_size=960) self.assertIn(decoder.pitch, (-1, 0))
def my_init(self, msg) : print(msg) rate, is_encoded, op_rate, op_frm_dur = [int(i) for i in msg.split(',')] #rate : actual sampling rate #op_rate : the rate we told opus encoder #op_frm_dur : opus frame duration filename = str(uuid.uuid4()) + '.wav' wave_write = wave.open(filename, 'wb') wave_write.setnchannels(1) wave_write.setsampwidth(2) #int16, even when not encoded wave_write.setframerate(rate) if self.initialized : self.wave_write.close() self.is_encoded = is_encoded self.decoder = OpusDecoder(op_rate, 1) self.frame_size = op_frm_dur * op_rate self.wave_write = wave_write self.initialized = True
def test_get_bandwidth(self): decoder = Decoder(48000, 2) self.assertEqual(decoder.bandwidth, 0)
def test_reset_state(self): decoder = Decoder(48000, 2) decoder.reset_state()