| Index: third_party/libva/test/basic/test.c
|
| diff --git a/third_party/libva/test/basic/test.c b/third_party/libva/test/basic/test.c
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..a03a8b232e63c4417ccf82a07dc0bcfebb70405f
|
| --- /dev/null
|
| +++ b/third_party/libva/test/basic/test.c
|
| @@ -0,0 +1,151 @@
|
| +/*
|
| + * 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/va_x11.h>
|
| +
|
| +#include "assert.h"
|
| +#include <stdarg.h>
|
| +#include <stdio.h>
|
| +#include <string.h>
|
| +#include <dlfcn.h>
|
| +
|
| +#define ASSERT assert
|
| +
|
| +int main(int argc, const char* argv[])
|
| +{
|
| + Display *dpy;
|
| + VADisplay va_dpy;
|
| + VAStatus va_status;
|
| + int major_version, minor_version;
|
| +
|
| + dpy = XOpenDisplay(NULL);
|
| + ASSERT( dpy );
|
| + printf("XOpenDisplay: dpy = %08x\n", dpy);
|
| +
|
| + va_dpy = vaGetDisplay(dpy);
|
| + ASSERT( va_dpy );
|
| + printf("vaGetDisplay: va_dpy = %08x\n", va_dpy);
|
| +
|
| + va_status = vaInitialize(va_dpy, &major_version, &minor_version);
|
| + ASSERT( VA_STATUS_SUCCESS == va_status );
|
| + printf("vaInitialize: major = %d minor = %d\n", major_version, minor_version);
|
| +
|
| + {
|
| + VASurfaceID surfaces[21];
|
| + int i;
|
| +
|
| + 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] ); /* bounds check */
|
| + for(i = 0; i < 20; i++)
|
| + {
|
| + 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);
|
| +
|
| + sleep(10);
|
| + va_status = vaDestroySurface(va_dpy, surfaces, 20);
|
| + ASSERT( VA_STATUS_SUCCESS == va_status );
|
| + }
|
| +
|
| + {
|
| + int num_profiles;
|
| + int i;
|
| + VAProfile *profiles = malloc(vaMaxNumProfiles(va_dpy) * sizeof(VAProfile));
|
| + ASSERT(profiles);
|
| + printf("vaMaxNumProfiles = %d\n", vaMaxNumProfiles(va_dpy));
|
| +
|
| + va_status = vaQueryConfigProfiles(va_dpy, profiles, &num_profiles);
|
| + ASSERT( VA_STATUS_SUCCESS == va_status );
|
| +
|
| + printf("vaQueryConfigProfiles reports %d profiles\n", num_profiles);
|
| + for(i = 0; i < num_profiles; i++)
|
| + {
|
| + printf("Profile %d\n", profiles[i]);
|
| + }
|
| + }
|
| +
|
| + {
|
| + VASurfaceID surfaces[20];
|
| + VAContextID context;
|
| + VAConfigAttrib attrib;
|
| + VAConfigID config_id;
|
| + int i;
|
| +
|
| + attrib.type = VAConfigAttribRTFormat;
|
| + va_status = vaGetConfigAttributes(va_dpy, VAProfileMPEG2Main, VAEntrypointVLD,
|
| + &attrib, 1);
|
| + ASSERT( VA_STATUS_SUCCESS == va_status );
|
| +
|
| + ASSERT(attrib.value & VA_RT_FORMAT_YUV420);
|
| + /* Found desired RT format, keep going */
|
| +
|
| + va_status = vaCreateConfig(va_dpy, VAProfileMPEG2Main, VAEntrypointVLD, &attrib, 1,
|
| + &config_id);
|
| + ASSERT( VA_STATUS_SUCCESS == va_status );
|
| +
|
| + va_status = vaCreateSurfaces(va_dpy, 720, 480, VA_RT_FORMAT_YUV420, 20, surfaces);
|
| + ASSERT( VA_STATUS_SUCCESS == va_status );
|
| +
|
| + 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);
|
| + ASSERT( VA_STATUS_SUCCESS == va_status );
|
| +
|
| + va_status = vaDestroySurface(va_dpy, surfaces, 20);
|
| + ASSERT( VA_STATUS_SUCCESS == va_status );
|
| + }
|
| +
|
| + {
|
| + VABufferID picture_buf[3];
|
| + va_status = vaCreateBuffer(va_dpy, VAPictureParameterBufferType, &picture_buf[0]);
|
| + ASSERT( VA_STATUS_SUCCESS == va_status );
|
| + va_status = vaCreateBuffer(va_dpy, VAPictureParameterBufferType, &picture_buf[1]);
|
| + ASSERT( VA_STATUS_SUCCESS == va_status );
|
| + va_status = vaCreateBuffer(va_dpy, VAPictureParameterBufferType, &picture_buf[2]);
|
| + ASSERT( VA_STATUS_SUCCESS == va_status );
|
| +
|
| + va_status = vaDestroyBuffer(va_dpy, picture_buf[0]);
|
| + ASSERT( VA_STATUS_SUCCESS == va_status );
|
| + va_status = vaDestroyBuffer(va_dpy, picture_buf[2]);
|
| + ASSERT( VA_STATUS_SUCCESS == va_status );
|
| + va_status = vaDestroyBuffer(va_dpy, picture_buf[1]);
|
| + ASSERT( VA_STATUS_SUCCESS == va_status );
|
| + }
|
| +
|
| + va_status = vaTerminate(va_dpy);
|
| + ASSERT( VA_STATUS_SUCCESS == va_status );
|
| + printf("vaTerminate\n");
|
| +
|
| + XCloseDisplay(dpy);
|
| +
|
| + return 0;
|
| +}
|
|
|