Merge pull request #194 from brain0/fix_pulseaudio

Fix pulseaudio playback with Lewton
This commit is contained in:
Sasha Hilton 2018-03-23 23:48:30 +01:00 committed by GitHub
commit cb61e222d7
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 13 additions and 10 deletions

View file

@ -112,6 +112,7 @@ impl Sink for PulseAudioSink {
} else { } else {
let ptr = data.as_ptr() as *const libc::c_void; let ptr = data.as_ptr() as *const libc::c_void;
let len = data.len() as usize * mem::size_of::<i16>(); let len = data.len() as usize * mem::size_of::<i16>();
assert!(len > 0);
call_pulseaudio( call_pulseaudio(
|err| unsafe { pa_simple_write(self.s, ptr, len, err) }, |err| unsafe { pa_simple_write(self.s, ptr, len, err) },
|ret| ret < 0, |ret| ret < 0,

View file

@ -372,19 +372,21 @@ impl PlayerInternal {
fn handle_packet(&mut self, packet: Option<VorbisPacket>, normalisation_factor: f32) { fn handle_packet(&mut self, packet: Option<VorbisPacket>, normalisation_factor: f32) {
match packet { match packet {
Some(mut packet) => { Some(mut packet) => {
if let Some(ref editor) = self.audio_filter { if packet.data().len() > 0 {
editor.modify_stream(&mut packet.data_mut()) if let Some(ref editor) = self.audio_filter {
}; editor.modify_stream(&mut packet.data_mut())
};
if self.config.normalisation && normalisation_factor != 1.0 { if self.config.normalisation && normalisation_factor != 1.0 {
for x in packet.data_mut().iter_mut() { for x in packet.data_mut().iter_mut() {
*x = (*x as f32 * normalisation_factor) as i16; *x = (*x as f32 * normalisation_factor) as i16;
}
} }
}
if let Err(err) = self.sink.write(&packet.data()) { if let Err(err) = self.sink.write(&packet.data()) {
error!("Could not write audio: {}", err); error!("Could not write audio: {}", err);
self.stop_sink(); self.stop_sink();
}
} }
} }