diff options
author | Waldo Bastian <waldo.bastian@intel.com> | 2007-12-17 14:00:17 -0800 |
---|---|---|
committer | Waldo Bastian <waldo.bastian@intel.com> | 2007-12-17 14:00:17 -0800 |
commit | 563092b87a49483b6e0da071e3416723b13ea863 (patch) | |
tree | b81be2f16f8a9bb4c95b2623b04729030265ae08 /test | |
parent | 8de3509ff26510ef02a00fdda78c3431b4329253 (diff) |
Update to libva v0.26
Diffstat (limited to 'test')
-rw-r--r-- | test/Makefile.am | 5 | ||||
-rw-r--r-- | test/test.c | 18 | ||||
-rw-r--r-- | test/test_07.c | 40 | ||||
-rw-r--r-- | test/test_08.c | 14 | ||||
-rw-r--r-- | test/test_09.c | 10 | ||||
-rw-r--r-- | test/test_10.c | 55 | ||||
-rw-r--r-- | test/test_11.c | 69 | ||||
-rw-r--r-- | test/vainfo.c | 73 |
8 files changed, 231 insertions, 53 deletions
diff --git a/test/Makefile.am b/test/Makefile.am index 13bff08..c2fb501 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -23,6 +23,8 @@ check_PROGRAMS = test_01 test_02 test_03 test_04 test_05 test_06 \ test_07 test_08 test_09 test_10 test_11 +bin_PROGRAMS = vainfo + testdir = $(bindir) AM_CFLAGS = -I$(top_srcdir)/../../include/external/ -I$(top_srcdir)/src @@ -31,6 +33,9 @@ TESTS = $(check_PROGRAMS) TEST_LIBS = ../src/libva.la +vainfo_LDADD = ../src/libva.la +vainfo_SOURCES = vainfo.c + test_01_LDADD = $(TEST_LIBS) test_01_SOURCES = test_01.c diff --git a/test/test.c b/test/test.c index 70f3125..b088487 100644 --- a/test/test.c +++ b/test/test.c @@ -53,23 +53,23 @@ int main(int argc, const char* argv[]) printf("vaInitialize: major = %d minor = %d\n", major_version, minor_version); { - VASurface surfaces[21]; + VASurfaceID surfaces[21]; int i; - surfaces[20].surface_id = -1; + surfaces[20] = -1; va_status = vaCreateSurfaces(va_dpy, 720, 480, VA_RT_FORMAT_YUV420, 20, surfaces); ASSERT( VA_STATUS_SUCCESS == va_status ); - ASSERT( -1 == surfaces[20].surface_id ); /* bounds check */ + ASSERT( -1 == surfaces[20] ); /* bounds check */ for(i = 0; i < 20; i++) { - printf("Surface %d surface_id = %08x\n", i, surfaces[i].surface_id); + printf("Surface %d surface_id = %08x\n", i, surfaces[i]); } Window win = XCreateSimpleWindow(dpy, RootWindow(dpy, 0), 0, 0, 720, 480, 0, 0, WhitePixel(dpy, 0)); printf("Window = %08x\n", win); XMapWindow(dpy, win); XSync(dpy, False); - vaPutSurface(va_dpy, &(surfaces[0]), win, 0, 0, 720, 480, 0, 0, 720, 480, 0); + vaPutSurface(va_dpy, surfaces[0], win, 0, 0, 720, 480, 0, 0, 720, 480, 0); sleep(10); va_status = vaDestroySurface(va_dpy, surfaces, 20); @@ -94,14 +94,14 @@ int main(int argc, const char* argv[]) } { - VASurface surfaces[20]; - VAContext context; + VASurfaceID surfaces[20]; + VAContextID context; VAConfigAttrib attrib; VAConfigID config_id; int i; attrib.type = VAConfigAttribRTFormat; - va_status = vaQueryConfigAttributes(va_dpy, VAProfileMPEG2Main, VAEntrypointVLD, + va_status = vaGetConfigAttributes(va_dpy, VAProfileMPEG2Main, VAEntrypointVLD, &attrib, 1); ASSERT( VA_STATUS_SUCCESS == va_status ); @@ -118,7 +118,7 @@ int main(int argc, const char* argv[]) va_status = vaCreateContext(va_dpy, config_id, 720, 480, 0 /* flag */, surfaces, 20, &context); ASSERT( VA_STATUS_SUCCESS == va_status ); - va_status = vaDestroyContext(va_dpy, &context); + va_status = vaDestroyContext(va_dpy, context); ASSERT( VA_STATUS_SUCCESS == va_status ); va_status = vaDestroySurface(va_dpy, surfaces, 20); diff --git a/test/test_07.c b/test/test_07.c index 3ae8f01..cb1edce 100644 --- a/test/test_07.c +++ b/test/test_07.c @@ -33,7 +33,7 @@ void pre() #define DEAD_SURFACE_ID (VASurfaceID) 0xbeefdead -void test_unique_surfaces(VASurface *surface_list1, int surface_count1, VASurface *surface_list2, int surface_count2) +void test_unique_surfaces(VASurfaceID *surface_list1, int surface_count1, VASurfaceID *surface_list2, int surface_count2) { int i,j; @@ -42,9 +42,9 @@ void test_unique_surfaces(VASurface *surface_list1, int surface_count1, VASurfac for(j = 0; j < surface_count2; j++) { if ((surface_list1 == surface_list2) && (i == j)) continue; - ASSERT(surface_list1[i].surface_id != VA_INVALID_SURFACE); - ASSERT(surface_list2[j].surface_id != VA_INVALID_SURFACE); - ASSERT(surface_list1[i].surface_id != surface_list2[j].surface_id); + ASSERT(surface_list1[i] != VA_INVALID_SURFACE); + ASSERT(surface_list2[j] != VA_INVALID_SURFACE); + ASSERT(surface_list1[i] != surface_list2[j]); } } } @@ -52,10 +52,10 @@ void test_unique_surfaces(VASurface *surface_list1, int surface_count1, VASurfac void test() { - VASurface surfaces_1[1+1]; - VASurface surfaces_4[4+1]; - VASurface surfaces_16[16+1]; - VASurface surfaces_6[6+1]; + VASurfaceID surfaces_1[1+1]; + VASurfaceID surfaces_4[4+1]; + VASurfaceID surfaces_16[16+1]; + VASurfaceID surfaces_6[6+1]; memset(surfaces_1, 0xff, sizeof(surfaces_1)); memset(surfaces_4, 0xff, sizeof(surfaces_4)); @@ -63,22 +63,22 @@ void test() memset(surfaces_6, 0xff, sizeof(surfaces_6)); status("vaCreateSurfaces 1 surface\n"); - surfaces_1[1].surface_id = DEAD_SURFACE_ID; + surfaces_1[1] = DEAD_SURFACE_ID; va_status = vaCreateSurfaces(va_dpy, 352, 288, VA_RT_FORMAT_YUV420, 1, surfaces_1); ASSERT( VA_STATUS_SUCCESS == va_status ); - ASSERT( DEAD_SURFACE_ID == surfaces_1[1].surface_id ); /* bounds check */ + ASSERT( DEAD_SURFACE_ID == surfaces_1[1] ); /* bounds check */ status("vaCreateSurfaces 4 surfaces\n"); - surfaces_4[4].surface_id = DEAD_SURFACE_ID; + surfaces_4[4] = DEAD_SURFACE_ID; va_status = vaCreateSurfaces(va_dpy, 352, 288, VA_RT_FORMAT_YUV420, 4, surfaces_4); ASSERT( VA_STATUS_SUCCESS == va_status ); - ASSERT( DEAD_SURFACE_ID == surfaces_4[4].surface_id ); /* bounds check */ + ASSERT( DEAD_SURFACE_ID == surfaces_4[4] ); /* bounds check */ status("vaCreateSurfaces 16 surfaces\n"); - surfaces_16[16].surface_id = DEAD_SURFACE_ID; + surfaces_16[16] = DEAD_SURFACE_ID; va_status = vaCreateSurfaces(va_dpy, 352, 288, VA_RT_FORMAT_YUV420, 16, surfaces_16); ASSERT( VA_STATUS_SUCCESS == va_status ); - ASSERT( DEAD_SURFACE_ID == surfaces_16[16].surface_id ); /* bounds check */ + ASSERT( DEAD_SURFACE_ID == surfaces_16[16] ); /* bounds check */ test_unique_surfaces(surfaces_1, 1, surfaces_4, 4); test_unique_surfaces(surfaces_4, 4, surfaces_16, 4); @@ -87,29 +87,29 @@ void test() test_unique_surfaces(surfaces_1, 16, surfaces_16, 16); status("vaDestroySurface 4 surfaces\n"); - va_status = vaDestroySurface(va_dpy, surfaces_4, 4); + va_status = vaDestroySurfaces(va_dpy, surfaces_4, 4); ASSERT( VA_STATUS_SUCCESS == va_status ); status("vaCreateSurfaces 6 surfaces\n"); - surfaces_6[6].surface_id = DEAD_SURFACE_ID; + surfaces_6[6] = DEAD_SURFACE_ID; va_status = vaCreateSurfaces(va_dpy, 352, 288, VA_RT_FORMAT_YUV420, 6, surfaces_6); ASSERT( VA_STATUS_SUCCESS == va_status ); - ASSERT( DEAD_SURFACE_ID == surfaces_6[6].surface_id ); /* bounds check */ + ASSERT( DEAD_SURFACE_ID == surfaces_6[6] ); /* bounds check */ test_unique_surfaces(surfaces_1, 1, surfaces_6, 6); test_unique_surfaces(surfaces_6, 6, surfaces_16, 16); test_unique_surfaces(surfaces_1, 6, surfaces_16, 6); status("vaDestroySurface 16 surfaces\n"); - va_status = vaDestroySurface(va_dpy, surfaces_16, 16); + va_status = vaDestroySurfaces(va_dpy, surfaces_16, 16); ASSERT( VA_STATUS_SUCCESS == va_status ); status("vaDestroySurface 1 surface\n"); - va_status = vaDestroySurface(va_dpy, surfaces_1, 1); + va_status = vaDestroySurfaces(va_dpy, surfaces_1, 1); ASSERT( VA_STATUS_SUCCESS == va_status ); status("vaDestroySurface 6 surfaces\n"); - va_status = vaDestroySurface(va_dpy, surfaces_6, 6); + va_status = vaDestroySurfaces(va_dpy, surfaces_6, 6); ASSERT( VA_STATUS_SUCCESS == va_status ); } diff --git a/test/test_08.c b/test/test_08.c index ce4932d..8c743b6 100644 --- a/test/test_08.c +++ b/test/test_08.c @@ -33,17 +33,17 @@ void pre() #define DEAD_SURFACE_ID (VASurfaceID) 0xbeefdead -void test_unique_surfaces(VASurface *surface_list, int surface_count) +void test_unique_surfaces(VASurfaceID *surface_list, int surface_count) { int i,j; for(i = 0; i < surface_count; i++) { - ASSERT(surface_list[i].surface_id != VA_INVALID_SURFACE); + ASSERT(surface_list[i] != VA_INVALID_SURFACE); for(j = 0; j < i; j++) { if (i == j) continue; - ASSERT(surface_list[i].surface_id != surface_list[j].surface_id); + ASSERT(surface_list[i] != surface_list[j]); } } } @@ -65,7 +65,7 @@ test_size_t test_sizes[] = { void test() { - VASurface surfaces[NUM_SIZES+1]; + VASurfaceID surfaces[NUM_SIZES+1]; int i; memset(surfaces, 0xff, sizeof(surfaces)); @@ -73,16 +73,16 @@ void test() for(i = 0; i < NUM_SIZES; i++) { status("vaCreateSurfaces create %dx%d surface\n", test_sizes[i].w, test_sizes[i].h); - surfaces[i+1].surface_id = DEAD_SURFACE_ID; + surfaces[i+1] = DEAD_SURFACE_ID; va_status = vaCreateSurfaces(va_dpy, test_sizes[i].w, test_sizes[i].h, VA_RT_FORMAT_YUV420, 1, &surfaces[i]); ASSERT( VA_STATUS_SUCCESS == va_status ); - ASSERT( DEAD_SURFACE_ID == surfaces[i+1].surface_id ); + ASSERT( DEAD_SURFACE_ID == surfaces[i+1] ); } test_unique_surfaces(surfaces, NUM_SIZES); status("vaDestroySurface all surfaces\n"); - va_status = vaDestroySurface(va_dpy, surfaces, NUM_SIZES); + va_status = vaDestroySurfaces(va_dpy, surfaces, NUM_SIZES); ASSERT( VA_STATUS_SUCCESS == va_status ); } diff --git a/test/test_09.c b/test/test_09.c index c3d5b18..7d6cd4b 100644 --- a/test/test_09.c +++ b/test/test_09.c @@ -44,7 +44,7 @@ void test() ASSERT(entrypoints); VAConfigID *configs = malloc(max_entrypoints * num_profiles * sizeof(VAConfigID)); - VAContext *contexts = malloc(max_entrypoints * num_profiles * sizeof(VAContext)); + VAContextID *contexts = malloc(max_entrypoints * num_profiles * sizeof(VAContextID)); for(i = 0; i < num_profiles; i++) { @@ -66,7 +66,7 @@ void test() int surface_count = 4; int total_surfaces = config_count * surface_count; - VASurface *surfaces = malloc(total_surfaces * sizeof(VASurface)); + VASurfaceID *surfaces = malloc(total_surfaces * sizeof(VASurfaceID)); // TODO: Don't assume VA_RT_FORMAT_YUV420 is supported / needed for each config va_status = vaCreateSurfaces(va_dpy, width, height, VA_RT_FORMAT_YUV420, total_surfaces, surfaces); @@ -82,8 +82,8 @@ void test() for(i = 0; i < config_count; i++) { - status("vaDestroyContext for context %08x\n", contexts[i].context_id); - va_status = vaDestroyContext( va_dpy, &contexts[i] ); + status("vaDestroyContext for context %08x\n", contexts[i]); + va_status = vaDestroyContext( va_dpy, contexts[i] ); ASSERT( VA_STATUS_SUCCESS == va_status ); } @@ -94,7 +94,7 @@ void test() ASSERT( VA_STATUS_SUCCESS == va_status ); } - va_status = vaDestroySurface(va_dpy, surfaces, total_surfaces); + va_status = vaDestroySurfaces(va_dpy, surfaces, total_surfaces); ASSERT( VA_STATUS_SUCCESS == va_status ); free(contexts); diff --git a/test/test_10.c b/test/test_10.c index 3158184..6a7b978 100644 --- a/test/test_10.c +++ b/test/test_10.c @@ -26,9 +26,34 @@ #include "test_common.c" +VAConfigID config; +VAContextID context; +VASurfaceID *surfaces; +int total_surfaces; + void pre() { test_init(); + + va_status = vaCreateConfig(va_dpy, VAProfileMPEG2Main, VAEntrypointVLD, NULL, 0, &config); + ASSERT( VA_STATUS_SUCCESS == va_status ); + status("vaCreateConfig returns %08x\n", config); + + int width = 352; + int height = 288; + int surface_count = 4; + total_surfaces = surface_count; + + surfaces = malloc(total_surfaces * sizeof(VASurfaceID)); + + // TODO: Don't assume VA_RT_FORMAT_YUV420 is supported / needed for each config + va_status = vaCreateSurfaces(va_dpy, width, height, VA_RT_FORMAT_YUV420, total_surfaces, surfaces); + ASSERT( VA_STATUS_SUCCESS == va_status ); + + status("vaCreateContext with config %08x\n", config); + int flags = 0; + va_status = vaCreateContext( va_dpy, config, width, height, flags, surfaces, surface_count, &context ); + ASSERT( VA_STATUS_SUCCESS == va_status ); } void test_unique_buffers(VABufferID *buffer_list, int buffer_count) @@ -55,9 +80,22 @@ VABufferType buffer_types[] = VAMacroblockParameterBufferType, VAResidualDataBufferType, VADeblockingParameterBufferType, - VAImageBufferType }; +unsigned int buffer_sizes[] = +{ + sizeof(VAPictureParameterBufferMPEG4), + sizeof(VAIQMatrixBufferH264), + 32*1024, + 48*1024, + sizeof(VASliceParameterBufferMPEG2), + 128*1024, + sizeof(VAMacroblockParameterBufferMPEG2), + 32*1024, + 15*1024, +}; + + #define NUM_BUFFER_TYPES (sizeof(buffer_types) / sizeof(VABufferType)) #define DEAD_BUFFER_ID ((VABufferID) 0x1234ffff) @@ -70,7 +108,7 @@ void test() for(i=0; i < NUM_BUFFER_TYPES; i++) { buffer_ids[i+1] = DEAD_BUFFER_ID; - va_status = vaCreateBuffer(va_dpy, buffer_types[i], &buffer_ids[i]); + va_status = vaCreateBuffer(va_dpy, context, buffer_types[i], buffer_sizes[i], 1, NULL, &buffer_ids[i]); ASSERT( VA_STATUS_SUCCESS == va_status ); ASSERT( DEAD_BUFFER_ID == buffer_ids[i+1] ); /* Bounds check */ } @@ -85,5 +123,18 @@ void test() void post() { + status("vaDestroyContext for context %08x\n", context); + va_status = vaDestroyContext( va_dpy, context ); + ASSERT( VA_STATUS_SUCCESS == va_status ); + + status("vaDestroyConfig for config %08x\n", config); + va_status = vaDestroyConfig( va_dpy, config ); + ASSERT( VA_STATUS_SUCCESS == va_status ); + + va_status = vaDestroySurfaces(va_dpy, surfaces, total_surfaces); + ASSERT( VA_STATUS_SUCCESS == va_status ); + + free(surfaces); + test_terminate(); } diff --git a/test/test_11.c b/test/test_11.c index 53a1bd5..8f3c4b8 100644 --- a/test/test_11.c +++ b/test/test_11.c @@ -26,9 +26,47 @@ #include "test_common.c" +VAConfigID config; +VAContextID context; +VASurfaceID *surfaces; +int total_surfaces; + void pre() { test_init(); + + va_status = vaCreateConfig(va_dpy, VAProfileMPEG2Main, VAEntrypointVLD, NULL, 0, &config); + ASSERT( VA_STATUS_SUCCESS == va_status ); + status("vaCreateConfig returns %08x\n", config); + + int width = 352; + int height = 288; + int surface_count = 4; + total_surfaces = surface_count; + + surfaces = malloc(total_surfaces * sizeof(VASurfaceID)); + + // TODO: Don't assume VA_RT_FORMAT_YUV420 is supported / needed for each config + va_status = vaCreateSurfaces(va_dpy, width, height, VA_RT_FORMAT_YUV420, total_surfaces, surfaces); + ASSERT( VA_STATUS_SUCCESS == va_status ); + + status("vaCreateContext with config %08x\n", config); + int flags = 0; + va_status = vaCreateContext( va_dpy, config, width, height, flags, surfaces, surface_count, &context ); + ASSERT( VA_STATUS_SUCCESS == va_status ); +} + +void test_unique_buffers(VABufferID *buffer_list, int buffer_count) +{ + int i,j; + + for(i = 0; i < buffer_count; i++) + { + for(j = 0; j < i; j++) + { + ASSERT(buffer_list[i] != buffer_list[j]); + } + } } VABufferType buffer_types[] = @@ -42,7 +80,6 @@ VABufferType buffer_types[] = VAMacroblockParameterBufferType, VAResidualDataBufferType, VADeblockingParameterBufferType, - VAImageBufferType }; unsigned int buffer_sizes[] = @@ -56,11 +93,13 @@ unsigned int buffer_sizes[] = sizeof(VAMacroblockParameterBufferMPEG2), 32*1024, 15*1024, - 32*1024, }; + #define NUM_BUFFER_TYPES (sizeof(buffer_types) / sizeof(VABufferType)) +#define DEAD_BUFFER_ID ((VABufferID) 0x1234ffff) + void test() { VABufferID buffer_ids[NUM_BUFFER_TYPES+1]; @@ -70,9 +109,6 @@ void test() for(i=0; i < NUM_BUFFER_TYPES; i++) { uint32_t *data; - va_status = vaCreateBuffer(va_dpy, buffer_types[i], &buffer_ids[i]); - ASSERT( VA_STATUS_SUCCESS == va_status ); - status("vaCreateBuffer created buffer %08x of type %d\n", buffer_ids[i], buffer_types[i]); input_data[i] = malloc(buffer_sizes[i]+4); ASSERT(input_data[i]); @@ -88,9 +124,10 @@ void test() ASSERT(data); memcpy(data, input_data[i], buffer_sizes[i]); - /* Send to VA Buffer */ - va_status = vaBufferData(va_dpy, buffer_ids[i], buffer_sizes[i], 1, data); + /* Create buffer and fill with data */ + va_status = vaCreateBuffer(va_dpy, context, buffer_types[i], buffer_sizes[i], 1, data, &buffer_ids[i]); ASSERT( VA_STATUS_SUCCESS == va_status ); + status("vaCreateBuffer created buffer %08x of type %d\n", buffer_ids[i], buffer_types[i]); /* Wipe secondary buffer */ memset(data, 0, buffer_sizes[i]); @@ -101,9 +138,6 @@ void test() { void *data = NULL; /* Fetch VA Buffer */ - va_status = vaBufferData(va_dpy, buffer_ids[i], buffer_sizes[i], 1, NULL); - ASSERT( VA_STATUS_SUCCESS == va_status ); - va_status = vaMapBuffer(va_dpy, buffer_ids[i], &data); ASSERT( VA_STATUS_SUCCESS == va_status ); status("vaMapBuffer mapped buffer %08x\n", buffer_ids[i]); @@ -124,7 +158,22 @@ void test() } } + + void post() { + status("vaDestroyContext for context %08x\n", context); + va_status = vaDestroyContext( va_dpy, context ); + ASSERT( VA_STATUS_SUCCESS == va_status ); + + status("vaDestroyConfig for config %08x\n", config); + va_status = vaDestroyConfig( va_dpy, config ); + ASSERT( VA_STATUS_SUCCESS == va_status ); + + va_status = vaDestroySurfaces(va_dpy, surfaces, total_surfaces); + ASSERT( VA_STATUS_SUCCESS == va_status ); + + free(surfaces); + test_terminate(); } diff --git a/test/vainfo.c b/test/vainfo.c new file mode 100644 index 0000000..a793e14 --- /dev/null +++ b/test/vainfo.c @@ -0,0 +1,73 @@ +/* + * Copyright (c) 2007 Intel Corporation. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sub license, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice (including the + * next paragraph) shall be included in all copies or substantial portions + * of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. + * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR + * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#include "va.h" +#include "X11/Xlib.h" + +#include <stdarg.h> +#include <stdio.h> +#include <string.h> + + +int main(int argc, const char* argv[]) +{ + Display *dpy; + VADisplay va_dpy; + VAStatus va_status; + int major_version, minor_version; + const char *driver; + const char *display = getenv("DISPLAY"); + const char *name = rindex(argv[0], '/'); + + if (name) + name++; + else + name = argv[0]; + + dpy = XOpenDisplay(NULL); + if (NULL == dpy) + { + fprintf(stderr, "%s: Error, can't open display: '%s'\n", name, display ? display : ""); + return 1; + } + + va_dpy = vaGetDisplay(dpy); + if (NULL == va_dpy) + { + fprintf(stderr, "%s: vaGetDisplay() failed\n", name); + return 2; + } + + va_status = vaInitialize(va_dpy, &major_version, &minor_version); + if (VA_STATUS_SUCCESS != va_status ) + { + fprintf(stderr, "%s: vaInitialize failed with error code %d (%s)\n", + name, va_status, vaErrorStr(va_status)); + } + printf("%s: VA API version: %d.%d\n", name, major_version, minor_version); + driver = vaQueryVendorString(va_dpy); + printf("%s: Driver version: %s\n", name, driver ? driver : "<unknown>"); + vaTerminate(va_dpy); + return 0; +} |