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/va.h> 26 #ifdef ANDROID 27 #include <va/va_android.h> 28 #else 29 #include <va/va_x11.h> 30 #endif 31 #include "assert.h" 32 #include <stdarg.h> 33 #include <stdio.h> 34 #include <stdlib.h> 35 #include <string.h> 36 #include <stdint.h> 37 #include <dlfcn.h> 38 39 #define ASSERT assert 40 41 void status(const char *msg, ...); 42 #ifdef ANDROID 43 #include "test_android.c" 44 #else 45 #include "test_x11.c" 46 #endif 47 48 Display *dpy; 49 VADisplay va_dpy; 50 VAStatus va_status; 51 int major_version, minor_version; 52 int print_status = 0; 53 int num_profiles; 54 VAProfile *profiles = NULL; 55 56 void pre(); 57 void test(); 58 void post(); 59 60 void status(const char *msg, ...) 61 { 62 if (!print_status) return; 63 va_list args; 64 printf("--- "); 65 va_start(args, msg); 66 vfprintf(stdout, msg, args); 67 va_end(args); 68 } 69 70 71 int main(int argc, const char* argv[]) 72 { 73 const char *name = strrchr(argv[0], '/'); 74 if (name) 75 name++; 76 else 77 name = argv[0]; 78 printf("*** %s: %s\n", name, TEST_DESCRIPTION); 79 pre(); 80 print_status = 1; 81 test(); 82 print_status = 0; 83 post(); 84 printf("*** %s: Finished\n", name); 85 return 0; 86 } 87 88 #define PROFILE(profile) case VAProfile##profile: return("VAProfile" #profile); 89 90 const char *profile2string(VAProfile profile) 91 { 92 switch(profile) 93 { 94 PROFILE(None) 95 PROFILE(MPEG2Simple) 96 PROFILE(MPEG2Main) 97 PROFILE(MPEG4Simple) 98 PROFILE(MPEG4AdvancedSimple) 99 PROFILE(MPEG4Main) 100 PROFILE(H263Baseline) 101 PROFILE(H264Baseline) 102 PROFILE(H264Main) 103 PROFILE(H264High) 104 PROFILE(H264ConstrainedBaseline) 105 PROFILE(H264MultiviewHigh) 106 PROFILE(H264StereoHigh) 107 PROFILE(VC1Simple) 108 PROFILE(VC1Main) 109 PROFILE(VC1Advanced) 110 PROFILE(JPEGBaseline) 111 PROFILE(VP8Version0_3) 112 default:return "Unknow"; 113 } 114 ASSERT(0); 115 return "Unknown"; 116 } 117 118 #define ENTRYPOINT(profile) case VAEntrypoint##profile: return("VAEntrypoint" #profile); 119 120 const char *entrypoint2string(VAEntrypoint entrypoint) 121 { 122 switch(entrypoint) 123 { 124 ENTRYPOINT(VLD) 125 ENTRYPOINT(IZZ) 126 ENTRYPOINT(IDCT) 127 ENTRYPOINT(MoComp) 128 ENTRYPOINT(Deblocking) 129 ENTRYPOINT(EncSlice) 130 ENTRYPOINT(EncPicture) 131 ENTRYPOINT(VideoProc) 132 default:return "Unknow"; 133 } 134 ASSERT(0); 135 return "Unknown"; 136 } 137 138 139 void test_profiles() 140 { 141 int max_profiles; 142 int i; 143 max_profiles = vaMaxNumProfiles(va_dpy); 144 status("vaMaxNumProfiles = %d\n", max_profiles); 145 ASSERT(max_profiles > 0); 146 profiles = malloc(max_profiles * sizeof(VAProfile)); 147 ASSERT(profiles); 148 149 va_status = vaQueryConfigProfiles(va_dpy, profiles, &num_profiles); 150 ASSERT( VA_STATUS_SUCCESS == va_status ); 151 152 status("vaQueryConfigProfiles reports %d profiles\n", num_profiles); 153 ASSERT(num_profiles <= max_profiles); 154 ASSERT(num_profiles > 0); 155 156 if (print_status) 157 { 158 for(i = 0; i < num_profiles; i++) 159 { 160 status(" profile %d [%s]\n", profiles[i], profile2string(profiles[i])); 161 } 162 } 163 } 164