mirror of
https://github.com/librespot-org/librespot.git
synced 2024-12-18 17:11:53 +00:00
Add missing file :(
This commit is contained in:
parent
9c3541c41b
commit
8831dea166
1 changed files with 40 additions and 0 deletions
40
src/audio_backend/pipe.rs
Normal file
40
src/audio_backend/pipe.rs
Normal file
|
@ -0,0 +1,40 @@
|
|||
use super::{Open, Sink};
|
||||
use std::fs::OpenOptions;
|
||||
use std::io::{self, Write};
|
||||
use std::mem;
|
||||
use std::slice;
|
||||
|
||||
pub struct StdoutSink(Box<Write>);
|
||||
|
||||
impl Open for StdoutSink {
|
||||
fn open(path: Option<&str>) -> StdoutSink {
|
||||
if let Some(path) = path {
|
||||
let file = OpenOptions::new().write(true).open(path).unwrap();
|
||||
StdoutSink(Box::new(file))
|
||||
} else {
|
||||
StdoutSink(Box::new(io::stdout()))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
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<()> {
|
||||
let data: &[u8] = unsafe {
|
||||
slice::from_raw_parts(data.as_ptr() as *const u8, data.len() * mem::size_of::<i16>())
|
||||
};
|
||||
|
||||
self.0.write_all(data)?;
|
||||
self.0.flush()?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in a new issue