GstPadGetRangeFunction

This function will be called on source pads when a peer element request a buffer at the specified @offset and @length. If this function returns #GST_FLOW_OK, the result buffer will be stored in @buffer. The contents of @buffer is invalid for any other return value.

This function is installed on a source pad with gst_pad_set_getrange_function() and can only be called on source pads after they are successfully activated with gst_pad_activate_mode() with the #GST_PAD_MODE_PULL.

@offset and @length are always given in byte units. @offset must normally be a value between 0 and the length in bytes of the data available on @pad. The length (duration in bytes) can be retrieved with a #GST_QUERY_DURATION or with a #GST_QUERY_SEEKING.

Any @offset larger or equal than the length will make the function return #GST_FLOW_EOS, which corresponds to EOS. In this case @buffer does not contain a valid buffer.

The buffer size of @buffer will only be smaller than @length when @offset is near the end of the stream. In all other cases, the size of @buffer must be exactly the requested size.

It is allowed to call this function with a 0 @length and valid @offset, in which case @buffer will contain a 0-sized buffer and the function returns #GST_FLOW_OK.

When this function is called with a -1 @offset, the sequentially next buffer of length @length in the stream is returned.

When this function is called with a -1 @length, a buffer with a default optimal length is returned in @buffer. The length might depend on the value of @offset.

alias GstPadGetRangeFunction = GstFlowReturn function(GstPad* pad, GstObject* parent, ulong offset, uint length, GstBuffer** buffer)

Return Value

#GST_FLOW_OK for success and a valid buffer in @buffer. Any other return value leaves @buffer undefined.

Meta