mirror of
https://github.com/librespot-org/librespot.git
synced 2025-01-17 17:34:04 +00:00
Change the stdout backend to work with arbitrary files.
This commit is contained in:
parent
512304c6c3
commit
9c3541c41b
4 changed files with 3 additions and 42 deletions
|
@ -31,7 +31,6 @@ script:
|
|||
- cargo build --no-default-features --features "with-syntex facebook"
|
||||
- cargo build --no-default-features --features "with-syntex portaudio-backend"
|
||||
- cargo build --no-default-features --features "with-syntex pulseaudio-backend"
|
||||
- cargo build --no-default-features --features "with-syntex stdout-backend"
|
||||
- cargo build --no-default-features --features "with-syntex alsa-backend"
|
||||
- cargo build --no-default-features --features "with-syntex" --target armv7-unknown-linux-gnueabihf
|
||||
|
||||
|
|
|
@ -71,7 +71,6 @@ nightly = ["serde_macros"]
|
|||
|
||||
with-tremor = ["tremor"]
|
||||
facebook = ["hyper/ssl", "openssl"]
|
||||
stdout-backend = []
|
||||
alsa-backend = ["alsa"]
|
||||
portaudio-backend = ["portaudio"]
|
||||
pulseaudio-backend= ["libpulse-sys"]
|
||||
|
|
|
@ -54,11 +54,6 @@ fn mk_sink<S: Sink + Open + 'static>(device: Option<&str>) -> Box<Sink> {
|
|||
Box::new(S::open(device))
|
||||
}
|
||||
|
||||
#[cfg(feature = "stdout-backend")]
|
||||
mod stdout;
|
||||
#[cfg(feature = "stdout-backend")]
|
||||
use self::stdout::StdoutSink;
|
||||
|
||||
#[cfg(feature = "alsa-backend")]
|
||||
mod alsa;
|
||||
#[cfg(feature = "alsa-backend")]
|
||||
|
@ -74,19 +69,20 @@ mod pulseaudio;
|
|||
#[cfg(feature = "pulseaudio-backend")]
|
||||
use self::pulseaudio::PulseAudioSink;
|
||||
|
||||
mod pipe;
|
||||
use self::pipe::StdoutSink;
|
||||
|
||||
declare_backends! {
|
||||
pub const BACKENDS : &'static [
|
||||
(&'static str,
|
||||
&'static (Fn(Option<&str>) -> Box<Sink> + Sync + Send + 'static))
|
||||
] = &[
|
||||
#[cfg(feature = "stdout-backend")]
|
||||
("stdout", &mk_sink::<StdoutSink>),
|
||||
#[cfg(feature = "alsa-backend")]
|
||||
("alsa", &mk_sink::<AlsaSink>),
|
||||
#[cfg(feature = "portaudio-backend")]
|
||||
("portaudio", &mk_sink::<PortAudioSink>),
|
||||
#[cfg(feature = "pulseaudio-backend")]
|
||||
("pulseaudio", &mk_sink::<PulseAudioSink>),
|
||||
("pipe", &mk_sink::<StdoutSink>),
|
||||
];
|
||||
}
|
||||
|
|
|
@ -1,33 +0,0 @@
|
|||
use super::{Open, Sink};
|
||||
use std::io::{self, Write};
|
||||
use std::slice;
|
||||
use std::mem;
|
||||
|
||||
|
||||
pub struct StdoutSink;//Option<PCM>, String);
|
||||
|
||||
impl Open for StdoutSink {
|
||||
fn open(_: Option<&str>) -> StdoutSink {
|
||||
StdoutSink
|
||||
}
|
||||
}
|
||||
|
||||
impl Sink for StdoutSink {
|
||||
fn start(&mut self) -> io::Result<()> {
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn stop(&mut self) -> io::Result<()> {
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn write(&mut self, data: &[i16]) -> io::Result<()> {
|
||||
// http://stackoverflow.com/questions/30838358/writing-vecu16-to-a-file
|
||||
let slice_u8: &[u8] = unsafe { slice::from_raw_parts(data.as_ptr() as *const u8, data.len() * mem::size_of::<i16>()) };
|
||||
try!(io::stdout().write_all(slice_u8));
|
||||
try!(io::stdout().flush());
|
||||
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in a new issue