OSDN Git Service

Update VA API to v0.24
[android-x86/hardware-intel-common-libva.git] / test / test_08.c
1 /*
2  * Copyright (c) 2007 Intel Corporation. All Rights Reserved.
3  *
4  * Permission is hereby granted, free of charge, to any person obtaining a
5  * copy of this software and associated documentation files (the
6  * "Software"), to deal in the Software without restriction, including
7  * without limitation the rights to use, copy, modify, merge, publish,
8  * distribute, sub license, and/or sell copies of the Software, and to
9  * permit persons to whom the Software is furnished to do so, subject to
10  * the following conditions:
11  * 
12  * The above copyright notice and this permission notice (including the
13  * next paragraph) shall be included in all copies or substantial portions
14  * of the Software.
15  * 
16  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
17  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
19  * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
20  * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
21  * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
22  * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23  */
24
25 #define TEST_DESCRIPTION        "Create and destory surfaces of different sizes"
26
27 #include "test_common.c"
28
29 void pre()
30 {
31     test_init();
32 }
33
34 #define DEAD_SURFACE_ID         (VASurfaceID) 0xbeefdead
35
36 void test_unique_surfaces(VASurface *surface_list, int surface_count)
37 {
38     int i,j;
39     
40     for(i = 0; i < surface_count; i++)
41     {
42         ASSERT(surface_list[i].surface_id != VA_INVALID_SURFACE);
43         for(j = 0; j < i; j++)
44         {
45             if (i == j) continue;
46             ASSERT(surface_list[i].surface_id != surface_list[j].surface_id);
47         }
48     }
49 }
50
51 typedef struct test_size { int w; int h; } test_size_t;
52
53 test_size_t test_sizes[] = { 
54   {  10, 10 }, 
55   {  128, 128 }, 
56   {  176, 144 }, 
57   {  144, 176 }, 
58   {  352, 288 }, 
59   {  399, 299 }, 
60   {  640, 480 }, 
61   {  1280, 720 }
62 };
63
64 #define NUM_SIZES       (sizeof(test_sizes) / sizeof(test_size_t))
65
66 void test()
67 {
68     VASurface surfaces[NUM_SIZES+1];
69     int i;    
70     
71     memset(surfaces, 0xff, sizeof(surfaces));
72
73     for(i = 0; i < NUM_SIZES; i++)
74     {
75         status("vaCreateSurfaces create %dx%d surface\n", test_sizes[i].w, test_sizes[i].h);
76         surfaces[i+1].surface_id = DEAD_SURFACE_ID;
77         va_status = vaCreateSurfaces(va_dpy,  test_sizes[i].w, test_sizes[i].h, VA_RT_FORMAT_YUV420, 1, &surfaces[i]);
78         ASSERT( VA_STATUS_SUCCESS == va_status );
79         ASSERT( DEAD_SURFACE_ID == surfaces[i+1].surface_id );
80     }
81     
82     test_unique_surfaces(surfaces, NUM_SIZES);
83
84     status("vaDestroySurface all surfaces\n");
85     va_status = vaDestroySurface(va_dpy, surfaces, NUM_SIZES);
86     ASSERT( VA_STATUS_SUCCESS == va_status );
87 }
88
89 void post()
90 {
91     test_terminate();
92 }