/** * gst_vaapi_image_new_with_image: * @display: a #GstVaapiDisplay * @va_image: a VA image * * Creates a new #GstVaapiImage from a foreign VA image. The image * format and dimensions will be extracted from @va_image. This * function is mainly used by gst_vaapi_surface_derive_image() to bind * a VA image to a #GstVaapiImage object. * * Return value: the newly allocated #GstVaapiImage object */ GstVaapiImage * gst_vaapi_image_new_with_image(GstVaapiDisplay *display, VAImage *va_image) { GstVaapiImage *image; g_return_val_if_fail(GST_VAAPI_IS_DISPLAY(display), NULL); g_return_val_if_fail(va_image, NULL); g_return_val_if_fail(va_image->image_id != VA_INVALID_ID, NULL); g_return_val_if_fail(va_image->buf != VA_INVALID_ID, NULL); GST_DEBUG("VA image 0x%08x, format %" GST_FOURCC_FORMAT ", size %ux%u", va_image->image_id, GST_FOURCC_ARGS(va_image->format.fourcc), va_image->width, va_image->height); image = g_object_new( GST_VAAPI_TYPE_IMAGE, "display", display, "id", GST_VAAPI_ID(va_image->image_id), "image", va_image, NULL ); if (!image) return NULL; if (!image->priv->is_constructed) { g_object_unref(image); return NULL; } return image; }
/** * gst_vaapi_image_new: * @display: a #GstVaapiDisplay * @format: a #GstVaapiImageFormat * @width: the requested image width * @height: the requested image height * * Creates a new #GstVaapiImage with the specified format and * dimensions. * * Return value: the newly allocated #GstVaapiImage object */ GstVaapiImage * gst_vaapi_image_new( GstVaapiDisplay *display, GstVaapiImageFormat format, guint width, guint height ) { GstVaapiImage *image; g_return_val_if_fail(GST_VAAPI_IS_DISPLAY(display), NULL); g_return_val_if_fail(width > 0, NULL); g_return_val_if_fail(height > 0, NULL); GST_DEBUG("format %" GST_FOURCC_FORMAT ", size %ux%u", GST_FOURCC_ARGS(format), width, height); image = g_object_new( GST_VAAPI_TYPE_IMAGE, "display", display, "id", GST_VAAPI_ID(VA_INVALID_ID), "format", format, "width", width, "height", height, NULL ); if (!image) return NULL; if (!image->priv->is_constructed) { g_object_unref(image); return NULL; } return image; }
/** * gst_vaapi_decoder_vc1_new: * @display: a #GstVaapiDisplay * @caps: a #GstCaps holding codec information * * Creates a new #GstVaapiDecoder for VC-1 decoding. The @caps can * hold extra information like codec-data and pictured coded size. * * Return value: the newly allocated #GstVaapiDecoder object */ GstVaapiDecoder * gst_vaapi_decoder_vc1_new(GstVaapiDisplay *display, GstCaps *caps) { GstVaapiDecoderVC1 *decoder; g_return_val_if_fail(GST_VAAPI_IS_DISPLAY(display), NULL); g_return_val_if_fail(GST_IS_CAPS(caps), NULL); decoder = g_object_new( GST_VAAPI_TYPE_DECODER_VC1, "display", display, "caps", caps, NULL ); if (!decoder->priv->is_constructed) { g_object_unref(decoder); return NULL; } return GST_VAAPI_DECODER_CAST(decoder); }
/** * gst_vaapi_decoder_ffmpeg_new: * @display: a #GstVaapiDisplay * @caps: a #GstCaps holding codec information * * Creates a new #GstVaapiDecoder based on FFmpeg where the codec is * determined from @caps. The @caps can hold extra information like * codec-data and pictured coded size. * * Return value: the newly allocated #GstVaapiDecoder object */ GstVaapiDecoder * gst_vaapi_decoder_ffmpeg_new(GstVaapiDisplay *display, GstCaps *caps) { GstVaapiDecoderFfmpeg *ffdecoder; g_return_val_if_fail(GST_VAAPI_IS_DISPLAY(display), NULL); g_return_val_if_fail(GST_IS_CAPS(caps), NULL); ffdecoder = g_object_new( GST_VAAPI_TYPE_DECODER_FFMPEG, "display", display, "caps", caps, NULL ); if (!ffdecoder->priv->is_constructed) { g_object_unref(ffdecoder); return NULL; } return GST_VAAPI_DECODER_CAST(ffdecoder); }
/** * gst_vaapi_window_wayland_new: * @display: a #GstVaapiDisplay * @width: the requested window width, in pixels * @height: the requested windo height, in pixels * * Creates a window with the specified @width and @height. The window * will be attached to the @display and remains invisible to the user * until gst_vaapi_window_show() is called. * * Return value: the newly allocated #GstVaapiWindow object */ GstVaapiWindow * gst_vaapi_window_wayland_new( GstVaapiDisplay *display, guint width, guint height ) { GST_DEBUG("new window, size %ux%u", width, height); g_return_val_if_fail(GST_VAAPI_IS_DISPLAY(display), NULL); g_return_val_if_fail(width > 0, NULL); g_return_val_if_fail(height > 0, NULL); return g_object_new(GST_VAAPI_TYPE_WINDOW_WAYLAND, "display", display, "id", GST_VAAPI_ID(0), "width", width, "height", height, NULL); }