summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorGwenole Beauchesne <gwenole.beauchesne@intel.com>2013-05-24 15:05:45 +0200
committerGwenole Beauchesne <gwenole.beauchesne@intel.com>2013-05-27 16:07:15 +0200
commit811c1abbc6d128da947da0c2397ef1233492c532 (patch)
tree8f2172055bc4ed3eb2bc0d8fb117ade34d536616 /tests
parentdadf0ef9783367ad58672c1f89fcf61a52cd3d71 (diff)
downloadgst-vaapi-811c1abbc6d128da947da0c2397ef1233492c532.tar.gz
tests: improve check for display cache.
Improve check for display cache infrastructure. In particular, for X11 and GLX backends, we need to make sure that we can create a GstVaapiDisplayX11 from another GstVaapiDisplayGLX, i.e. underlying X11 and VA displays can be shared. Besides, allocating a GstVaapiDisplayGLX while a GstVaapiDisplayX11 already exists will have to generate different VA displays.
Diffstat (limited to 'tests')
-rw-r--r--tests/test-display.c78
1 files changed, 77 insertions, 1 deletions
diff --git a/tests/test-display.c b/tests/test-display.c
index e463d5f3..4155fc13 100644
--- a/tests/test-display.c
+++ b/tests/test-display.c
@@ -45,6 +45,9 @@
# include <va/va_glx.h>
#endif
+/* Set to 1 to check display cache works (shared VA display) */
+#define CHECK_DISPLAY_CACHE 1
+
static void
print_value(const GValue *value, const gchar *name)
{
@@ -271,7 +274,7 @@ dump_info(GstVaapiDisplay *display)
int
main(int argc, char *argv[])
{
- GstVaapiDisplay *display;
+ GstVaapiDisplay *display, *display2;
guint width, height, par_n, par_d;
gst_init(&argc, &argv);
@@ -345,6 +348,39 @@ main(int argc, char *argv[])
if (!display)
g_error("could not create Gst/VA display");
+ if (CHECK_DISPLAY_CACHE) {
+ display2 = gst_vaapi_display_x11_new(NULL);
+
+ /* Check for the same X11 display */
+ g_assert(gst_vaapi_display_x11_get_display(
+ GST_VAAPI_DISPLAY_X11(display)) ==
+ gst_vaapi_display_x11_get_display(
+ GST_VAAPI_DISPLAY_X11(display2)));
+
+ /* Check for the same VA display */
+ g_assert(gst_vaapi_display_get_display(display) ==
+ gst_vaapi_display_get_display(display2));
+
+ gst_vaapi_display_unref(display2);
+
+#if USE_GLX
+ display2 = gst_vaapi_display_glx_new(NULL);
+
+ /* Check for the different X11 display */
+ /* XXX: it is also desired to cache underlying X11 displays */
+ g_assert(gst_vaapi_display_x11_get_display(
+ GST_VAAPI_DISPLAY_X11(display)) !=
+ gst_vaapi_display_x11_get_display(
+ GST_VAAPI_DISPLAY_X11(display2)));
+
+ /* Check for different VA display */
+ g_assert(gst_vaapi_display_get_display(display) !=
+ gst_vaapi_display_get_display(display2));
+
+ gst_vaapi_display_unref(display2);
+#endif
+ }
+
gst_vaapi_display_get_size(display, &width, &height);
g_print("Display size: %ux%u\n", width, height);
@@ -370,6 +406,16 @@ main(int argc, char *argv[])
if (!display)
g_error("could not create Gst/VA display");
+ if (CHECK_DISPLAY_CACHE) {
+ display2 = gst_vaapi_display_x11_new_with_display(x11_display);
+
+ /* Check for the same VA display */
+ g_assert(gst_vaapi_display_get_display(display) ==
+ gst_vaapi_display_get_display(display2));
+
+ gst_vaapi_display_unref(display2);
+ }
+
dump_info(display);
gst_vaapi_display_unref(display);
XCloseDisplay(x11_display);
@@ -411,6 +457,36 @@ main(int argc, char *argv[])
if (!display)
g_error("could not create Gst/VA display");
+ if (CHECK_DISPLAY_CACHE) {
+ display2 = gst_vaapi_display_glx_new(NULL);
+
+ /* Check for the same X11 display */
+ g_assert(gst_vaapi_display_x11_get_display(
+ GST_VAAPI_DISPLAY_X11(display)) ==
+ gst_vaapi_display_x11_get_display(
+ GST_VAAPI_DISPLAY_X11(display2)));
+
+ /* Check for the same VA display */
+ g_assert(gst_vaapi_display_get_display(display) ==
+ gst_vaapi_display_get_display(display2));
+
+ gst_vaapi_display_unref(display2);
+
+ display2 = gst_vaapi_display_x11_new(NULL);
+
+ /* Check for the same X11 display */
+ g_assert(gst_vaapi_display_x11_get_display(
+ GST_VAAPI_DISPLAY_X11(display)) ==
+ gst_vaapi_display_x11_get_display(
+ GST_VAAPI_DISPLAY_X11(display2)));
+
+ /* Check for the same VA display */
+ g_assert(gst_vaapi_display_get_display(display) ==
+ gst_vaapi_display_get_display(display2));
+
+ gst_vaapi_display_unref(display2);
+ }
+
gst_vaapi_display_get_size(display, &width, &height);
g_print("Display size: %ux%u\n", width, height);