Skip to main content

VorbisSource

Struct VorbisSource 

Source
pub struct VorbisSource<B: AsRef<[u8]>> { /* private fields */ }
Expand description

An Ogg Vorbis file’s samples, decoded from its bytes as they are asked for. It borrows them or owns them, as B does: a worker that outlives its caller holds an Arc<[u8]>.

Implementations§

Source§

impl<B: AsRef<[u8]>> VorbisSource<B>

Source

pub fn new(bytes: B, limits: &Limits) -> Result<Self, Error>

A source of bytes, whose headers say what it holds, which must be within limits. It decodes no audio yet.

Source

pub fn comments(&self) -> &[(String, String)]

The file’s comments, as it has them, each a name and its value.

Source

pub fn comment(&self, name: &str) -> Option<&str>

The first comment called name, whatever its case, as Vorbis says names are compared.

Source

pub fn vendor(&self) -> &str

The name of what encoded the file.

Source

pub fn end_granule(&self) -> Option<u64>

What the file’s last page says is its end, in frames from the start of the sound, if it has such a page. Nothing has checked it yet.

Source

pub fn position(&self) -> Option<u64>

Where the next frame read is, in frames from the start of the sound. After a seek it isn’t known until the end of a page has been decoded.

Source

pub fn seek_page(&mut self, frame: u64) -> Result<(), Error>

Moves to the first page that ends at or past frame, or to the file’s end if none does, dropping what was decoded of the last packet. The module’s documentation says how to get from there to a sample. What it has decoded still counts against the limit.

Trait Implementations§

Source§

impl<B: AsRef<[u8]>> Source for VorbisSource<B>

Source§

fn total_frames(&self) -> Option<u64>

Not known without decoding: the last page says, and a file can lie.

Source§

fn format(&self) -> PcmFormat

The rate and channels of what it yields.
Source§

fn read(&mut self, out: &mut [i16]) -> Result<usize, Error>

Fills out with the next whole frames, interleaved, and says how many frames that was. 0 means it has ended. Short of the end it gives at least one, and a buffer without room for one is Error::NoRoom. Read more
Source§

fn rewind_to(&mut self, frame: u64) -> Result<(), Error>

Goes back, so that the next read gives frame frame, without waiting: what a mix asks at a loop’s join. A source that can’t says Error::NoRewind, as this does unless it is written otherwise.

Auto Trait Implementations§

§

impl<B> Freeze for VorbisSource<B>
where B: Freeze,

§

impl<B> RefUnwindSafe for VorbisSource<B>
where B: RefUnwindSafe,

§

impl<B> Send for VorbisSource<B>
where B: Send,

§

impl<B> Sync for VorbisSource<B>
where B: Sync,

§

impl<B> Unpin for VorbisSource<B>
where B: Unpin,

§

impl<B> UnsafeUnpin for VorbisSource<B>
where B: UnsafeUnpin,

§

impl<B> UnwindSafe for VorbisSource<B>
where B: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.