mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-17 11:45:25 +00:00
Move code around.
This commit is contained in:
parent
10c454e801
commit
9b66ed1233
3 changed files with 44 additions and 40 deletions
|
@ -318,3 +318,42 @@ image_draw_rectangle(
|
||||||
gst_vaapi_display_unlock(display);
|
gst_vaapi_display_unlock(display);
|
||||||
return gst_vaapi_image_unmap(image);
|
return gst_vaapi_image_unmap(image);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
gboolean
|
||||||
|
image_upload(GstVaapiImage *image, GstVaapiSurface *surface)
|
||||||
|
{
|
||||||
|
GstVaapiDisplay *display;
|
||||||
|
GstVaapiImageFormat format;
|
||||||
|
GstVaapiSubpicture *subpicture;
|
||||||
|
|
||||||
|
display = gst_vaapi_object_get_display(GST_VAAPI_OBJECT(surface));
|
||||||
|
if (!display)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
format = gst_vaapi_image_get_format(image);
|
||||||
|
if (!format)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
if (gst_vaapi_surface_put_image(surface, image))
|
||||||
|
return TRUE;
|
||||||
|
|
||||||
|
g_print("could not upload %" GST_FOURCC_FORMAT" image to surface\n",
|
||||||
|
GST_FOURCC_ARGS(format));
|
||||||
|
|
||||||
|
if (!gst_vaapi_display_has_subpicture_format(display, format))
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
g_print("trying as a subpicture\n");
|
||||||
|
|
||||||
|
subpicture = gst_vaapi_subpicture_new(image);
|
||||||
|
if (!subpicture)
|
||||||
|
g_error("could not create VA subpicture");
|
||||||
|
|
||||||
|
if (!gst_vaapi_surface_associate_subpicture(surface, subpicture,
|
||||||
|
NULL, NULL))
|
||||||
|
g_error("could not associate subpicture to surface");
|
||||||
|
|
||||||
|
/* The surface holds a reference to the subpicture. This is safe */
|
||||||
|
g_object_unref(subpicture);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
|
@ -22,6 +22,7 @@
|
||||||
#define IMAGE_H
|
#define IMAGE_H
|
||||||
|
|
||||||
#include <gst/vaapi/gstvaapiimage.h>
|
#include <gst/vaapi/gstvaapiimage.h>
|
||||||
|
#include <gst/vaapi/gstvaapisurface.h>
|
||||||
|
|
||||||
GstVaapiImage *
|
GstVaapiImage *
|
||||||
image_generate(
|
image_generate(
|
||||||
|
@ -41,4 +42,7 @@ image_draw_rectangle(
|
||||||
guint32 color
|
guint32 color
|
||||||
);
|
);
|
||||||
|
|
||||||
|
gboolean
|
||||||
|
image_upload(GstVaapiImage *image, GstVaapiSurface *surface);
|
||||||
|
|
||||||
#endif /* IMAGE_H */
|
#endif /* IMAGE_H */
|
||||||
|
|
|
@ -30,45 +30,6 @@ static inline void pause(void)
|
||||||
getchar();
|
getchar();
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
|
||||||
upload_image(GstVaapiSurface *surface, GstVaapiImage *image)
|
|
||||||
{
|
|
||||||
GstVaapiDisplay *display;
|
|
||||||
GstVaapiImageFormat format;
|
|
||||||
GstVaapiSubpicture *subpicture;
|
|
||||||
|
|
||||||
display = gst_vaapi_object_get_display(GST_VAAPI_OBJECT(surface));
|
|
||||||
if (!display)
|
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
format = gst_vaapi_image_get_format(image);
|
|
||||||
if (!format)
|
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
if (gst_vaapi_surface_put_image(surface, image))
|
|
||||||
return TRUE;
|
|
||||||
|
|
||||||
g_print("could not upload %" GST_FOURCC_FORMAT" image to surface\n",
|
|
||||||
GST_FOURCC_ARGS(format));
|
|
||||||
|
|
||||||
if (!gst_vaapi_display_has_subpicture_format(display, format))
|
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
g_print("trying as a subpicture\n");
|
|
||||||
|
|
||||||
subpicture = gst_vaapi_subpicture_new(image);
|
|
||||||
if (!subpicture)
|
|
||||||
g_error("could not create Gst/VA subpicture");
|
|
||||||
|
|
||||||
if (!gst_vaapi_surface_associate_subpicture(surface, subpicture,
|
|
||||||
NULL, NULL))
|
|
||||||
g_error("could not associate subpicture to surface");
|
|
||||||
|
|
||||||
/* The surface holds a reference to the subpicture. This is safe */
|
|
||||||
g_object_unref(subpicture);
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
int
|
||||||
main(int argc, char *argv[])
|
main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
|
@ -112,7 +73,7 @@ main(int argc, char *argv[])
|
||||||
|
|
||||||
image = image_generate(display, format, width, height);
|
image = image_generate(display, format, width, height);
|
||||||
if (image) {
|
if (image) {
|
||||||
if (upload_image(surface, image))
|
if (image_upload(image, surface))
|
||||||
break;
|
break;
|
||||||
g_object_unref(image);
|
g_object_unref(image);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue