~misterc/libva/Trunk

« back to all changes in this revision

Viewing changes to test/test.c

  • Committer: Austin Yuan
  • Date: 2009-06-13 01:17:46 UTC
  • Revision ID: git-v1:527643827e6589645df6fe2232c2d397f9fe76e9
Fix the issue that all files are moved into a sub-directory libva.

Signed-off-by: Austin Yuan <shengquan.yuan@intel.com>

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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
#include <va_x11.h>
 
26
 
 
27
#include "assert.h"
 
28
#include <stdarg.h>
 
29
#include <stdio.h>
 
30
#include <string.h>
 
31
#include <dlfcn.h>
 
32
 
 
33
#define ASSERT  assert
 
34
 
 
35
int main(int argc, const char* argv[])
 
36
{
 
37
  Display *dpy;
 
38
  VADisplay va_dpy;
 
39
  VAStatus va_status;
 
40
  int major_version, minor_version; 
 
41
   
 
42
  dpy = XOpenDisplay(NULL);
 
43
  ASSERT( dpy );
 
44
  printf("XOpenDisplay: dpy = %08x\n", dpy);
 
45
  
 
46
  va_dpy = vaGetDisplay(dpy);
 
47
  ASSERT( va_dpy );  
 
48
  printf("vaGetDisplay: va_dpy = %08x\n", va_dpy);
 
49
  
 
50
  va_status = vaInitialize(va_dpy, &major_version, &minor_version);
 
51
  ASSERT( VA_STATUS_SUCCESS == va_status );
 
52
  printf("vaInitialize: major = %d minor = %d\n", major_version, minor_version);
 
53
 
 
54
  {
 
55
      VASurfaceID surfaces[21];
 
56
      int i;
 
57
      
 
58
      surfaces[20] = -1;
 
59
      va_status = vaCreateSurfaces(va_dpy, 720, 480, VA_RT_FORMAT_YUV420, 20, surfaces);
 
60
      ASSERT( VA_STATUS_SUCCESS == va_status );
 
61
      ASSERT( -1 == surfaces[20] ); /* bounds check */
 
62
      for(i = 0; i < 20; i++)
 
63
      {
 
64
          printf("Surface %d surface_id = %08x\n", i, surfaces[i]);
 
65
      }
 
66
      Window win = XCreateSimpleWindow(dpy, RootWindow(dpy, 0), 0, 0, 720, 480, 0, 0, WhitePixel(dpy, 0));
 
67
      printf("Window = %08x\n", win); 
 
68
      XMapWindow(dpy, win);
 
69
      XSync(dpy, False);
 
70
      
 
71
      vaPutSurface(va_dpy, surfaces[0], win, 0, 0, 720, 480, 0, 0, 720, 480, 0); 
 
72
 
 
73
      sleep(10);
 
74
      va_status = vaDestroySurface(va_dpy, surfaces, 20);
 
75
      ASSERT( VA_STATUS_SUCCESS == va_status );
 
76
  }
 
77
  
 
78
  {
 
79
      int num_profiles;
 
80
      int i;
 
81
      VAProfile *profiles = malloc(vaMaxNumProfiles(va_dpy) * sizeof(VAProfile));
 
82
      ASSERT(profiles);
 
83
      printf("vaMaxNumProfiles = %d\n", vaMaxNumProfiles(va_dpy));
 
84
      
 
85
      va_status = vaQueryConfigProfiles(va_dpy, profiles, &num_profiles);
 
86
      ASSERT( VA_STATUS_SUCCESS == va_status );
 
87
      
 
88
      printf("vaQueryConfigProfiles reports %d profiles\n", num_profiles);
 
89
      for(i = 0; i < num_profiles; i++)
 
90
      {
 
91
          printf("Profile %d\n", profiles[i]);
 
92
      }
 
93
  }
 
94
 
 
95
  {
 
96
      VASurfaceID surfaces[20];
 
97
      VAContextID context;
 
98
      VAConfigAttrib attrib;
 
99
      VAConfigID config_id;
 
100
      int i;
 
101
 
 
102
      attrib.type = VAConfigAttribRTFormat;
 
103
      va_status = vaGetConfigAttributes(va_dpy, VAProfileMPEG2Main, VAEntrypointVLD,
 
104
                                &attrib, 1);
 
105
      ASSERT( VA_STATUS_SUCCESS == va_status );
 
106
 
 
107
      ASSERT(attrib.value & VA_RT_FORMAT_YUV420);
 
108
      /* Found desired RT format, keep going */ 
 
109
 
 
110
      va_status = vaCreateConfig(va_dpy, VAProfileMPEG2Main, VAEntrypointVLD, &attrib, 1,
 
111
                       &config_id);
 
112
      ASSERT( VA_STATUS_SUCCESS == va_status );
 
113
 
 
114
      va_status = vaCreateSurfaces(va_dpy, 720, 480, VA_RT_FORMAT_YUV420, 20, surfaces);
 
115
      ASSERT( VA_STATUS_SUCCESS == va_status );
 
116
 
 
117
      va_status = vaCreateContext(va_dpy, config_id, 720, 480, 0 /* flag */, surfaces, 20, &context);
 
118
      ASSERT( VA_STATUS_SUCCESS == va_status );
 
119
 
 
120
      va_status = vaDestroyContext(va_dpy, context);
 
121
      ASSERT( VA_STATUS_SUCCESS == va_status );
 
122
 
 
123
      va_status = vaDestroySurface(va_dpy, surfaces, 20);
 
124
      ASSERT( VA_STATUS_SUCCESS == va_status );
 
125
  }
 
126
 
 
127
  {
 
128
      VABufferID picture_buf[3];
 
129
      va_status = vaCreateBuffer(va_dpy, VAPictureParameterBufferType, &picture_buf[0]);
 
130
      ASSERT( VA_STATUS_SUCCESS == va_status );
 
131
      va_status = vaCreateBuffer(va_dpy, VAPictureParameterBufferType, &picture_buf[1]);
 
132
      ASSERT( VA_STATUS_SUCCESS == va_status );
 
133
      va_status = vaCreateBuffer(va_dpy, VAPictureParameterBufferType, &picture_buf[2]);
 
134
      ASSERT( VA_STATUS_SUCCESS == va_status );
 
135
 
 
136
      va_status = vaDestroyBuffer(va_dpy, picture_buf[0]);
 
137
      ASSERT( VA_STATUS_SUCCESS == va_status );
 
138
      va_status = vaDestroyBuffer(va_dpy, picture_buf[2]);
 
139
      ASSERT( VA_STATUS_SUCCESS == va_status );
 
140
      va_status = vaDestroyBuffer(va_dpy, picture_buf[1]);
 
141
      ASSERT( VA_STATUS_SUCCESS == va_status );
 
142
  }
 
143
 
 
144
  va_status = vaTerminate(va_dpy);
 
145
  ASSERT( VA_STATUS_SUCCESS == va_status );
 
146
  printf("vaTerminate\n");
 
147
 
 
148
  XCloseDisplay(dpy);
 
149
 
 
150
  return 0;
 
151
}