plugins: port to new video format API.

This commit is contained in:
Gwenole Beauchesne 2013-07-09 15:44:35 +02:00
parent 40ac87b45e
commit 09397fa0d8
3 changed files with 16 additions and 24 deletions

View file

@ -79,7 +79,7 @@ struct _GstVaapiDownload {
GstCaps *allowed_caps; GstCaps *allowed_caps;
TransformSizeCache transform_size_cache[2]; TransformSizeCache transform_size_cache[2];
GstVaapiVideoPool *images; GstVaapiVideoPool *images;
GstVaapiImageFormat image_format; GstVideoFormat image_format;
guint image_width; guint image_width;
guint image_height; guint image_height;
unsigned int images_reset : 1; unsigned int images_reset : 1;
@ -252,7 +252,7 @@ gst_vaapidownload_init(GstVaapiDownload *download)
download->allowed_caps = NULL; download->allowed_caps = NULL;
download->images = NULL; download->images = NULL;
download->images_reset = FALSE; download->images_reset = FALSE;
download->image_format = (GstVaapiImageFormat)0; download->image_format = GST_VIDEO_FORMAT_UNKNOWN;
download->image_width = 0; download->image_width = 0;
download->image_height = 0; download->image_height = 0;
@ -293,11 +293,11 @@ gst_vaapidownload_stop(GstBaseTransform *trans)
return TRUE; return TRUE;
} }
static GstVaapiImageFormat static GstVideoFormat
get_surface_format(GstVaapiSurface *surface) get_surface_format(GstVaapiSurface *surface)
{ {
GstVaapiImage *image; GstVaapiImage *image;
GstVaapiImageFormat format = GST_VAAPI_IMAGE_NV12; GstVideoFormat format = GST_VIDEO_FORMAT_NV12;
/* XXX: NV12 is assumed by default */ /* XXX: NV12 is assumed by default */
image = gst_vaapi_surface_derive_image(surface); image = gst_vaapi_surface_derive_image(surface);
@ -313,7 +313,7 @@ gst_vaapidownload_update_src_caps(GstVaapiDownload *download, GstBuffer *buffer)
{ {
GstVaapiVideoMeta *meta; GstVaapiVideoMeta *meta;
GstVaapiSurface *surface; GstVaapiSurface *surface;
GstVaapiImageFormat format; GstVideoFormat format;
GstPad *srcpad; GstPad *srcpad;
GstCaps *in_caps, *out_caps; GstCaps *in_caps, *out_caps;
@ -334,7 +334,7 @@ gst_vaapidownload_update_src_caps(GstVaapiDownload *download, GstBuffer *buffer)
return FALSE; return FALSE;
} }
out_caps = gst_vaapi_image_format_get_caps(format); out_caps = gst_video_format_to_caps(format);
if (!out_caps) { if (!out_caps) {
GST_WARNING("failed to create caps from format %" GST_FOURCC_FORMAT, GST_WARNING("failed to create caps from format %" GST_FOURCC_FORMAT,
GST_FOURCC_ARGS(format)); GST_FOURCC_ARGS(format));
@ -485,10 +485,10 @@ static gboolean
gst_vaapidownload_ensure_image_pool(GstVaapiDownload *download, GstCaps *caps) gst_vaapidownload_ensure_image_pool(GstVaapiDownload *download, GstCaps *caps)
{ {
GstStructure * const structure = gst_caps_get_structure(caps, 0); GstStructure * const structure = gst_caps_get_structure(caps, 0);
GstVaapiImageFormat format; GstVideoFormat format;
gint width, height; gint width, height;
format = gst_vaapi_image_format_from_caps(caps); format = gst_video_format_from_caps(caps);
gst_structure_get_int(structure, "width", &width); gst_structure_get_int(structure, "width", &width);
gst_structure_get_int(structure, "height", &height); gst_structure_get_int(structure, "height", &height);

View file

@ -141,10 +141,10 @@ ensure_allowed_caps(GstVaapiUploader *uploader)
for (i = 0; i < n_structures; i++) { for (i = 0; i < n_structures; i++) {
GstStructure * const structure = gst_caps_get_structure(image_caps, i); GstStructure * const structure = gst_caps_get_structure(image_caps, i);
GstVaapiImage *image; GstVaapiImage *image;
GstVaapiImageFormat format; GstVideoFormat format;
format = gst_vaapi_image_format_from_structure(structure); format = gst_video_format_from_structure(structure);
if (!format) if (format == GST_VIDEO_FORMAT_UNKNOWN)
continue; continue;
image = gst_vaapi_image_new(priv->display, format, WIDTH, HEIGHT); image = gst_vaapi_image_new(priv->display, format, WIDTH, HEIGHT);
if (!image) if (!image)
@ -309,7 +309,7 @@ gst_vaapi_uploader_ensure_caps(
{ {
GstVaapiUploaderPrivate *priv; GstVaapiUploaderPrivate *priv;
GstVaapiImage *image; GstVaapiImage *image;
GstVaapiImageFormat vaformat; GstVideoFormat format;
GstVideoInfo vi; GstVideoInfo vi;
g_return_val_if_fail(GST_VAAPI_IS_UPLOADER(uploader), FALSE); g_return_val_if_fail(GST_VAAPI_IS_UPLOADER(uploader), FALSE);
@ -323,19 +323,17 @@ gst_vaapi_uploader_ensure_caps(
priv = uploader->priv; priv = uploader->priv;
priv->direct_rendering = 0; priv->direct_rendering = 0;
/* Translate from Gst video format to VA image format */ /* Strip out non-YUV formats */
if (!gst_video_info_from_caps(&vi, src_caps)) if (!gst_video_info_from_caps(&vi, src_caps))
return FALSE; return FALSE;
if (!GST_VIDEO_INFO_IS_YUV(&vi)) if (!GST_VIDEO_INFO_IS_YUV(&vi))
return FALSE; return FALSE;
vaformat = gst_vaapi_image_format_from_video(GST_VIDEO_INFO_FORMAT(&vi)); format = GST_VIDEO_INFO_FORMAT(&vi);
if (!vaformat)
return FALSE;
/* Check if we can alias source and output buffers (same data_size) */ /* Check if we can alias source and output buffers (same data_size) */
image = gst_vaapi_video_pool_get_object(priv->images); image = gst_vaapi_video_pool_get_object(priv->images);
if (image) { if (image) {
if (gst_vaapi_image_get_format(image) == vaformat && if (gst_vaapi_image_get_format(image) == format &&
gst_vaapi_image_is_linear(image) && gst_vaapi_image_is_linear(image) &&
gst_vaapi_image_get_data_size(image) == GST_VIDEO_INFO_SIZE(&vi)) gst_vaapi_image_get_data_size(image) == GST_VIDEO_INFO_SIZE(&vi))
priv->direct_rendering = 1; priv->direct_rendering = 1;

View file

@ -37,13 +37,7 @@ GST_DEBUG_CATEGORY_STATIC(gst_debug_vaapivideomemory);
static GstVaapiImage * static GstVaapiImage *
new_image(GstVaapiDisplay *display, const GstVideoInfo *vip) new_image(GstVaapiDisplay *display, const GstVideoInfo *vip)
{ {
GstVaapiImageFormat format; return gst_vaapi_image_new(display, GST_VIDEO_INFO_FORMAT(vip),
format = gst_vaapi_image_format_from_video(GST_VIDEO_INFO_FORMAT(vip));
if (!format)
return NULL;
return gst_vaapi_image_new(display, format,
GST_VIDEO_INFO_WIDTH(vip), GST_VIDEO_INFO_HEIGHT(vip)); GST_VIDEO_INFO_WIDTH(vip), GST_VIDEO_INFO_HEIGHT(vip));
} }