rodio/decoder/
read_seek_source.rs
1use std::io::{Read, Result, Seek, SeekFrom};
2
3use symphonia::core::io::MediaSource;
4
5pub struct ReadSeekSource<T: Read + Seek + Send + Sync> {
6 inner: T,
7}
8
9impl<T: Read + Seek + Send + Sync> ReadSeekSource<T> {
10 pub fn new(inner: T) -> Self {
13 ReadSeekSource { inner }
14 }
15}
16
17impl<T: Read + Seek + Send + Sync> MediaSource for ReadSeekSource<T> {
18 fn is_seekable(&self) -> bool {
19 true
20 }
21
22 fn byte_len(&self) -> Option<u64> {
23 None
24 }
25}
26
27impl<T: Read + Seek + Send + Sync> Read for ReadSeekSource<T> {
28 fn read(&mut self, buf: &mut [u8]) -> Result<usize> {
29 self.inner.read(buf)
30 }
31}
32
33impl<T: Read + Seek + Send + Sync> Seek for ReadSeekSource<T> {
34 fn seek(&mut self, pos: SeekFrom) -> Result<u64> {
35 self.inner.seek(pos)
36 }
37}