pub struct CarrierDemuxer<C: FfmpegCarrier> { /* private fields */ }Expand description
mediadecode::demuxer::Demuxer impl wrapping ffmpeg::format::context::Input.
Construction is deliberately not on the trait — see Self::open
and Self::open_reader.
Implementations§
Source§impl CarrierDemuxer<View>
impl CarrierDemuxer<View>
Sourcepub fn open<P: AsRef<Path> + ?Sized>(path: &P) -> Result<Self, DemuxError>
pub fn open<P: AsRef<Path> + ?Sized>(path: &P) -> Result<Self, DemuxError>
Opens a container from a filesystem path.
Runs avformat_open_input followed by
avformat_find_stream_info, then builds the track table and
captures every attachment payload.
Call ffmpeg_next::init once before the first open if you
want FFmpeg’s logging and network protocols configured;
probing a local container does not require it.
Sourcepub fn open_with<P: AsRef<Path> + ?Sized>(
path: &P,
limits: DemuxLimits,
) -> Result<Self, DemuxError>
pub fn open_with<P: AsRef<Path> + ?Sized>( path: &P, limits: DemuxLimits, ) -> Result<Self, DemuxError>
Self::open, with the session’s resource budgets named.
The budgets are taken at open rather than through a
with_* builder because the attachment half of them is spent
here: every attachment payload is captured during this call.
Sourcepub fn open_reader<R: Read + Seek + Send + 'static>(
reader: R,
url: Option<&str>,
) -> Result<Self, DemuxError>
pub fn open_reader<R: Read + Seek + Send + 'static>( reader: R, url: Option<&str>, ) -> Result<Self, DemuxError>
Opens a container from any Read + Seek source.
Sourcepub fn open_reader_with<R: Read + Seek + Send + 'static>(
reader: R,
url: Option<&str>,
limits: DemuxLimits,
) -> Result<Self, DemuxError>
pub fn open_reader_with<R: Read + Seek + Send + 'static>( reader: R, url: Option<&str>, limits: DemuxLimits, ) -> Result<Self, DemuxError>
Self::open_reader, with the session’s budgets named.
Sourcepub const fn limits(&self) -> DemuxLimits
pub const fn limits(&self) -> DemuxLimits
The budgets this session was opened with.
Source§impl CarrierDemuxer<Owned>
impl CarrierDemuxer<Owned>
Sourcepub fn open<P: AsRef<Path> + ?Sized>(path: &P) -> Result<Self, DemuxError>
pub fn open<P: AsRef<Path> + ?Sized>(path: &P) -> Result<Self, DemuxError>
Opens a container from a filesystem path.
Runs avformat_open_input followed by
avformat_find_stream_info, then builds the track table and
captures every attachment payload.
Call ffmpeg_next::init once before the first open if you
want FFmpeg’s logging and network protocols configured;
probing a local container does not require it.
Sourcepub fn open_with<P: AsRef<Path> + ?Sized>(
path: &P,
limits: DemuxLimits,
) -> Result<Self, DemuxError>
pub fn open_with<P: AsRef<Path> + ?Sized>( path: &P, limits: DemuxLimits, ) -> Result<Self, DemuxError>
Self::open, with the session’s resource budgets named.
The budgets are taken at open rather than through a
with_* builder because the attachment half of them is spent
here: every attachment payload is captured during this call.
Sourcepub fn open_reader<R: Read + Seek + Send + 'static>(
reader: R,
url: Option<&str>,
) -> Result<Self, DemuxError>
pub fn open_reader<R: Read + Seek + Send + 'static>( reader: R, url: Option<&str>, ) -> Result<Self, DemuxError>
Opens a container from any Read + Seek source.
Sourcepub fn open_reader_with<R: Read + Seek + Send + 'static>(
reader: R,
url: Option<&str>,
limits: DemuxLimits,
) -> Result<Self, DemuxError>
pub fn open_reader_with<R: Read + Seek + Send + 'static>( reader: R, url: Option<&str>, limits: DemuxLimits, ) -> Result<Self, DemuxError>
Self::open_reader, with the session’s budgets named.
Sourcepub const fn limits(&self) -> DemuxLimits
pub const fn limits(&self) -> DemuxLimits
The budgets this session was opened with.
Trait Implementations§
Source§impl Demuxer for CarrierDemuxer<View>
impl Demuxer for CarrierDemuxer<View>
Source§fn next_packet(
&mut self,
) -> Result<Option<DemuxedPacket<Ffmpeg, Self::Buffer>>, DemuxError>
fn next_packet( &mut self, ) -> Result<Option<DemuxedPacket<Ffmpeg, Self::Buffer>>, DemuxError>
Pulls the next packet.
A refusal that another attempt could survive costs no
packet. av_read_frame advances the container, so a
conversion that then fails on an allocation would otherwise
drop bytes nothing can ask for again. Such a packet is parked
instead, and this method re-attempts it before reading
another — so a caller who pulls again loses nothing. A refusal
about the packet itself is not parked: retrying a malformed
packet forever would be worse than passing it by.
Source§type Buffer = <View as FfmpegCarrier>::Buffer
type Buffer = <View as FfmpegCarrier>::Buffer
Source§type Error = DemuxError
type Error = DemuxError
Source§impl Demuxer for CarrierDemuxer<Owned>
impl Demuxer for CarrierDemuxer<Owned>
Source§fn next_packet(
&mut self,
) -> Result<Option<DemuxedPacket<Ffmpeg, Self::Buffer>>, DemuxError>
fn next_packet( &mut self, ) -> Result<Option<DemuxedPacket<Ffmpeg, Self::Buffer>>, DemuxError>
Pulls the next packet.
A refusal that another attempt could survive costs no
packet. av_read_frame advances the container, so a
conversion that then fails on an allocation would otherwise
drop bytes nothing can ask for again. Such a packet is parked
instead, and this method re-attempts it before reading
another — so a caller who pulls again loses nothing. A refusal
about the packet itself is not parked: retrying a malformed
packet forever would be worse than passing it by.