Flag indicating that we should map the VASurfaceID instead of to
system memory, so users can use libva primitives to operate with
that surface.
Check whether the display is the implementation of the specified
#GstVaImplementation type.
There are two types of VA allocators:
* #GstVaAllocator
* #GstVaDmabufAllocator
Instanciate a new pooled #GstAllocator backed by VASurfaceID.
a #GstVaDisplay
a #GstVaDisplay
a #GArray
of valid #GstVideoFormat for surfaces in current VA context.
Allocate a new VASurfaceID backed #GstMemory.
a #GstMemory backed with a VASurfaceID; %NULL, otherwise.
a #GstAllocator
Removes all the memories in @allocator's pool.
a #GstAllocator
Gets current internal configuration of @allocator.
%TRUE if @allocator is already configured; %FALSE
otherwise.
a #GstAllocator
a #GstVideoInfo
VA usage hint
a #GstVaFeature if derived images
are used for buffer mapping.
the display which this
@allocator belongs to. The reference of the display is unchanged.
a #GstAllocator
This method will populate @buffer with pooled VASurfaceID
memories. It doesn't allocate new VASurfacesID.
%TRUE if @buffer was populated correctly; %FALSE
otherwise.
a #GstAllocator
an empty #GstBuffer
Sets the configuration defined by @info, @usage_hint and
@use_derived for @allocator, and it tries the configuration, if
@allocator has not allocated memories yet.
If @allocator has memory allocated already, and frame size and
format in @info are the same as currently configured in @allocator,
the rest of @info parameters are updated internally.
%TRUE if the configuration is valid or updated; %FALSE if
configuration is not valid or not updated.
a #GstAllocator
a #GstVideoInfo
VA usage hint
a #GstVaFeature
Internal method to set allocator specific logic changes.
a #GstAllocator
hacks id to set
Populates an empty @buffer with a VASuface backed #GstMemory.
%TRUE if @buffer is populated; %FALSE otherwise.
a #GstAllocator
a #GstBuffer
It is a generic wrapper for VADisplay. To create new instances
subclasses are required, depending on the display type to use
(v.gr. DRM, X11, Wayland, etc.).
The purpose of this class is to be shared among pipelines via
#GstContext so all the VA processing elements will use the same
display entry. Application developers can create their own
subclass, based on their display, and shared it via the synced bus
message for the application.
This is called when the subclass has to create the internal
VADisplay.
The created VADisplay
a #GstVaDisplay instance
Get the the #GstVaImplementation type of @self.
#GstVaImplementation.
a #GstVaDisplay type display.
Get the VA display handle of the @self.
the VA display handle.
a #GstVaDisplay type display.
If the display is set by the user (foreign) it is assumed that the
driver is already initialized, thus this function is noop.
If the display is opened internally, this function will initialize
the driver and it will set driver's message callbacks.
NOTE: this function is supposed to be private, only used by
GstVaDisplay descendants.
%TRUE if the VA driver can be initialized; %FALSE
otherwise
a #GstVaDisplay
parent #GstObject
The common VA display object class structure.
parent #GstObjectClass
The created VADisplay
a #GstVaDisplay instance
This is a #GstVaDisplay subclass to instantiate with DRM devices.
Creates a new #GstVaDisplay from a DRM device . It will try to open
and operate the device in @path.
a newly allocated #GstVaDisplay if the
specified DRM render device could be opened and initialized;
otherwise %NULL is returned.
the path to the DRM device
This is a #GstVaDisplay instantiaton subclass for custom created
VADisplay, such as X11 or Wayland, wrapping it.
Creates a #GstVaDisplay wrapping an already created and initialized
VADisplay.
The lifetime of @handle must be hold by the provider while the
pipeline is instantiated. Do not call vaTerminate on it while the
pipeline is not in NULL state.
a new #GstVaDisplay if @handle is valid,
Otherwise %NULL.
a VADisplay to wrap
A pooled memory allocator backed by the DMABufs exported from a
VASurfaceID. Also it is possible to import DMAbufs into a
VASurfaceID.
Instanciate a new pooled allocator backed with both DMABuf and
VASurfaceID.
a new allocated #GstAllocator
a #GstVaDisplay
Removes all the memories in @allocator's pool.
a #GstAllocator
Gets current internal configuration of @allocator.
%TRUE if @allocator is already configured; %FALSE
otherwise.
a #GstAllocator
a #GstVideoInfoDmaDrm
VA usage hint
This method will populate @buffer with pooled VASurfaceID/DMABuf
memories. It doesn't allocate new VASurfacesID.
%TRUE if @buffer was populated correctly; %FALSE
otherwise.
a #GstAllocator
an empty #GstBuffer
Sets the configuration defined by @info and @usage_hint for
@allocator, and it tries the configuration, if @allocator has not
allocated memories yet.
If @allocator has memory allocated already, and frame size, format
and modifier in @info are the same as currently configured in
@allocator, the rest of @info parameters are updated internally.
%TRUE if the configuration is valid or updated; %FALSE if
configuration is not valid or not updated.
a #GstAllocator
a #GstVideoInfoDmaDrm
VA usage hint
This function creates a new VASurfaceID and exposes its DMABufs,
later it populates the @buffer with those DMABufs.
%TRUE if @buffer is populated correctly; %FALSE otherwise.
a #GstAllocator
an empty #GstBuffer
The feature is disabled.
The feature is enabled.
The feature is enabled automatically.
Types of different VA API implemented drivers. These are the typical and
the most widely used VA drivers.
The mesa gallium implementation.
The legacy i965 intel implementation.
The iHD intel implementation.
Other implementation.
Invalid implementation.
@GstVaPool is a buffer pool for VA allocators.
A new #GstBufferPool for VA allocators.
a new #GstBufferPool that handles VASurfacesID-backed
buffers. If the pool cannot be configured correctly, %NULL is
returned.
the #GstCaps of the buffers handled by the new pool.
the size of the frames to hold.
minimum number of frames to create.
maximum number of frames to create.
VA usage hint
a #GstVaFeature for derived mapping (only used when
VA allocator).
the VA allocator to use.
#GstAllocationParams to use.
Retuns: %TRUE if @pool always add #GstVideoMeta to its
buffers. Otherwise, %FALSE.
the #GstBufferPool
Video alignment is not handled as expected by VA since it uses
opaque surfaces, not directly mappable memory. Still, decoders
might need to request bigger surfaces for coded size rather than
display sizes. This method will set the coded size to bufferpool's
configuration, out of the typical video aligment.
the #GstStructure with the pool's configuration.
a #GstVideoAlignment
Sets the usage hint for the buffers handled by the buffer pool.
the #GstStructure with the pool's configuration.
the VA usage hint for new VASurfaceID.
a #GstVaFeature for derived mapping (only used when
VA allocator).
whether we find a valid @display in the @context
a #GstContext may contain the display
a #gchar string of the element type
the #gchar string of render device path
the #GstVaDisplay we get
Set the @display in the @context
a #GstContext
the #GstVaDisplay we want to set
Creates a new VASurfaceID with @buffer's allocator and attached it
to it.
*This method is used only by plugin's internal VA decoder.*
%TRUE if the new VASurfaceID is attached to @buffer
correctly; %FALSE, otherwise.
a #GstBuffer
the VASurfaceID attached to
@buffer.
a #GstBuffer
the VASurfaceID in @buffer.
a #GstBuffer
the display which this
@buffer belongs to. The reference of the display is unchanged.
a #GstBuffer
Query the specified context type name.
a #GstElement
the #gchar string specify the context type name
Get the underlying modifier for specified @format and @usage_hint.
the underlying modifier.
a #GstVaDisplay
a #GstVideoFormat
VA usage hint
It imports the array of @mem, representing a single frame, into a
VASurfaceID and it's attached into every @mem.
%TRUE if frame is imported correctly into a VASurfaceID;
%FALSE otherwise.
a #GstVaDisplay
a #GstVideoInfoDmaDrm
Memories. One
per plane.
array of
DMABuf file descriptors.
array of memory
offsets.
VA usage hint.
Propagate @display by posting it as #GstContext in the pipeline's bus.
a #GstElement
the #GstVaDisplay to propagate
Called by the va element to ensure a valid #GstVaDisplay.
whether a #GstVaDisplay exists in @display_ptr
a #GstElement
the #gchar string of render device path
The #GstVaDisplay to ensure
Used by elements when processing their pad's queries, propagating
element's #GstVaDisplay if the processed query requests it.
whether we can handle the context query successfully
a #GstElement
a #GstQuery to query the context
a #GstVaDisplay to answer the query
Called by elements in their #GstElementClass::set_context vmethod.
It gets a valid #GstVaDisplay if @context has it.
whether the @display_ptr could be successfully set to a
valid #GstVaDisplay in the @context
a #GstElement
a #GstContext may contain the display
the #gchar string of render device path
The #GstVaDisplay to set
the VASurfaceID in @mem.
a #GstMemory
the display which
this @mem belongs to. The reference of the display is unchanged.
a #GstMemory