Esempio n. 1
0
    def test_consume_too_much(self):
        buf = SilentAudioBuffer()
        buf.add_audio_data(AudioData('', 0, 0., 1., []))
        buf.add_audio_data(AudioData('', 0, 1., 2., []))

        buf.consume_audio_data(4.)
        self.assertTrue(buf.is_empty())
        self.assertAlmostEqual(0., buf.duration)
        self.assertAlmostEqual(3., buf.get_current_timestamp())
Esempio n. 2
0
    def test_add_audio_data(self):
        buf = SilentAudioBuffer()
        self.assertTrue(buf.is_empty())
        self.assertAlmostEqual(0., buf.duration)

        data1 = AudioData('', 0, 0., 1., [])
        buf.add_audio_data(data1)
        self.assertFalse(buf.is_empty())
        self.assertAlmostEqual(1., buf.duration)

        data2 = AudioData('', 0, 1., 2., [])
        buf.add_audio_data(data2)
        self.assertFalse(buf.is_empty())
        self.assertAlmostEqual(3., buf.duration)
Esempio n. 3
0
    def test_current_timestamp(self):
        buf = SilentAudioBuffer()
        self.assertAlmostEqual(0., buf.get_current_timestamp())

        buf.add_audio_data(AudioData('', 0, 2., 1., []))
        buf.add_audio_data(AudioData('', 0, 1., 2., []))
        self.assertAlmostEqual(2., buf.get_current_timestamp())

        buf.consume_audio_data(0.2)
        self.assertAlmostEqual(2.2, buf.get_current_timestamp())

        buf.consume_audio_data(1.)
        self.assertAlmostEqual(1.2, buf.get_current_timestamp())

        buf.consume_audio_data(2.)
        self.assertAlmostEqual(3., buf.get_current_timestamp())
Esempio n. 4
0
    def test_time_to_next_update(self):
        buf = SilentAudioBuffer()
        self.assertIsNone(buf.get_time_to_next_update())

        buf.add_audio_data(AudioData('', 0, 0., 1., []))
        buf.add_audio_data(AudioData('', 0, 1., 2., []))
        self.assertAlmostEqual(1., buf.get_time_to_next_update())

        buf.consume_audio_data(0.5)
        self.assertAlmostEqual(0.5, buf.get_time_to_next_update())

        buf.consume_audio_data(1.0)
        self.assertAlmostEqual(1.5, buf.get_time_to_next_update())

        buf.consume_audio_data(1.5)
        self.assertIsNone(buf.get_time_to_next_update())
Esempio n. 5
0
    def test_add_events(self):
        buf = EventBuffer()
        self.assertIsNone(buf.get_next_event_timestamp())

        event1 = MediaEvent(.1, 'Event1')
        event2 = MediaEvent(.5, 'Event2')
        data = AudioData('', 0, 0., 1., [event1, event2])
        buf.add_events(data)

        self.assertAlmostEqual(.1, buf.get_next_event_timestamp())
Esempio n. 6
0
    def test_get_time_to_next_event(self):
        buf = EventBuffer()
        self.assertIsNone(buf.get_next_event_timestamp())

        event1 = MediaEvent(.2, 'Event1')
        event2 = MediaEvent(.2, 'Event2')
        data1 = AudioData('', 0, 0., 1., [event1, event2])
        buf.add_events(data1)

        event3 = MediaEvent(.3, 'Event3')
        event4 = MediaEvent(.4, 'Event4')
        data2 = AudioData('', 0, 1., 1., [event3, event4])
        buf.add_events(data2)

        self.assertAlmostEqual(.2, buf.get_time_to_next_event(0.))
        self.assertAlmostEqual(.1, buf.get_time_to_next_event(.1))

        buf.get_expired_events(.2)
        self.assertAlmostEqual(1.1, buf.get_time_to_next_event(.2))
        self.assertAlmostEqual(.1, buf.get_time_to_next_event(1.2))
Esempio n. 7
0
    def test_consume_audio_data(self):
        buf = SilentAudioBuffer()
        buf.add_audio_data(AudioData('', 0, 0., 1., []))
        buf.add_audio_data(AudioData('', 0, 1., 2., []))
        self.assertFalse(buf.is_empty())
        self.assertAlmostEqual(3., buf.duration)
        self.assertAlmostEqual(0., buf.get_current_timestamp())

        buf.consume_audio_data(0.8)
        self.assertFalse(buf.is_empty())
        self.assertAlmostEqual(2.2, buf.duration)
        self.assertAlmostEqual(0.8, buf.get_current_timestamp())

        buf.consume_audio_data(0.8)
        self.assertFalse(buf.is_empty())
        self.assertAlmostEqual(1.4, buf.duration)
        self.assertAlmostEqual(1.6, buf.get_current_timestamp())

        buf.consume_audio_data(1.4)
        self.assertTrue(buf.is_empty())
        self.assertAlmostEqual(0., buf.duration)
        self.assertAlmostEqual(3., buf.get_current_timestamp())
Esempio n. 8
0
    def test_get_multiple_events(self):
        buf = EventBuffer()
        self.assertIsNone(buf.get_next_event_timestamp())

        event1 = MediaEvent(.2, 'Event1')
        event2 = MediaEvent(.2, 'Event2')
        data1 = AudioData('', 0, 0., 1., [event1, event2])
        buf.add_events(data1)

        event3 = MediaEvent(.3, 'Event3')
        event4 = MediaEvent(.4, 'Event4')
        data2 = AudioData('', 0, 1., 1., [event3, event4])
        buf.add_events(data2)

        expired_events = buf.get_expired_events(0.)
        self.assertListEqual([], expired_events)

        expired_events = buf.get_expired_events(.2)
        self.assertListEqual([event1, event2], expired_events)

        expired_events = buf.get_expired_events(1.6)
        self.assertListEqual([event3, event4], expired_events)
Esempio n. 9
0
    def _get_audio_data(self, length):
        secs = length / self.audio_format.bytes_per_second
        if secs > self.duration:
            secs = self.duration
            length = int(secs * self.audio_format.bytes_per_second)

        if length == 0:
            return None

        data = AudioData('a' * length, length, self.timestamp, secs, ())
        self.timestamp += secs
        self.duration -= secs
        self.seconds_buffered += secs
        self.bytes_buffered += length
        return data
Esempio n. 10
0
    def test_get_expired_events(self):
        buf = EventBuffer()
        self.assertIsNone(buf.get_next_event_timestamp())

        event1 = MediaEvent(.1, 'Event1')
        event2 = MediaEvent(.5, 'Event2')
        data = AudioData('', 0, 0., 1., [event1, event2])
        buf.add_events(data)

        expired_events = buf.get_expired_events(0.)
        self.assertListEqual([], expired_events)

        expired_events = buf.get_expired_events(.1)
        self.assertListEqual([event1], expired_events)

        expired_events = buf.get_expired_events(.1)
        self.assertListEqual([], expired_events)

        expired_events = buf.get_expired_events(.6)
        self.assertListEqual([event2], expired_events)

        expired_events = buf.get_expired_events(.6)
        self.assertListEqual([], expired_events)