def __init__(self, filename): self.name = filename #load/set wav file if len(sys.argv) < 2: print("Usage: %s wavefile" % os.path.basename(sys.argv[0])) print(" Using an example wav file...") dirname = os.path.dirname(os.path.realpath(__file__)) fname = os.path.join(dirname, filename) else: fname = sys.argv[1] wavefp = wave.open(fname) channels = wavefp.getnchannels() bitrate = wavefp.getsampwidth() * 8 samplerate = wavefp.getframerate() wavbuf = wavefp.readframes(wavefp.getnframes()) self.duration = (len(wavbuf) / float(samplerate)) / 2 self.length = len(wavbuf) formatmap = { (1, 8): al.AL_FORMAT_MONO8, (2, 8): al.AL_FORMAT_STEREO8, (1, 16): al.AL_FORMAT_MONO16, (2, 16): al.AL_FORMAT_STEREO16, } alformat = formatmap[(channels, bitrate)] self.buf = al.ALuint(0) al.alGenBuffers(1, self.buf) #allocate buffer space to: buffer, format, data, len(data), and samplerate al.alBufferData(self.buf, alformat, wavbuf, len(wavbuf), samplerate)
def __init__(self, filename): self.name = filename # load/set wav file if len(sys.argv) < 2: print("Usage: %s wavefile" % os.path.basename(sys.argv[0])) print(" Using an example wav file...") dirname = os.path.dirname(os.path.realpath(__file__)) fname = os.path.join(dirname, filename) else: fname = sys.argv[1] wavefp = wave.open(fname) channels = wavefp.getnchannels() bitrate = wavefp.getsampwidth() * 8 samplerate = wavefp.getframerate() wavbuf = wavefp.readframes(wavefp.getnframes()) self.duration = (len(wavbuf) / float(samplerate)) / 2 self.length = len(wavbuf) formatmap = { (1, 8): al.AL_FORMAT_MONO8, (2, 8): al.AL_FORMAT_STEREO8, (1, 16): al.AL_FORMAT_MONO16, (2, 16): al.AL_FORMAT_STEREO16, } alformat = formatmap[(channels, bitrate)] self.buf = al.ALuint(0) al.alGenBuffers(1, self.buf) # allocate buffer space to: buffer, format, data, len(data), and samplerate al.alBufferData(self.buf, alformat, wavbuf, len(wavbuf), samplerate)
def write(self, audio_data): buffer = al.ALuint() al.alGenBuffers(1, buffer) al.alBufferData(buffer, self._al_format, audio_data.data, audio_data.length, self.audio_format.sample_rate) al.alSourceQueueBuffers(self._al_source, 1, ctypes.byref(buffer)) self._buffered_time += audio_data.duration self._timestamps.append((audio_data.timestamp, audio_data.duration)) audio_data.consume(audio_data.length, self.audio_format)
def write(self, audio_data): buffer = al.ALuint() al.alGenBuffers(1, buffer) al.alBufferData(buffer, self._al_format, audio_data.data, audio_data.length, self.audio_format.sample_rate) al.alSourceQueueBuffers(self._al_source, 1, ctypes.byref(buffer)) self._buffered_time += audio_data.duration self._timestamps.append((audio_data.timestamp, audio_data.duration)) audio_data.consume(audio_data.length, self.audio_format)
def get(self, timestamp, length, owner, is_eos=False): if not self: buffer = al.ALuint() al.alGenBuffers(1, buffer) info = BufferInformation() self.info[buffer.value] = info else: buffer = al.ALuint(self.pop(0)) info = self.info[buffer.value] info.timestamp = timestamp # for video sync info.length = length # in seconds info.owner = owner # Source that owns it, or buffer_pool info.is_eos = is_eos # True if last buffer for this source return buffer
def __init__(self): self.channels = 1 self.bitrate = 16 self.samplerate = 8000 self.wavbuf = None self.alformat = al.AL_FORMAT_MONO16 self.length = None ## formatmap = { ## (1, 8) : al.AL_FORMAT_MONO8, ## (2, 8) : al.AL_FORMAT_STEREO8, ## (1, 16): al.AL_FORMAT_MONO16, ## (2, 16) : al.AL_FORMAT_STEREO16, ## } ## alformat = formatmap[(channels, bitrate)] self.buf = al.ALuint(0) al.alGenBuffers(1, self.buf)
def __init__(self, file): self.name = file wavefp = wave.open(file) channels = wavefp.getnchannels() bitrate = wavefp.getsampwidth() * 8 samplerate = wavefp.getframerate() wavbuffer = wavefp.readframes(wavefp.getnframes()) self.duration = (len(wavbuffer) / float(samplerate)) / 2 self.length = len(wavbuffer) formatmap = { (1, 8): al.AL_FORMAT_MONO8, (2, 8): al.AL_FORMAT_STEREO8, (1, 16): al.AL_FORMAT_MONO16, (2, 16): al.AL_FORMAT_STEREO16, } alformat = formatmap[(channels, bitrate)] self.buffer = al.ALuint(0) al.alGenBuffers(1, self.buffer) al.alBufferData(self.buffer, alformat, wavbuffer, self.length, samplerate)
def __init__(self, file): self.name = file wavefp = wave.open(file) channels = wavefp.getnchannels() bitrate = wavefp.getsampwidth() * 8 samplerate = wavefp.getframerate() wavbuffer = wavefp.readframes(wavefp.getnframes()) self.duration = (len(wavbuffer) / float(samplerate)) / 2 self.length = len(wavbuffer) formatmap = { (1, 8): al.AL_FORMAT_MONO8, (2, 8): al.AL_FORMAT_STEREO8, (1, 16): al.AL_FORMAT_MONO16, (2, 16): al.AL_FORMAT_STEREO16, } alformat = formatmap[(channels, bitrate)] self.buffer = al.ALuint(0) al.alGenBuffers(1, self.buffer) al.alBufferData(self.buffer, alformat, wavbuffer, self.length, samplerate)