mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-26 19:51:11 +00:00
va: Add helper functions to convert GstVideoInfoDmaDrm into va video info
The VA has its internal video format mapping(because different drivers may have different interpretation for the same format), so we should convert the info in GstVideoInfoDmaDrm into the according video info based on that mapping. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4821>
This commit is contained in:
parent
c72960b427
commit
b59b77a02f
2 changed files with 40 additions and 0 deletions
|
@ -313,6 +313,41 @@ gst_va_create_raw_caps (GstVaDisplay * display, VAProfile profile,
|
||||||
return caps;
|
return caps;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
gboolean
|
||||||
|
gst_va_video_info_from_caps (GstVideoInfo * info, guint64 * modifier,
|
||||||
|
GstCaps * caps)
|
||||||
|
{
|
||||||
|
GstVideoInfoDmaDrm drm_info;
|
||||||
|
|
||||||
|
if (!gst_video_is_dma_drm_caps (caps))
|
||||||
|
return gst_video_info_from_caps (info, caps);
|
||||||
|
|
||||||
|
if (!gst_video_info_dma_drm_from_caps (&drm_info, caps))
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
if (!gst_va_video_info_from_dma_info (info, &drm_info))
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
if (modifier)
|
||||||
|
*modifier = drm_info.drm_modifier;
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
GstCaps *
|
||||||
|
gst_va_video_info_to_dma_caps (GstVideoInfo * info, guint64 modifier)
|
||||||
|
{
|
||||||
|
GstVideoInfoDmaDrm drm_info;
|
||||||
|
|
||||||
|
gst_video_info_dma_drm_init (&drm_info);
|
||||||
|
drm_info.vinfo = *info;
|
||||||
|
drm_info.drm_fourcc =
|
||||||
|
gst_va_drm_fourcc_from_video_format (GST_VIDEO_INFO_FORMAT (info));
|
||||||
|
drm_info.drm_modifier = modifier;
|
||||||
|
|
||||||
|
return gst_video_info_dma_drm_to_caps (&drm_info);
|
||||||
|
}
|
||||||
|
|
||||||
/* the purpose of this function is to find broken configurations in
|
/* the purpose of this function is to find broken configurations in
|
||||||
* JPEG decoders: if the driver doesn't expose a pixel format for a
|
* JPEG decoders: if the driver doesn't expose a pixel format for a
|
||||||
* config with a specific sampling, that sampling is not valid */
|
* config with a specific sampling, that sampling is not valid */
|
||||||
|
|
|
@ -41,6 +41,11 @@ GstCaps * gst_va_create_coded_caps (GstVaDisplay * displa
|
||||||
VAProfile profile,
|
VAProfile profile,
|
||||||
VAEntrypoint entrypoint,
|
VAEntrypoint entrypoint,
|
||||||
guint32 * rt_formats_ptr);
|
guint32 * rt_formats_ptr);
|
||||||
|
gboolean gst_va_video_info_from_caps (GstVideoInfo * info,
|
||||||
|
guint64 * modifier,
|
||||||
|
GstCaps * caps);
|
||||||
|
GstCaps * gst_va_video_info_to_dma_caps (GstVideoInfo * info,
|
||||||
|
guint64 modifier);
|
||||||
|
|
||||||
gboolean gst_caps_set_format_array (GstCaps * caps,
|
gboolean gst_caps_set_format_array (GstCaps * caps,
|
||||||
GArray * formats);
|
GArray * formats);
|
||||||
|
|
Loading…
Reference in a new issue