Trait gstreamer_base::subclass::base_src::BaseSrcImpl

source ·
pub trait BaseSrcImpl: BaseSrcImplExt + ElementImpl {
Show 18 methods // Provided methods fn start(&self) -> Result<(), ErrorMessage> { ... } fn stop(&self) -> Result<(), ErrorMessage> { ... } fn is_seekable(&self) -> bool { ... } fn size(&self) -> Option<u64> { ... } fn times( &self, buffer: &BufferRef, ) -> (Option<ClockTime>, Option<ClockTime>) { ... } fn fill( &self, offset: u64, length: u32, buffer: &mut BufferRef, ) -> Result<FlowSuccess, FlowError> { ... } fn alloc(&self, offset: u64, length: u32) -> Result<Buffer, FlowError> { ... } fn create( &self, offset: u64, buffer: Option<&mut BufferRef>, length: u32, ) -> Result<CreateSuccess, FlowError> { ... } fn do_seek(&self, segment: &mut Segment) -> bool { ... } fn query(&self, query: &mut QueryRef) -> bool { ... } fn event(&self, event: &Event) -> bool { ... } fn caps(&self, filter: Option<&Caps>) -> Option<Caps> { ... } fn negotiate(&self) -> Result<(), LoggableError> { ... } fn set_caps(&self, caps: &Caps) -> Result<(), LoggableError> { ... } fn fixate(&self, caps: Caps) -> Caps { ... } fn unlock(&self) -> Result<(), ErrorMessage> { ... } fn unlock_stop(&self) -> Result<(), ErrorMessage> { ... } fn decide_allocation( &self, query: &mut Allocation, ) -> Result<(), LoggableError> { ... }
}

Provided Methods§

source

fn start(&self) -> Result<(), ErrorMessage>

Start processing. Subclasses should open resources and prepare to produce data. Implementation should call BaseSrcExt::start_complete() when the operation completes, either from the current thread or any other thread that finishes the start operation asynchronously.

source

fn stop(&self) -> Result<(), ErrorMessage>

Stop processing. Subclasses should use this to close resources.

source

fn is_seekable(&self) -> bool

Check if the source can seek

source

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

Get the total size of the resource in the format set by BaseSrcExt::set_format().

§Returns

true if the size is available and has been set.

source

fn times(&self, buffer: &BufferRef) -> (Option<ClockTime>, Option<ClockTime>)

Given buffer, return start and end time when it should be pushed out. The base class will sync on the clock using these times.

§Returns
source

fn fill( &self, offset: u64, length: u32, buffer: &mut BufferRef, ) -> Result<FlowSuccess, FlowError>

Ask the subclass to fill the buffer with data for offset and size. The passed buffer is guaranteed to hold the requested amount of bytes.

source

fn alloc(&self, offset: u64, length: u32) -> Result<Buffer, FlowError>

Ask the subclass to allocate an output buffer with offset and size, the default implementation will use the negotiated allocator.

§Returns
source

fn create( &self, offset: u64, buffer: Option<&mut BufferRef>, length: u32, ) -> Result<CreateSuccess, FlowError>

Ask the subclass to create a buffer with offset and size, the default implementation will call alloc if no allocated buf is provided and then call fill.

source

fn do_seek(&self, segment: &mut Segment) -> bool

Perform seeking on the resource to the indicated segment.

source

fn query(&self, query: &mut QueryRef) -> bool

Handle a requested query.

source

fn event(&self, event: &Event) -> bool

Override this to implement custom event handling.

source

fn caps(&self, filter: Option<&Caps>) -> Option<Caps>

Called to get the caps to report.

source

fn negotiate(&self) -> Result<(), LoggableError>

Negotiates src pad caps with downstream elements. Unmarks GST_PAD_FLAG_NEED_RECONFIGURE in any case. But marks it again if GstBaseSrcClass::negotiate fails.

Do not call this in the GstBaseSrcClass::fill vmethod. Call this in GstBaseSrcClass::create or in GstBaseSrcClass::alloc, before any buffer is allocated.

§Returns

true if the negotiation succeeded, else false.

source

fn set_caps(&self, caps: &Caps) -> Result<(), LoggableError>

Set new caps on the basesrc source pad.

§caps

a gst::Caps

§Returns

true if the caps could be set

source

fn fixate(&self, caps: Caps) -> Caps

Called if, in negotiation, caps need fixating.

§Returns

the fixated caps

source

fn unlock(&self) -> Result<(), ErrorMessage>

Unlock any pending access to the resource. Subclasses should unblock any blocked function ASAP. In particular, any create() function in progress should be unblocked and should return GST_FLOW_FLUSHING. Any future GstBaseSrcClass::create function call should also return GST_FLOW_FLUSHING until the GstBaseSrcClass::unlock_stop function has been called.

source

fn unlock_stop(&self) -> Result<(), ErrorMessage>

Clear the previous unlock request. Subclasses should clear any state they set during GstBaseSrcClass::unlock, such as clearing command queues.

source

fn decide_allocation(&self, query: &mut Allocation) -> Result<(), LoggableError>

configure the allocation query

Object Safety§

This trait is not object safe.

Implementors§