OLD | NEW |
(Empty) | |
| 1 /* |
| 2 * Copyright (c) 2009-2011 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 _GNU_SOURCE 1 |
| 26 #include "va.h" |
| 27 #include "va_backend.h" |
| 28 #include "va_trace.h" |
| 29 |
| 30 #include <assert.h> |
| 31 #include <stdarg.h> |
| 32 #include <stdlib.h> |
| 33 #include <stdio.h> |
| 34 #include <string.h> |
| 35 #include <dlfcn.h> |
| 36 #include <unistd.h> |
| 37 #include <sys/types.h> |
| 38 #include <sys/stat.h> |
| 39 #include <unistd.h> |
| 40 #include <time.h> |
| 41 #include <errno.h> |
| 42 |
| 43 /* |
| 44 * Env. to debug some issue, e.g. the decode/encode issue in a video conference
scenerio: |
| 45 * .LIBVA_TRACE=log_file: general VA parameters saved into log_file |
| 46 * .LIBVA_TRACE_BUFDATA: dump VA buffer data into log_file (if not set, just cal
culate a checksum) |
| 47 * .LIBVA_TRACE_CODEDBUF=coded_clip_file: save the coded clip into file coded_cl
ip_file |
| 48 * .LIBVA_TRACE_SURFACE=yuv_file: save surface YUV into file yuv_file. Use file
name to determine |
| 49 * decode/encode or jpeg surfaces |
| 50 * .LIBVA_TRACE_LOGSIZE=numeric number: truncate the log_file or coded_clip_file
, or decoded_yuv_file |
| 51 * when the size is bigger than the number |
| 52 */ |
| 53 |
| 54 /* global settings */ |
| 55 |
| 56 /* LIBVA_TRACE */ |
| 57 int trace_flag = 0; |
| 58 |
| 59 /* LIBVA_TRACE_LOGSIZE */ |
| 60 static unsigned int trace_logsize = 0xffffffff; /* truncate the log when the siz
e is bigger than it */ |
| 61 |
| 62 #define TRACE_CONTEXT_MAX 4 |
| 63 /* per context settings */ |
| 64 static struct _trace_context { |
| 65 VADisplay dpy; /* should use context as the key */ |
| 66 |
| 67 /* LIBVA_TRACE */ |
| 68 FILE *trace_fp_log; /* save the log into a file */ |
| 69 char *trace_log_fn; /* file name */ |
| 70 |
| 71 /* LIBVA_TRACE_CODEDBUF */ |
| 72 FILE *trace_fp_codedbuf; /* save the encode result into a file */ |
| 73 char *trace_codedbuf_fn; /* file name */ |
| 74 |
| 75 /* LIBVA_TRACE_SURFACE */ |
| 76 FILE *trace_fp_surface; /* save the surface YUV into a file */ |
| 77 char *trace_surface_fn; /* file name */ |
| 78 |
| 79 VAContextID trace_context; /* current context */ |
| 80 |
| 81 VASurfaceID trace_rendertarget; /* current render target */ |
| 82 VAProfile trace_profile; /* current profile for buffers */ |
| 83 VAEntrypoint trace_entrypoint; /* current entrypoint */ |
| 84 VABufferID trace_codedbuf; |
| 85 |
| 86 unsigned int trace_frame_no; /* current frame NO */ |
| 87 unsigned int trace_slice_no; /* current slice NO */ |
| 88 unsigned int trace_slice_size; /* current slice buffer size */ |
| 89 |
| 90 unsigned int trace_frame_width; /* current frame width */ |
| 91 unsigned int trace_frame_height; /* current frame height */ |
| 92 unsigned int trace_sequence_start; /* get a new sequence for encoding or not
*/ |
| 93 } trace_context[TRACE_CONTEXT_MAX]; /* trace five context at the same time */ |
| 94 |
| 95 #define DPY2INDEX(dpy) \ |
| 96 int idx; \ |
| 97 \ |
| 98 for (idx = 0; idx < TRACE_CONTEXT_MAX; idx++) \ |
| 99 if (trace_context[idx].dpy == dpy) \ |
| 100 break; \ |
| 101 \ |
| 102 if (idx == TRACE_CONTEXT_MAX) \ |
| 103 return; |
| 104 |
| 105 #define TRACE_FUNCNAME(idx) va_TraceMsg(idx, "==========%s\n", __func__); |
| 106 |
| 107 /* Prototype declarations (functions defined in va.c) */ |
| 108 |
| 109 void va_errorMessage(const char *msg, ...); |
| 110 void va_infoMessage(const char *msg, ...); |
| 111 |
| 112 int va_parseConfig(char *env, char *env_value); |
| 113 |
| 114 VAStatus vaBufferInfo( |
| 115 VADisplay dpy, |
| 116 VAContextID context, /* in */ |
| 117 VABufferID buf_id, /* in */ |
| 118 VABufferType *type, /* out */ |
| 119 unsigned int *size, /* out */ |
| 120 unsigned int *num_elements /* out */ |
| 121 ); |
| 122 |
| 123 VAStatus vaLockSurface(VADisplay dpy, |
| 124 VASurfaceID surface, |
| 125 unsigned int *fourcc, /* following are output argument */ |
| 126 unsigned int *luma_stride, |
| 127 unsigned int *chroma_u_stride, |
| 128 unsigned int *chroma_v_stride, |
| 129 unsigned int *luma_offset, |
| 130 unsigned int *chroma_u_offset, |
| 131 unsigned int *chroma_v_offset, |
| 132 unsigned int *buffer_name, |
| 133 void **buffer |
| 134 ); |
| 135 |
| 136 VAStatus vaUnlockSurface(VADisplay dpy, |
| 137 VASurfaceID surface |
| 138 ); |
| 139 |
| 140 #define FILE_NAME_SUFFIX(env_value) \ |
| 141 do { \ |
| 142 int tmp = strnlen(env_value, sizeof(env_value)); \ |
| 143 int left = sizeof(env_value) - tmp; \ |
| 144 \ |
| 145 snprintf(env_value+tmp, \ |
| 146 left, \ |
| 147 ".%04d.%05d", \ |
| 148 trace_index, \ |
| 149 suffix); \ |
| 150 } while (0) |
| 151 |
| 152 void va_TraceInit(VADisplay dpy) |
| 153 { |
| 154 char env_value[1024]; |
| 155 unsigned short suffix = 0xffff & ((unsigned int)time(NULL)); |
| 156 int trace_index = 0; |
| 157 FILE *tmp; |
| 158 |
| 159 for (trace_index = 0; trace_index < TRACE_CONTEXT_MAX; trace_index++) |
| 160 if (trace_context[trace_index].dpy == 0) |
| 161 break; |
| 162 |
| 163 if (trace_index == TRACE_CONTEXT_MAX) |
| 164 return; |
| 165 |
| 166 memset(&trace_context[trace_index], 0, sizeof(struct _trace_context)); |
| 167 if (va_parseConfig("LIBVA_TRACE", &env_value[0]) == 0) { |
| 168 FILE_NAME_SUFFIX(env_value); |
| 169 trace_context[trace_index].trace_log_fn = strdup(env_value); |
| 170 |
| 171 tmp = fopen(env_value, "w"); |
| 172 if (tmp) { |
| 173 trace_context[trace_index].trace_fp_log = tmp; |
| 174 va_infoMessage("LIBVA_TRACE is on, save log into %s\n", trace_contex
t[trace_index].trace_log_fn); |
| 175 trace_flag = VA_TRACE_FLAG_LOG; |
| 176 } else |
| 177 va_errorMessage("Open file %s failed (%s)\n", env_value, strerror(er
rno)); |
| 178 } |
| 179 |
| 180 /* may re-get the global settings for multiple context */ |
| 181 if (va_parseConfig("LIBVA_TRACE_LOGSIZE", &env_value[0]) == 0) { |
| 182 trace_logsize = atoi(env_value); |
| 183 va_infoMessage("LIBVA_TRACE_LOGSIZE is on, size is %d\n", trace_logsize)
; |
| 184 } |
| 185 |
| 186 if ((trace_flag & VA_TRACE_FLAG_LOG) && (va_parseConfig("LIBVA_TRACE_BUFDATA
", NULL) == 0)) { |
| 187 trace_flag |= VA_TRACE_FLAG_BUFDATA; |
| 188 va_infoMessage("LIBVA_TRACE_BUFDATA is on, dump buffer into log file\n")
; |
| 189 } |
| 190 |
| 191 /* per-context setting */ |
| 192 if (va_parseConfig("LIBVA_TRACE_CODEDBUF", &env_value[0]) == 0) { |
| 193 FILE_NAME_SUFFIX(env_value); |
| 194 trace_context[trace_index].trace_codedbuf_fn = strdup(env_value); |
| 195 va_infoMessage("LIBVA_TRACE_CODEDBUF is on, save codedbuf into log file
%s\n", |
| 196 trace_context[trace_index].trace_codedbuf_fn); |
| 197 trace_flag |= VA_TRACE_FLAG_CODEDBUF; |
| 198 } |
| 199 |
| 200 if (va_parseConfig("LIBVA_TRACE_SURFACE", &env_value[0]) == 0) { |
| 201 FILE_NAME_SUFFIX(env_value); |
| 202 trace_context[trace_index].trace_surface_fn = strdup(env_value); |
| 203 |
| 204 va_infoMessage("LIBVA_TRACE_SURFACE is on, save surface into %s\n", |
| 205 trace_context[trace_index].trace_surface_fn); |
| 206 |
| 207 /* for surface data dump, it is time-consume, and may |
| 208 * cause some side-effect, so only trace the needed surfaces |
| 209 * to trace encode surface, set the trace file name to sth like *enc* |
| 210 * to trace decode surface, set the trace file name to sth like *dec* |
| 211 * if no dec/enc in file name, set both |
| 212 */ |
| 213 if (strstr(env_value, "dec")) |
| 214 trace_flag |= VA_TRACE_FLAG_SURFACE_DECODE; |
| 215 if (strstr(env_value, "enc")) |
| 216 trace_flag |= VA_TRACE_FLAG_SURFACE_ENCODE; |
| 217 if (strstr(env_value, "jpeg") || strstr(env_value, "jpg")) |
| 218 trace_flag |= VA_TRACE_FLAG_SURFACE_JPEG; |
| 219 } |
| 220 |
| 221 trace_context[trace_index].dpy = dpy; |
| 222 } |
| 223 |
| 224 |
| 225 void va_TraceEnd(VADisplay dpy) |
| 226 { |
| 227 DPY2INDEX(dpy); |
| 228 |
| 229 if (trace_context[idx].trace_fp_log) |
| 230 fclose(trace_context[idx].trace_fp_log); |
| 231 |
| 232 if (trace_context[idx].trace_fp_codedbuf) |
| 233 fclose(trace_context[idx].trace_fp_codedbuf); |
| 234 |
| 235 if (trace_context[idx].trace_fp_surface) |
| 236 fclose(trace_context[idx].trace_fp_surface); |
| 237 |
| 238 if (trace_context[idx].trace_log_fn) |
| 239 free(trace_context[idx].trace_log_fn); |
| 240 |
| 241 if (trace_context[idx].trace_codedbuf_fn) |
| 242 free(trace_context[idx].trace_codedbuf_fn); |
| 243 |
| 244 if (trace_context[idx].trace_surface_fn) |
| 245 free(trace_context[idx].trace_surface_fn); |
| 246 |
| 247 memset(&trace_context[idx], 0, sizeof(struct _trace_context)); |
| 248 } |
| 249 |
| 250 |
| 251 static unsigned int file_size(FILE *fp) |
| 252 { |
| 253 struct stat buf; |
| 254 |
| 255 fstat(fileno(fp), &buf); |
| 256 |
| 257 return buf.st_size; |
| 258 } |
| 259 |
| 260 |
| 261 static void truncate_file(FILE *fp) |
| 262 { |
| 263 ftruncate(fileno(fp), 0); |
| 264 rewind(fp); |
| 265 } |
| 266 |
| 267 void va_TraceMsg(int idx, const char *msg, ...) |
| 268 { |
| 269 va_list args; |
| 270 |
| 271 if (!(trace_flag & VA_TRACE_FLAG_LOG)) |
| 272 return; |
| 273 |
| 274 if (file_size(trace_context[idx].trace_fp_log) >= trace_logsize) |
| 275 truncate_file(trace_context[idx].trace_fp_log); |
| 276 if (msg) { |
| 277 va_start(args, msg); |
| 278 vfprintf(trace_context[idx].trace_fp_log, msg, args); |
| 279 va_end(args); |
| 280 } else |
| 281 fflush(trace_context[idx].trace_fp_log); |
| 282 } |
| 283 |
| 284 void va_TraceCodedBuf(VADisplay dpy) |
| 285 { |
| 286 VACodedBufferSegment *buf_list = NULL; |
| 287 VAStatus va_status; |
| 288 unsigned char check_sum = 0; |
| 289 DPY2INDEX(dpy); |
| 290 |
| 291 /* can only truncate at a sequence boudary */ |
| 292 if (((file_size(trace_context[idx].trace_fp_log) >= trace_logsize)) |
| 293 && trace_context[idx].trace_sequence_start) { |
| 294 va_TraceMsg(idx, "==========truncate file %s\n", trace_context[idx].trac
e_codedbuf_fn); |
| 295 truncate_file(trace_context[idx].trace_fp_log); |
| 296 } |
| 297 |
| 298 |
| 299 trace_context[idx].trace_sequence_start = 0; /* only truncate coded file whe
n meet next new sequence */ |
| 300 |
| 301 va_status = vaMapBuffer(dpy, trace_context[idx].trace_codedbuf, (void **)(&b
uf_list)); |
| 302 if (va_status != VA_STATUS_SUCCESS) |
| 303 return; |
| 304 |
| 305 va_TraceMsg(idx, "==========dump codedbuf into file %s\n", trace_context[idx
].trace_codedbuf_fn); |
| 306 |
| 307 while (buf_list != NULL) { |
| 308 unsigned int i; |
| 309 |
| 310 va_TraceMsg(idx, "\tsize = %d\n", buf_list->size); |
| 311 if (trace_context[idx].trace_fp_log) |
| 312 fwrite(buf_list->buf, buf_list->size, 1, trace_context[idx].trace_fp
_codedbuf); |
| 313 |
| 314 for (i=0; i<buf_list->size; i++) |
| 315 check_sum ^= *((unsigned char *)buf_list->buf + i); |
| 316 |
| 317 buf_list = buf_list->next; |
| 318 } |
| 319 vaUnmapBuffer(dpy,trace_context[idx].trace_codedbuf); |
| 320 |
| 321 va_TraceMsg(idx, "\tchecksum = 0x%02x\n", check_sum); |
| 322 va_TraceMsg(idx, NULL); |
| 323 } |
| 324 |
| 325 |
| 326 void va_TraceSurface(VADisplay dpy) |
| 327 { |
| 328 unsigned int i, j; |
| 329 unsigned int fourcc; /* following are output argument */ |
| 330 unsigned int luma_stride; |
| 331 unsigned int chroma_u_stride; |
| 332 unsigned int chroma_v_stride; |
| 333 unsigned int luma_offset; |
| 334 unsigned int chroma_u_offset; |
| 335 unsigned int chroma_v_offset; |
| 336 unsigned int buffer_name; |
| 337 void *buffer = NULL; |
| 338 unsigned char *Y_data, *UV_data, *tmp; |
| 339 VAStatus va_status; |
| 340 unsigned char check_sum = 0; |
| 341 DPY2INDEX(dpy); |
| 342 |
| 343 va_TraceMsg(idx, "==========dump surface data in file %s\n", trace_context[i
dx].trace_surface_fn); |
| 344 |
| 345 if ((file_size(trace_context[idx].trace_fp_surface) >= trace_logsize)) { |
| 346 va_TraceMsg(idx, "==========truncate file %s\n", trace_context[idx].trac
e_surface_fn); |
| 347 truncate_file(trace_context[idx].trace_fp_surface); |
| 348 } |
| 349 va_TraceMsg(idx, NULL); |
| 350 |
| 351 va_status = vaLockSurface( |
| 352 dpy, |
| 353 trace_context[idx].trace_rendertarget, |
| 354 &fourcc, |
| 355 &luma_stride, &chroma_u_stride, &chroma_v_stride, |
| 356 &luma_offset, &chroma_u_offset, &chroma_v_offset, |
| 357 &buffer_name, &buffer); |
| 358 |
| 359 if (va_status != VA_STATUS_SUCCESS) { |
| 360 va_TraceMsg(idx, "Error:vaLockSurface failed\n"); |
| 361 return; |
| 362 } |
| 363 |
| 364 va_TraceMsg(idx, "\tfourcc = 0x%08x\n", fourcc); |
| 365 va_TraceMsg(idx, "\twidth = %d\n", trace_context[idx].trace_frame_width); |
| 366 va_TraceMsg(idx, "\theight = %d\n", trace_context[idx].trace_frame_height); |
| 367 va_TraceMsg(idx, "\tluma_stride = %d\n", luma_stride); |
| 368 va_TraceMsg(idx, "\tchroma_u_stride = %d\n", chroma_u_stride); |
| 369 va_TraceMsg(idx, "\tchroma_v_stride = %d\n", chroma_v_stride); |
| 370 va_TraceMsg(idx, "\tluma_offset = %d\n", luma_offset); |
| 371 va_TraceMsg(idx, "\tchroma_u_offset = %d\n", chroma_u_offset); |
| 372 va_TraceMsg(idx, "\tchroma_v_offset = %d\n", chroma_v_offset); |
| 373 |
| 374 if (buffer == NULL) { |
| 375 va_TraceMsg(idx, "Error:vaLockSurface return NULL buffer\n"); |
| 376 va_TraceMsg(idx, NULL); |
| 377 |
| 378 vaUnlockSurface(dpy, trace_context[idx].trace_rendertarget); |
| 379 return; |
| 380 } |
| 381 va_TraceMsg(idx, "\tbuffer location = 0x%08x\n", buffer); |
| 382 va_TraceMsg(idx, NULL); |
| 383 |
| 384 Y_data = (unsigned char*)buffer; |
| 385 UV_data = (unsigned char*)buffer + chroma_u_offset; |
| 386 |
| 387 tmp = Y_data; |
| 388 for (i=0; i<trace_context[idx].trace_frame_height; i++) { |
| 389 if (trace_context[idx].trace_fp_surface) |
| 390 fwrite(tmp, trace_context[idx].trace_frame_width, 1, trace_context[i
dx].trace_fp_surface); |
| 391 |
| 392 tmp = Y_data + i * luma_stride; |
| 393 } |
| 394 tmp = UV_data; |
| 395 if (fourcc == VA_FOURCC_NV12) { |
| 396 for (i=0; i<trace_context[idx].trace_frame_height/2; i++) { |
| 397 if (trace_context[idx].trace_fp_surface) |
| 398 fwrite(tmp, trace_context[idx].trace_frame_width, 1, trace_conte
xt[idx].trace_fp_surface); |
| 399 |
| 400 tmp = UV_data + i * chroma_u_stride; |
| 401 } |
| 402 } |
| 403 |
| 404 vaUnlockSurface(dpy, trace_context[idx].trace_rendertarget); |
| 405 |
| 406 va_TraceMsg(idx, NULL); |
| 407 } |
| 408 |
| 409 |
| 410 void va_TraceInitialize ( |
| 411 VADisplay dpy, |
| 412 int *major_version, /* out */ |
| 413 int *minor_version /* out */ |
| 414 ) |
| 415 { |
| 416 DPY2INDEX(dpy); |
| 417 TRACE_FUNCNAME(idx); |
| 418 } |
| 419 |
| 420 void va_TraceTerminate ( |
| 421 VADisplay dpy |
| 422 ) |
| 423 { |
| 424 DPY2INDEX(dpy); |
| 425 TRACE_FUNCNAME(idx); |
| 426 } |
| 427 |
| 428 |
| 429 void va_TraceCreateConfig( |
| 430 VADisplay dpy, |
| 431 VAProfile profile, |
| 432 VAEntrypoint entrypoint, |
| 433 VAConfigAttrib *attrib_list, |
| 434 int num_attribs, |
| 435 VAConfigID *config_id /* out */ |
| 436 ) |
| 437 { |
| 438 int i; |
| 439 int encode, decode, jpeg; |
| 440 DPY2INDEX(dpy); |
| 441 |
| 442 TRACE_FUNCNAME(idx); |
| 443 |
| 444 va_TraceMsg(idx, "\tprofile = %d\n", profile); |
| 445 va_TraceMsg(idx, "\tentrypoint = %d\n", entrypoint); |
| 446 va_TraceMsg(idx, "\tnum_attribs = %d\n", num_attribs); |
| 447 for (i = 0; i < num_attribs; i++) { |
| 448 va_TraceMsg(idx, "\t\tattrib_list[%d].type = 0x%08x\n", i, attrib_list[i
].type); |
| 449 va_TraceMsg(idx, "\t\tattrib_list[%d].value = 0x%08x\n", i, attrib_list[
i].value); |
| 450 } |
| 451 va_TraceMsg(idx, NULL); |
| 452 |
| 453 trace_context[idx].trace_profile = profile; |
| 454 trace_context[idx].trace_entrypoint = entrypoint; |
| 455 |
| 456 /* avoid to create so many empty files */ |
| 457 encode = (trace_context[idx].trace_entrypoint == VAEntrypointEncSlice); |
| 458 decode = (trace_context[idx].trace_entrypoint == VAEntrypointVLD); |
| 459 jpeg = (trace_context[idx].trace_entrypoint == VAEntrypointEncPicture); |
| 460 if ((encode && (trace_flag & VA_TRACE_FLAG_SURFACE_ENCODE)) || |
| 461 (decode && (trace_flag & VA_TRACE_FLAG_SURFACE_DECODE)) || |
| 462 (jpeg && (trace_flag & VA_TRACE_FLAG_SURFACE_JPEG))) { |
| 463 FILE *tmp = fopen(trace_context[idx].trace_surface_fn, "w"); |
| 464 |
| 465 if (tmp) |
| 466 trace_context[idx].trace_fp_surface = tmp; |
| 467 else { |
| 468 va_errorMessage("Open file %s failed (%s)\n", |
| 469 trace_context[idx].trace_surface_fn, |
| 470 strerror(errno)); |
| 471 trace_context[idx].trace_fp_surface = NULL; |
| 472 trace_flag &= ~(VA_TRACE_FLAG_SURFACE); |
| 473 } |
| 474 } |
| 475 |
| 476 if (encode && (trace_flag & VA_TRACE_FLAG_CODEDBUF)) { |
| 477 FILE *tmp = fopen(trace_context[idx].trace_codedbuf_fn, "w"); |
| 478 |
| 479 if (tmp) |
| 480 trace_context[idx].trace_fp_codedbuf = tmp; |
| 481 else { |
| 482 va_errorMessage("Open file %s failed (%s)\n", |
| 483 trace_context[idx].trace_codedbuf_fn, |
| 484 strerror(errno)); |
| 485 trace_context[idx].trace_fp_codedbuf = NULL; |
| 486 trace_flag &= ~VA_TRACE_FLAG_CODEDBUF; |
| 487 } |
| 488 } |
| 489 } |
| 490 |
| 491 |
| 492 void va_TraceCreateSurface( |
| 493 VADisplay dpy, |
| 494 int width, |
| 495 int height, |
| 496 int format, |
| 497 int num_surfaces, |
| 498 VASurfaceID *surfaces /* out */ |
| 499 ) |
| 500 { |
| 501 int i; |
| 502 DPY2INDEX(dpy); |
| 503 |
| 504 TRACE_FUNCNAME(idx); |
| 505 |
| 506 va_TraceMsg(idx, "\twidth = %d\n", width); |
| 507 va_TraceMsg(idx, "\theight = %d\n", height); |
| 508 va_TraceMsg(idx, "\tformat = %d\n", format); |
| 509 va_TraceMsg(idx, "\tnum_surfaces = %d\n", num_surfaces); |
| 510 |
| 511 for (i = 0; i < num_surfaces; i++) |
| 512 va_TraceMsg(idx, "\t\tsurfaces[%d] = 0x%08x\n", i, surfaces[i]); |
| 513 |
| 514 va_TraceMsg(idx, NULL); |
| 515 } |
| 516 |
| 517 |
| 518 void va_TraceCreateContext( |
| 519 VADisplay dpy, |
| 520 VAConfigID config_id, |
| 521 int picture_width, |
| 522 int picture_height, |
| 523 int flag, |
| 524 VASurfaceID *render_targets, |
| 525 int num_render_targets, |
| 526 VAContextID *context /* out */ |
| 527 ) |
| 528 { |
| 529 int i; |
| 530 DPY2INDEX(dpy); |
| 531 |
| 532 TRACE_FUNCNAME(idx); |
| 533 |
| 534 va_TraceMsg(idx, "\twidth = %d\n", picture_width); |
| 535 va_TraceMsg(idx, "\theight = %d\n", picture_height); |
| 536 va_TraceMsg(idx, "\tflag = 0x%08x\n", flag); |
| 537 va_TraceMsg(idx, "\tnum_render_targets = %d\n", num_render_targets); |
| 538 for (i=0; i<num_render_targets; i++) |
| 539 va_TraceMsg(idx, "\t\trender_targets[%d] = 0x%08x\n", i, render_targets[
i]); |
| 540 va_TraceMsg(idx, "\tcontext = 0x%08x\n", *context); |
| 541 va_TraceMsg(idx, NULL); |
| 542 |
| 543 trace_context[idx].trace_context = *context; |
| 544 |
| 545 trace_context[idx].trace_frame_no = 0; |
| 546 trace_context[idx].trace_slice_no = 0; |
| 547 |
| 548 trace_context[idx].trace_frame_width = picture_width; |
| 549 trace_context[idx].trace_frame_height = picture_height; |
| 550 } |
| 551 |
| 552 |
| 553 static char * buffer_type_to_string(int type) |
| 554 { |
| 555 switch (type) { |
| 556 case VAPictureParameterBufferType: return "VAPictureParameterBufferType"; |
| 557 case VAIQMatrixBufferType: return "VAIQMatrixBufferType"; |
| 558 case VABitPlaneBufferType: return "VABitPlaneBufferType"; |
| 559 case VASliceGroupMapBufferType: return "VASliceGroupMapBufferType"; |
| 560 case VASliceParameterBufferType: return "VASliceParameterBufferType"; |
| 561 case VASliceDataBufferType: return "VASliceDataBufferType"; |
| 562 case VAProtectedSliceDataBufferType: return "VAProtectedSliceDataBufferType"
; |
| 563 case VAMacroblockParameterBufferType: return "VAMacroblockParameterBufferTyp
e"; |
| 564 case VAResidualDataBufferType: return "VAResidualDataBufferType"; |
| 565 case VADeblockingParameterBufferType: return "VADeblockingParameterBufferTyp
e"; |
| 566 case VAImageBufferType: return "VAImageBufferType"; |
| 567 case VAEncCodedBufferType: return "VAEncCodedBufferType"; |
| 568 case VAEncSequenceParameterBufferType: return "VAEncSequenceParameterBufferT
ype"; |
| 569 case VAEncPictureParameterBufferType: return "VAEncPictureParameterBufferTyp
e"; |
| 570 case VAEncSliceParameterBufferType: return "VAEncSliceParameterBufferType"; |
| 571 case VAEncMiscParameterBufferType: return "VAEncMiscParameterBufferType"; |
| 572 default: return "UnknowBuffer"; |
| 573 } |
| 574 } |
| 575 |
| 576 void va_TraceMapBuffer ( |
| 577 VADisplay dpy, |
| 578 VABufferID buf_id, /* in */ |
| 579 void **pbuf /* out */ |
| 580 ) |
| 581 { |
| 582 VABufferType type; |
| 583 unsigned int size; |
| 584 unsigned int num_elements; |
| 585 |
| 586 VACodedBufferSegment *buf_list; |
| 587 int i = 0; |
| 588 |
| 589 DPY2INDEX(dpy); |
| 590 |
| 591 vaBufferInfo(dpy, trace_context[idx].trace_context, buf_id, &type, &size, &n
um_elements); |
| 592 /* |
| 593 va_TraceMsg(idx, "\tbuf_id=0x%x\n", buf_id); |
| 594 va_TraceMsg(idx, "\tbuf_type=%s\n", buffer_type_to_string(type)); |
| 595 va_TraceMsg(idx, "\tbuf_size=%s\n", size); |
| 596 va_TraceMsg(idx, "\tbuf_elements=%s\n", &num_elements); |
| 597 */ |
| 598 |
| 599 /* only trace CodedBuffer */ |
| 600 if (type != VAEncCodedBufferType) |
| 601 return; |
| 602 |
| 603 buf_list = (VACodedBufferSegment *)(*pbuf); |
| 604 while (buf_list != NULL) { |
| 605 va_TraceMsg(idx, "\tCodedbuf[%d] =\n", i++); |
| 606 |
| 607 va_TraceMsg(idx, "\t size = %d\n", buf_list->size); |
| 608 va_TraceMsg(idx, "\t bit_offset = %d\n", buf_list->bit_offset); |
| 609 va_TraceMsg(idx, "\t status = 0x%08x\n", buf_list->status); |
| 610 va_TraceMsg(idx, "\t reserved = 0x%08x\n", buf_list->reserved); |
| 611 va_TraceMsg(idx, "\t buf = 0x%08x\n", buf_list->buf); |
| 612 |
| 613 buf_list = buf_list->next; |
| 614 } |
| 615 va_TraceMsg(idx, NULL); |
| 616 } |
| 617 |
| 618 static void va_TraceVABuffers( |
| 619 VADisplay dpy, |
| 620 VAContextID context, |
| 621 VABufferID buffer, |
| 622 VABufferType type, |
| 623 unsigned int size, |
| 624 unsigned int num_elements, |
| 625 void *pbuf |
| 626 ) |
| 627 { |
| 628 unsigned int i; |
| 629 unsigned char *p = pbuf; |
| 630 unsigned char check_sum = 0; |
| 631 DPY2INDEX(dpy); |
| 632 |
| 633 va_TraceMsg(idx, "%s\n", buffer_type_to_string(type)); |
| 634 |
| 635 for (i=0; i<size; i++) { |
| 636 unsigned char value = p[i]; |
| 637 |
| 638 if ((trace_flag & VA_TRACE_FLAG_BUFDATA) && ((i%16) == 0)) |
| 639 va_TraceMsg(idx, "\n0x%08x:", i); |
| 640 |
| 641 if (trace_flag & VA_TRACE_FLAG_BUFDATA) |
| 642 va_TraceMsg(idx, " %02x", value); |
| 643 |
| 644 check_sum ^= value; |
| 645 } |
| 646 |
| 647 va_TraceMsg(idx, "\tchecksum = 0x%02x\n", check_sum & 0xff); |
| 648 va_TraceMsg(idx, NULL); |
| 649 |
| 650 return; |
| 651 } |
| 652 |
| 653 |
| 654 static void va_TraceVAPictureParameterBufferMPEG2( |
| 655 VADisplay dpy, |
| 656 VAContextID context, |
| 657 VABufferID buffer, |
| 658 VABufferType type, |
| 659 unsigned int size, |
| 660 unsigned int num_elements, |
| 661 void *data) |
| 662 { |
| 663 VAPictureParameterBufferMPEG2 *p=(VAPictureParameterBufferMPEG2 *)data; |
| 664 DPY2INDEX(dpy); |
| 665 |
| 666 va_TraceMsg(idx,"VAPictureParameterBufferMPEG2\n"); |
| 667 |
| 668 va_TraceMsg(idx,"\thorizontal size= %d\n", p->horizontal_size); |
| 669 va_TraceMsg(idx,"\tvertical size= %d\n", p->vertical_size); |
| 670 va_TraceMsg(idx,"\tforward reference picture= %d\n", p->forward_reference_pi
cture); |
| 671 va_TraceMsg(idx,"\tbackward reference picture= %d\n", p->backward_reference_
picture); |
| 672 va_TraceMsg(idx,"\tpicture coding type= %d\n", p->picture_coding_type); |
| 673 va_TraceMsg(idx,"\tf mode= %d\n", p->f_code); |
| 674 |
| 675 va_TraceMsg(idx,"\tpicture coding extension = %d\n", p->picture_coding_exten
sion.value); |
| 676 va_TraceMsg(idx,"\tintra_dc_precision= %d\n", p->picture_coding_extension.bi
ts.intra_dc_precision); |
| 677 va_TraceMsg(idx,"\tpicture_structure= %d\n", p->picture_coding_extension.bit
s.picture_structure); |
| 678 va_TraceMsg(idx,"\ttop_field_first= %d\n", p->picture_coding_extension.bits.
top_field_first); |
| 679 va_TraceMsg(idx,"\tframe_pred_frame_dct= %d\n", p->picture_coding_extension.
bits.frame_pred_frame_dct); |
| 680 va_TraceMsg(idx,"\tconcealment_motion_vectors= %d\n", p->picture_coding_exte
nsion.bits.concealment_motion_vectors); |
| 681 va_TraceMsg(idx,"\tq_scale_type= %d\n", p->picture_coding_extension.bits.q_s
cale_type); |
| 682 va_TraceMsg(idx,"\tintra_vlc_format= %d\n", p->picture_coding_extension.bits
.intra_vlc_format); |
| 683 va_TraceMsg(idx,"\talternate_scan= %d\n", p->picture_coding_extension.bits.a
lternate_scan); |
| 684 va_TraceMsg(idx,"\trepeat_first_field= %d\n", p->picture_coding_extension.bi
ts.repeat_first_field); |
| 685 va_TraceMsg(idx,"\tprogressive_frame= %d\n", p->picture_coding_extension.bit
s.progressive_frame); |
| 686 va_TraceMsg(idx,"\tis_first_field= %d\n", p->picture_coding_extension.bits.i
s_first_field); |
| 687 va_TraceMsg(idx, NULL); |
| 688 |
| 689 return; |
| 690 } |
| 691 |
| 692 |
| 693 static void va_TraceVAIQMatrixBufferMPEG2( |
| 694 VADisplay dpy, |
| 695 VAContextID context, |
| 696 VABufferID buffer, |
| 697 VABufferType type, |
| 698 unsigned int size, |
| 699 unsigned int num_elements, |
| 700 void *data) |
| 701 { |
| 702 VAIQMatrixBufferMPEG2 *p=(VAIQMatrixBufferMPEG2 *)data; |
| 703 DPY2INDEX(dpy); |
| 704 |
| 705 va_TraceMsg(idx,"VAIQMatrixBufferMPEG2\n"); |
| 706 |
| 707 va_TraceMsg(idx,"\tload_intra_quantiser_matrix = %d\n", p->load_intra_quanti
ser_matrix); |
| 708 va_TraceMsg(idx,"\tload_non_intra_quantiser_matrix = %d\n", p->load_non_intr
a_quantiser_matrix); |
| 709 va_TraceMsg(idx,"\tload_chroma_intra_quantiser_matrix = %d\n", p->load_chrom
a_intra_quantiser_matrix); |
| 710 va_TraceMsg(idx,"\tload_chroma_non_intra_quantiser_matrix = %d\n", p->load_c
hroma_non_intra_quantiser_matrix); |
| 711 va_TraceMsg(idx,"\tintra_quantiser_matrix = %d\n", p->intra_quantiser_matrix
); |
| 712 va_TraceMsg(idx,"\tnon_intra_quantiser_matrix = %d\n", p->non_intra_quantise
r_matrix); |
| 713 va_TraceMsg(idx,"\tchroma_intra_quantiser_matrix = %d\n", p->chroma_intra_qu
antiser_matrix); |
| 714 va_TraceMsg(idx,"\tchroma_non_intra_quantiser_matrix = %d\n", p->chroma_non_
intra_quantiser_matrix); |
| 715 va_TraceMsg(idx, NULL); |
| 716 |
| 717 return; |
| 718 } |
| 719 |
| 720 |
| 721 static void va_TraceVASliceParameterBufferMPEG2( |
| 722 VADisplay dpy, |
| 723 VAContextID context, |
| 724 VABufferID buffer, |
| 725 VABufferType type, |
| 726 unsigned int size, |
| 727 unsigned int num_elements, |
| 728 void *data) |
| 729 { |
| 730 VASliceParameterBufferMPEG2 *p=(VASliceParameterBufferMPEG2 *)data; |
| 731 |
| 732 DPY2INDEX(dpy); |
| 733 |
| 734 trace_context[idx].trace_slice_no++; |
| 735 |
| 736 trace_context[idx].trace_slice_size = p->slice_data_size; |
| 737 |
| 738 va_TraceMsg(idx,"VASliceParameterBufferMPEG2\n"); |
| 739 |
| 740 va_TraceMsg(idx,"\tslice_data_size = %d\n", p->slice_data_size); |
| 741 va_TraceMsg(idx,"\tslice_data_offset = %d\n", p->slice_data_offset); |
| 742 va_TraceMsg(idx,"\tslice_data_flag = %d\n", p->slice_data_flag); |
| 743 va_TraceMsg(idx,"\tmacroblock_offset = %d\n", p->macroblock_offset); |
| 744 va_TraceMsg(idx,"\tslice_horizontal_position = %d\n", p->slice_horizontal_po
sition); |
| 745 va_TraceMsg(idx,"\tslice_vertical_position = %d\n", p->slice_vertical_positi
on); |
| 746 va_TraceMsg(idx,"\tquantiser_scale_code = %d\n", p->quantiser_scale_code); |
| 747 va_TraceMsg(idx,"\tintra_slice_flag = %d\n", p->intra_slice_flag); |
| 748 va_TraceMsg(idx, NULL); |
| 749 |
| 750 return; |
| 751 } |
| 752 |
| 753 |
| 754 static void va_TraceVAPictureParameterBufferMPEG4( |
| 755 VADisplay dpy, |
| 756 VAContextID context, |
| 757 VABufferID buffer, |
| 758 VABufferType type, |
| 759 unsigned int size, |
| 760 unsigned int num_elements, |
| 761 void *data) |
| 762 { |
| 763 int i; |
| 764 VAPictureParameterBufferMPEG4 *p=(VAPictureParameterBufferMPEG4 *)data; |
| 765 |
| 766 DPY2INDEX(dpy); |
| 767 |
| 768 va_TraceMsg(idx,"*VAPictureParameterBufferMPEG4\n"); |
| 769 va_TraceMsg(idx,"\tvop_width = %d\n", p->vop_width); |
| 770 va_TraceMsg(idx,"\tvop_height = %d\n", p->vop_height); |
| 771 va_TraceMsg(idx,"\tforward_reference_picture = %d\n", p->forward_reference_p
icture); |
| 772 va_TraceMsg(idx,"\tbackward_reference_picture = %d\n", p->backward_reference
_picture); |
| 773 va_TraceMsg(idx,"\tvol_fields value = %d\n", p->vol_fields.value); |
| 774 va_TraceMsg(idx,"\tshort_video_header= %d\n", p->vol_fields.bits.short_video
_header); |
| 775 va_TraceMsg(idx,"\tchroma_format= %d\n", p->vol_fields.bits.chroma_format); |
| 776 va_TraceMsg(idx,"\tinterlaced= %d\n", p->vol_fields.bits.interlaced); |
| 777 va_TraceMsg(idx,"\tobmc_disable= %d\n", p->vol_fields.bits.obmc_disable); |
| 778 va_TraceMsg(idx,"\tsprite_enable= %d\n", p->vol_fields.bits.sprite_enable); |
| 779 va_TraceMsg(idx,"\tsprite_warping_accuracy= %d\n", p->vol_fields.bits.sprite
_warping_accuracy); |
| 780 va_TraceMsg(idx,"\tquant_type= %d\n", p->vol_fields.bits.quant_type); |
| 781 va_TraceMsg(idx,"\tquarter_sample= %d\n", p->vol_fields.bits.quarter_sample)
; |
| 782 va_TraceMsg(idx,"\tdata_partitioned= %d\n", p->vol_fields.bits.data_partitio
ned); |
| 783 va_TraceMsg(idx,"\treversible_vlc= %d\n", p->vol_fields.bits.reversible_vlc)
; |
| 784 va_TraceMsg(idx,"\tresync_marker_disable= %d\n", p->vol_fields.bits.resync_m
arker_disable); |
| 785 va_TraceMsg(idx,"\tno_of_sprite_warping_points = %d\n", p->no_of_sprite_warp
ing_points); |
| 786 va_TraceMsg(idx,"\tsprite_trajectory_du ="); |
| 787 for(i=0;i<3;i++) |
| 788 va_TraceMsg(idx,"\t%d", p->sprite_trajectory_du[i]); |
| 789 |
| 790 va_TraceMsg(idx,"\n"); |
| 791 va_TraceMsg(idx,"\tsprite_trajectory_dv ="); |
| 792 for(i=0;i<3;i++) |
| 793 va_TraceMsg(idx,"\t%d", p->sprite_trajectory_dv[i]); |
| 794 va_TraceMsg(idx,"\n"); |
| 795 va_TraceMsg(idx,"\tvop_fields value = %d\n", p->vop_fields.value); |
| 796 va_TraceMsg(idx,"\tvop_coding_type= %d\n", p->vop_fields.bits.vop_coding_typ
e); |
| 797 va_TraceMsg(idx,"\tbackward_reference_vop_coding_type= %d\n", p->vop_fields.
bits.backward_reference_vop_coding_type); |
| 798 va_TraceMsg(idx,"\tvop_rounding_type= %d\n", p->vop_fields.bits.vop_rounding
_type); |
| 799 va_TraceMsg(idx,"\tintra_dc_vlc_thr= %d\n", p->vop_fields.bits.intra_dc_vlc_
thr); |
| 800 va_TraceMsg(idx,"\ttop_field_first= %d\n", p->vop_fields.bits.top_field_firs
t); |
| 801 va_TraceMsg(idx,"\talternate_vertical_scan_flag= %d\n", p->vop_fields.bits.a
lternate_vertical_scan_flag); |
| 802 va_TraceMsg(idx,"\tvop_fcode_forward = %d\n", p->vop_fcode_forward); |
| 803 va_TraceMsg(idx,"\tvop_fcode_backward = %d\n", p->vop_fcode_backward); |
| 804 va_TraceMsg(idx,"\tnum_gobs_in_vop = %d\n", p->num_gobs_in_vop); |
| 805 va_TraceMsg(idx,"\tnum_macroblocks_in_gob = %d\n", p->num_macroblocks_in_gob
); |
| 806 va_TraceMsg(idx,"\tTRB = %d\n", p->TRB); |
| 807 va_TraceMsg(idx,"\tTRD = %d\n", p->TRD); |
| 808 va_TraceMsg(idx, NULL); |
| 809 |
| 810 return; |
| 811 } |
| 812 |
| 813 |
| 814 static void va_TraceVAIQMatrixBufferMPEG4( |
| 815 VADisplay dpy, |
| 816 VAContextID context, |
| 817 VABufferID buffer, |
| 818 VABufferType type, |
| 819 unsigned int size, |
| 820 unsigned int num_elements, |
| 821 void *data) |
| 822 { |
| 823 int i; |
| 824 VAIQMatrixBufferMPEG4 *p=(VAIQMatrixBufferMPEG4 *)data; |
| 825 DPY2INDEX(dpy); |
| 826 |
| 827 va_TraceMsg(idx,"VAIQMatrixBufferMPEG4\n"); |
| 828 |
| 829 va_TraceMsg(idx,"\tload_intra_quant_mat = %d\n", p->load_intra_quant_mat); |
| 830 va_TraceMsg(idx,"\tload_non_intra_quant_mat = %d\n", p->load_non_intra_quant
_mat); |
| 831 va_TraceMsg(idx,"\tintra_quant_mat =\n"); |
| 832 for(i=0;i<64;i++) |
| 833 va_TraceMsg(idx,"\t\t%d\n", p->intra_quant_mat[i]); |
| 834 |
| 835 va_TraceMsg(idx,"\tnon_intra_quant_mat =\n"); |
| 836 for(i=0;i<64;i++) |
| 837 va_TraceMsg(idx,"\t\t%d\n", p->non_intra_quant_mat[i]); |
| 838 va_TraceMsg(idx, NULL); |
| 839 |
| 840 return; |
| 841 } |
| 842 |
| 843 static void va_TraceVAEncSequenceParameterBufferMPEG4( |
| 844 VADisplay dpy, |
| 845 VAContextID context, |
| 846 VABufferID buffer, |
| 847 VABufferType type, |
| 848 unsigned int size, |
| 849 unsigned int num_elements, |
| 850 void *data) |
| 851 { |
| 852 VAEncSequenceParameterBufferMPEG4 *p = (VAEncSequenceParameterBufferMPEG4 *)
data; |
| 853 DPY2INDEX(dpy); |
| 854 |
| 855 va_TraceMsg(idx, "VAEncSequenceParameterBufferMPEG4\n"); |
| 856 |
| 857 va_TraceMsg(idx, "\tprofile_and_level_indication = %d\n", p->profile_and_lev
el_indication); |
| 858 va_TraceMsg(idx, "\tintra_period = %d\n", p->intra_period); |
| 859 va_TraceMsg(idx, "\tvideo_object_layer_width = %d\n", p->video_object_layer_
width); |
| 860 va_TraceMsg(idx, "\tvideo_object_layer_height = %d\n", p->video_object_layer
_height); |
| 861 va_TraceMsg(idx, "\tvop_time_increment_resolution = %d\n", p->vop_time_incre
ment_resolution); |
| 862 va_TraceMsg(idx, "\tfixed_vop_rate = %d\n", p->fixed_vop_rate); |
| 863 va_TraceMsg(idx, "\tfixed_vop_time_increment = %d\n", p->fixed_vop_time_incr
ement); |
| 864 va_TraceMsg(idx, "\tbits_per_second = %d\n", p->bits_per_second); |
| 865 va_TraceMsg(idx, "\tframe_rate = %d\n", p->frame_rate); |
| 866 va_TraceMsg(idx, "\tinitial_qp = %d\n", p->initial_qp); |
| 867 va_TraceMsg(idx, "\tmin_qp = %d\n", p->min_qp); |
| 868 va_TraceMsg(idx, NULL); |
| 869 |
| 870 /* start a new sequce, coded log file can be truncated */ |
| 871 trace_context[idx].trace_sequence_start = 1; |
| 872 |
| 873 return; |
| 874 } |
| 875 |
| 876 static void va_TraceVAEncPictureParameterBufferMPEG4( |
| 877 VADisplay dpy, |
| 878 VAContextID context, |
| 879 VABufferID buffer, |
| 880 VABufferType type, |
| 881 unsigned int size, |
| 882 unsigned int num_elements, |
| 883 void *data) |
| 884 { |
| 885 VAEncPictureParameterBufferMPEG4 *p = (VAEncPictureParameterBufferMPEG4 *)da
ta; |
| 886 DPY2INDEX(dpy); |
| 887 |
| 888 va_TraceMsg(idx, "VAEncPictureParameterBufferMPEG4\n"); |
| 889 va_TraceMsg(idx, "\treference_picture = 0x%08x\n", p->reference_picture); |
| 890 va_TraceMsg(idx, "\treconstructed_picture = 0x%08x\n", p->reconstructed_pict
ure); |
| 891 va_TraceMsg(idx, "\tcoded_buf = %08x\n", p->coded_buf); |
| 892 va_TraceMsg(idx, "\tpicture_width = %d\n", p->picture_width); |
| 893 va_TraceMsg(idx, "\tpicture_height = %d\n", p->picture_height); |
| 894 va_TraceMsg(idx, "\tmodulo_time_base = %d\n", p->modulo_time_base); |
| 895 va_TraceMsg(idx, "\tvop_time_increment = %d\n", p->vop_time_increment); |
| 896 va_TraceMsg(idx, "\tpicture_type = %d\n", p->picture_type); |
| 897 va_TraceMsg(idx, NULL); |
| 898 |
| 899 trace_context[idx].trace_codedbuf = p->coded_buf; |
| 900 |
| 901 return; |
| 902 } |
| 903 |
| 904 |
| 905 static void va_TraceVASliceParameterBufferMPEG4( |
| 906 VADisplay dpy, |
| 907 VAContextID context, |
| 908 VABufferID buffer, |
| 909 VABufferType type, |
| 910 unsigned int size, |
| 911 unsigned int num_elements, |
| 912 void *data) |
| 913 { |
| 914 VASliceParameterBufferMPEG4 *p=(VASliceParameterBufferMPEG4 *)data; |
| 915 |
| 916 DPY2INDEX(dpy); |
| 917 |
| 918 trace_context[idx].trace_slice_no++; |
| 919 |
| 920 trace_context[idx].trace_slice_size = p->slice_data_size; |
| 921 |
| 922 va_TraceMsg(idx,"VASliceParameterBufferMPEG4\n"); |
| 923 |
| 924 va_TraceMsg(idx,"\tslice_data_size = %d\n", p->slice_data_size); |
| 925 va_TraceMsg(idx,"\tslice_data_offset = %d\n", p->slice_data_offset); |
| 926 va_TraceMsg(idx,"\tslice_data_flag = %d\n", p->slice_data_flag); |
| 927 va_TraceMsg(idx,"\tmacroblock_offset = %d\n", p->macroblock_offset); |
| 928 va_TraceMsg(idx,"\tmacroblock_number = %d\n", p->macroblock_number); |
| 929 va_TraceMsg(idx,"\tquant_scale = %d\n", p->quant_scale); |
| 930 va_TraceMsg(idx, NULL); |
| 931 |
| 932 return; |
| 933 } |
| 934 |
| 935 |
| 936 static inline void va_TraceFlagIfNotZero( |
| 937 int idx, /* in */ |
| 938 const char *name, /* in */ |
| 939 unsigned int flag /* in */ |
| 940 ) |
| 941 { |
| 942 if (flag != 0) { |
| 943 va_TraceMsg(idx, "%s = %x\n", name, flag); |
| 944 } |
| 945 } |
| 946 |
| 947 |
| 948 static void va_TraceVAPictureParameterBufferH264( |
| 949 VADisplay dpy, |
| 950 VAContextID context, |
| 951 VABufferID buffer, |
| 952 VABufferType type, |
| 953 unsigned int size, |
| 954 unsigned int num_elements, |
| 955 void *data) |
| 956 { |
| 957 int i; |
| 958 VAPictureParameterBufferH264 *p = (VAPictureParameterBufferH264*)data; |
| 959 |
| 960 DPY2INDEX(dpy); |
| 961 |
| 962 va_TraceMsg(idx, "VAPictureParameterBufferH264\n"); |
| 963 |
| 964 va_TraceMsg(idx, "\tCurrPic.picture_id = 0x%08x\n", p->CurrPic.picture_id); |
| 965 va_TraceMsg(idx, "\tCurrPic.frame_idx = %d\n", p->CurrPic.frame_idx); |
| 966 va_TraceMsg(idx, "\tCurrPic.flags = %d\n", p->CurrPic.flags); |
| 967 va_TraceMsg(idx, "\tCurrPic.TopFieldOrderCnt = %d\n", p->CurrPic.TopFieldOrd
erCnt); |
| 968 va_TraceMsg(idx, "\tCurrPic.BottomFieldOrderCnt = %d\n", p->CurrPic.BottomFi
eldOrderCnt); |
| 969 |
| 970 va_TraceMsg(idx, "\tReferenceFrames (TopFieldOrderCnt-BottomFieldOrderCnt-pi
cture_id-frame_idx:\n"); |
| 971 for (i = 0; i < 16; i++) |
| 972 { |
| 973 if (p->ReferenceFrames[i].flags != VA_PICTURE_H264_INVALID) { |
| 974 va_TraceMsg(idx, "\t\t%d-%d-0x%08x-%d\n", |
| 975 p->ReferenceFrames[i].TopFieldOrderCnt, |
| 976 p->ReferenceFrames[i].BottomFieldOrderCnt, |
| 977 p->ReferenceFrames[i].picture_id, |
| 978 p->ReferenceFrames[i].frame_idx); |
| 979 } else |
| 980 va_TraceMsg(idx, "\t\tinv-inv-inv-inv\n"); |
| 981 } |
| 982 va_TraceMsg(idx, "\n"); |
| 983 |
| 984 va_TraceMsg(idx, "\tpicture_width_in_mbs_minus1 = %d\n", p->picture_width_in
_mbs_minus1); |
| 985 va_TraceMsg(idx, "\tpicture_height_in_mbs_minus1 = %d\n", p->picture_height_
in_mbs_minus1); |
| 986 va_TraceMsg(idx, "\tbit_depth_luma_minus8 = %d\n", p->bit_depth_luma_minus8)
; |
| 987 va_TraceMsg(idx, "\tbit_depth_chroma_minus8 = %d\n", p->bit_depth_chroma_min
us8); |
| 988 va_TraceMsg(idx, "\tnum_ref_frames = %d\n", p->num_ref_frames); |
| 989 va_TraceMsg(idx, "\tseq fields = %d\n", p->seq_fields.value); |
| 990 va_TraceMsg(idx, "\tchroma_format_idc = %d\n", p->seq_fields.bits.chroma_for
mat_idc); |
| 991 va_TraceMsg(idx, "\tresidual_colour_transform_flag = %d\n", p->seq_fields.bi
ts.residual_colour_transform_flag); |
| 992 va_TraceMsg(idx, "\tframe_mbs_only_flag = %d\n", p->seq_fields.bits.frame_mb
s_only_flag); |
| 993 va_TraceMsg(idx, "\tmb_adaptive_frame_field_flag = %d\n", p->seq_fields.bits
.mb_adaptive_frame_field_flag); |
| 994 va_TraceMsg(idx, "\tdirect_8x8_inference_flag = %d\n", p->seq_fields.bits.di
rect_8x8_inference_flag); |
| 995 va_TraceMsg(idx, "\tMinLumaBiPredSize8x8 = %d\n", p->seq_fields.bits.MinLuma
BiPredSize8x8); |
| 996 va_TraceMsg(idx, "\tnum_slice_groups_minus1 = %d\n", p->num_slice_groups_min
us1); |
| 997 va_TraceMsg(idx, "\tslice_group_map_type = %d\n", p->slice_group_map_type); |
| 998 va_TraceMsg(idx, "\tslice_group_change_rate_minus1 = %d\n", p->slice_group_c
hange_rate_minus1); |
| 999 va_TraceMsg(idx, "\tpic_init_qp_minus26 = %d\n", p->pic_init_qp_minus26); |
| 1000 va_TraceMsg(idx, "\tpic_init_qs_minus26 = %d\n", p->pic_init_qs_minus26); |
| 1001 va_TraceMsg(idx, "\tchroma_qp_index_offset = %d\n", p->chroma_qp_index_offse
t); |
| 1002 va_TraceMsg(idx, "\tsecond_chroma_qp_index_offset = %d\n", p->second_chroma_
qp_index_offset); |
| 1003 va_TraceMsg(idx, "\tpic_fields = 0x%03x\n", p->pic_fields.value); |
| 1004 va_TraceFlagIfNotZero(idx, "\t\tentropy_coding_mode_flag", p->pic_fields.bit
s.entropy_coding_mode_flag); |
| 1005 va_TraceFlagIfNotZero(idx, "\t\tweighted_pred_flag", p->pic_fields.bits.weig
hted_pred_flag); |
| 1006 va_TraceFlagIfNotZero(idx, "\t\tweighted_bipred_idc", p->pic_fields.bits.wei
ghted_bipred_idc); |
| 1007 va_TraceFlagIfNotZero(idx, "\t\ttransform_8x8_mode_flag", p->pic_fields.bits
.transform_8x8_mode_flag); |
| 1008 va_TraceFlagIfNotZero(idx, "\t\tfield_pic_flag", p->pic_fields.bits.field_pi
c_flag); |
| 1009 va_TraceFlagIfNotZero(idx, "\t\tconstrained_intra_pred_flag", p->pic_fields.
bits.constrained_intra_pred_flag); |
| 1010 va_TraceFlagIfNotZero(idx, "\t\tpic_order_present_flag", p->pic_fields.bits.
pic_order_present_flag); |
| 1011 va_TraceFlagIfNotZero(idx, "\t\tdeblocking_filter_control_present_flag", p->
pic_fields.bits.deblocking_filter_control_present_flag); |
| 1012 va_TraceFlagIfNotZero(idx, "\t\tredundant_pic_cnt_present_flag", p->pic_fiel
ds.bits.redundant_pic_cnt_present_flag); |
| 1013 va_TraceFlagIfNotZero(idx, "\t\treference_pic_flag", p->pic_fields.bits.refe
rence_pic_flag); |
| 1014 va_TraceMsg(idx, "\tframe_num = %d\n", p->frame_num); |
| 1015 va_TraceMsg(idx, NULL); |
| 1016 |
| 1017 return; |
| 1018 } |
| 1019 |
| 1020 static void va_TraceVASliceParameterBufferH264( |
| 1021 VADisplay dpy, |
| 1022 VAContextID context, |
| 1023 VABufferID buffer, |
| 1024 VABufferType type, |
| 1025 unsigned int size, |
| 1026 unsigned int num_elements, |
| 1027 void *data) |
| 1028 { |
| 1029 int i; |
| 1030 VASliceParameterBufferH264* p = (VASliceParameterBufferH264*)data; |
| 1031 DPY2INDEX(dpy); |
| 1032 |
| 1033 trace_context[idx].trace_slice_no++; |
| 1034 trace_context[idx].trace_slice_size = p->slice_data_size; |
| 1035 |
| 1036 va_TraceMsg(idx, "VASliceParameterBufferH264\n"); |
| 1037 va_TraceMsg(idx, "\tslice_data_size = %d\n", p->slice_data_size); |
| 1038 va_TraceMsg(idx, "\tslice_data_offset = %d\n", p->slice_data_offset); |
| 1039 va_TraceMsg(idx, "\tslice_data_flag = %d\n", p->slice_data_flag); |
| 1040 va_TraceMsg(idx, "\tslice_data_bit_offset = %d\n", p->slice_data_bit_offset)
; |
| 1041 va_TraceMsg(idx, "\tfirst_mb_in_slice = %d\n", p->first_mb_in_slice); |
| 1042 va_TraceMsg(idx, "\tslice_type = %d\n", p->slice_type); |
| 1043 va_TraceMsg(idx, "\tdirect_spatial_mv_pred_flag = %d\n", p->direct_spatial_m
v_pred_flag); |
| 1044 va_TraceMsg(idx, "\tnum_ref_idx_l0_active_minus1 = %d\n", p->num_ref_idx_l0_
active_minus1); |
| 1045 va_TraceMsg(idx, "\tnum_ref_idx_l1_active_minus1 = %d\n", p->num_ref_idx_l1_
active_minus1); |
| 1046 va_TraceMsg(idx, "\tcabac_init_idc = %d\n", p->cabac_init_idc); |
| 1047 va_TraceMsg(idx, "\tslice_qp_delta = %d\n", p->slice_qp_delta); |
| 1048 va_TraceMsg(idx, "\tdisable_deblocking_filter_idc = %d\n", p->disable_debloc
king_filter_idc); |
| 1049 va_TraceMsg(idx, "\tslice_alpha_c0_offset_div2 = %d\n", p->slice_alpha_c0_of
fset_div2); |
| 1050 va_TraceMsg(idx, "\tslice_beta_offset_div2 = %d\n", p->slice_beta_offset_div
2); |
| 1051 |
| 1052 if (p->slice_type == 0 || p->slice_type == 1) { |
| 1053 va_TraceMsg(idx, "\tRefPicList0 ="); |
| 1054 for (i = 0; i < p->num_ref_idx_l0_active_minus1 + 1; i++) { |
| 1055 va_TraceMsg(idx, "%d-%d-0x%08x-%d\n", p->RefPicList0[i].TopFieldOrde
rCnt, p->RefPicList0[i].BottomFieldOrderCnt, p->RefPicList0[i].picture_id, p->Re
fPicList0[i].frame_idx); |
| 1056 } |
| 1057 if (p->slice_type == 1) { |
| 1058 va_TraceMsg(idx, "\tRefPicList1 ="); |
| 1059 for (i = 0; i < p->num_ref_idx_l1_active_minus1 + 1; i++) |
| 1060 { |
| 1061 va_TraceMsg(idx, "%d-%d-0x%08x-%d\n", p->RefPicList1[i].TopField
OrderCnt, p->RefPicList1[i].BottomFieldOrderCnt, p->RefPicList1[i].picture_id, p
->RefPicList1[i].frame_idx); |
| 1062 } |
| 1063 } |
| 1064 } |
| 1065 |
| 1066 va_TraceMsg(idx, "\tluma_log2_weight_denom = %d\n", p->luma_log2_weight_deno
m); |
| 1067 va_TraceMsg(idx, "\tchroma_log2_weight_denom = %d\n", p->chroma_log2_weight_
denom); |
| 1068 va_TraceMsg(idx, "\tluma_weight_l0_flag = %d\n", p->luma_weight_l0_flag); |
| 1069 if (p->luma_weight_l0_flag) { |
| 1070 for (i = 0; i <= p->num_ref_idx_l0_active_minus1; i++) { |
| 1071 va_TraceMsg(idx, "\t%d ", p->luma_weight_l0[i]); |
| 1072 va_TraceMsg(idx, "\t%d ", p->luma_offset_l0[i]); |
| 1073 } |
| 1074 } |
| 1075 |
| 1076 va_TraceMsg(idx, "\tchroma_weight_l0_flag = %d\n", p->chroma_weight_l0_flag)
; |
| 1077 if (p->chroma_weight_l0_flag) { |
| 1078 for (i = 0; i <= p->num_ref_idx_l0_active_minus1; i++) { |
| 1079 va_TraceMsg(idx, "\t\t%d ", p->chroma_weight_l0[i][0]); |
| 1080 va_TraceMsg(idx, "\t\t%d ", p->chroma_offset_l0[i][0]); |
| 1081 va_TraceMsg(idx, "\t\t%d ", p->chroma_weight_l0[i][1]); |
| 1082 va_TraceMsg(idx, "\t\t%d ", p->chroma_offset_l0[i][1]); |
| 1083 } |
| 1084 } |
| 1085 |
| 1086 va_TraceMsg(idx, "\tluma_weight_l1_flag = %d\n", p->luma_weight_l1_flag); |
| 1087 if (p->luma_weight_l1_flag) { |
| 1088 for (i = 0; i <= p->num_ref_idx_l1_active_minus1; i++) { |
| 1089 va_TraceMsg(idx, "\t\t%d ", p->luma_weight_l1[i]); |
| 1090 va_TraceMsg(idx, "\t\t%d ", p->luma_offset_l1[i]); |
| 1091 } |
| 1092 } |
| 1093 |
| 1094 va_TraceMsg(idx, "\tchroma_weight_l1_flag = %d\n", p->chroma_weight_l1_flag)
; |
| 1095 if (p->chroma_weight_l1_flag) { |
| 1096 for (i = 0; i <= p->num_ref_idx_l1_active_minus1; i++) { |
| 1097 va_TraceMsg(idx, "\t\t%d ", p->chroma_weight_l1[i][0]); |
| 1098 va_TraceMsg(idx, "\t\t%d ", p->chroma_offset_l1[i][0]); |
| 1099 va_TraceMsg(idx, "\t\t%d ", p->chroma_weight_l1[i][1]); |
| 1100 va_TraceMsg(idx, "\t\t%d ", p->chroma_offset_l1[i][1]); |
| 1101 } |
| 1102 va_TraceMsg(idx, "\n"); |
| 1103 } |
| 1104 va_TraceMsg(idx, NULL); |
| 1105 } |
| 1106 |
| 1107 static void va_TraceVAIQMatrixBufferH264( |
| 1108 VADisplay dpy, |
| 1109 VAContextID context, |
| 1110 VABufferID buffer, |
| 1111 VABufferType type, |
| 1112 unsigned int size, |
| 1113 unsigned int num_elements, |
| 1114 void *data |
| 1115 ) |
| 1116 { |
| 1117 int i, j; |
| 1118 VAIQMatrixBufferH264* p = (VAIQMatrixBufferH264* )data; |
| 1119 |
| 1120 DPY2INDEX(dpy); |
| 1121 |
| 1122 va_TraceMsg(idx, "VAIQMatrixBufferH264\n"); |
| 1123 |
| 1124 va_TraceMsg(idx, "\tScalingList4x4[6][16]=\n"); |
| 1125 for (i = 0; i < 6; i++) { |
| 1126 for (j = 0; j < 16; j++) { |
| 1127 va_TraceMsg(idx, "\t%d\t", p->ScalingList4x4[i][j]); |
| 1128 if ((j + 1) % 8 == 0) |
| 1129 va_TraceMsg(idx, "\n"); |
| 1130 } |
| 1131 } |
| 1132 |
| 1133 va_TraceMsg(idx, "\tScalingList8x8[2][64]=\n"); |
| 1134 for (i = 0; i < 2; i++) { |
| 1135 for (j = 0; j < 64; j++) { |
| 1136 va_TraceMsg(idx, "\t%d", p->ScalingList8x8[i][j]); |
| 1137 if ((j + 1) % 8 == 0) |
| 1138 va_TraceMsg(idx, "\n"); |
| 1139 } |
| 1140 } |
| 1141 |
| 1142 va_TraceMsg(idx, NULL); |
| 1143 } |
| 1144 |
| 1145 static void va_TraceVAEncSequenceParameterBufferH264( |
| 1146 VADisplay dpy, |
| 1147 VAContextID context, |
| 1148 VABufferID buffer, |
| 1149 VABufferType type, |
| 1150 unsigned int size, |
| 1151 unsigned int num_elements, |
| 1152 void *data) |
| 1153 { |
| 1154 VAEncSequenceParameterBufferH264 *p = (VAEncSequenceParameterBufferH264 *)da
ta; |
| 1155 DPY2INDEX(dpy); |
| 1156 |
| 1157 va_TraceMsg(idx, "VAEncSequenceParameterBufferH264\n"); |
| 1158 |
| 1159 va_TraceMsg(idx, "\tseq_parameter_set_id = %d\n", p->seq_parameter_set_id); |
| 1160 va_TraceMsg(idx, "\tlevel_idc = %d\n", p->level_idc); |
| 1161 va_TraceMsg(idx, "\tintra_period = %d\n", p->intra_period); |
| 1162 va_TraceMsg(idx, "\tintra_idr_period = %d\n", p->intra_idr_period); |
| 1163 va_TraceMsg(idx, "\tmax_num_ref_frames = %d\n", p->max_num_ref_frames); |
| 1164 va_TraceMsg(idx, "\tpicture_width_in_mbs = %d\n", p->picture_width_in_mbs); |
| 1165 va_TraceMsg(idx, "\tpicture_height_in_mbs = %d\n", p->picture_height_in_mbs)
; |
| 1166 va_TraceMsg(idx, "\tbits_per_second = %d\n", p->bits_per_second); |
| 1167 va_TraceMsg(idx, "\tframe_rate = %d\n", p->frame_rate); |
| 1168 va_TraceMsg(idx, "\tinitial_qp = %d\n", p->initial_qp); |
| 1169 va_TraceMsg(idx, "\tmin_qp = %d\n", p->min_qp); |
| 1170 va_TraceMsg(idx, "\tbasic_unit_size = %d\n", p->basic_unit_size); |
| 1171 va_TraceMsg(idx, "\tvui_flag = %d\n", p->vui_flag); |
| 1172 va_TraceMsg(idx, NULL); |
| 1173 |
| 1174 /* start a new sequce, coded log file can be truncated */ |
| 1175 trace_context[idx].trace_sequence_start = 1; |
| 1176 |
| 1177 return; |
| 1178 } |
| 1179 |
| 1180 static void va_TraceVAEncPictureParameterBufferH264( |
| 1181 VADisplay dpy, |
| 1182 VAContextID context, |
| 1183 VABufferID buffer, |
| 1184 VABufferType type, |
| 1185 unsigned int size, |
| 1186 unsigned int num_elements, |
| 1187 void *data) |
| 1188 { |
| 1189 VAEncPictureParameterBufferH264 *p = (VAEncPictureParameterBufferH264 *)data
; |
| 1190 DPY2INDEX(dpy); |
| 1191 |
| 1192 va_TraceMsg(idx, "VAEncPictureParameterBufferH264\n"); |
| 1193 va_TraceMsg(idx, "\treference_picture = 0x%08x\n", p->reference_picture); |
| 1194 va_TraceMsg(idx, "\treconstructed_picture = 0x%08x\n", p->reconstructed_pict
ure); |
| 1195 va_TraceMsg(idx, "\tcoded_buf = %08x\n", p->coded_buf); |
| 1196 va_TraceMsg(idx, "\tpicture_width = %d\n", p->picture_width); |
| 1197 va_TraceMsg(idx, "\tpicture_height = %d\n", p->picture_height); |
| 1198 va_TraceMsg(idx, "\tlast_picture = 0x%08x\n", p->last_picture); |
| 1199 va_TraceMsg(idx, NULL); |
| 1200 |
| 1201 trace_context[idx].trace_codedbuf = p->coded_buf; |
| 1202 |
| 1203 return; |
| 1204 } |
| 1205 |
| 1206 |
| 1207 static void va_TraceVAEncSliceParameterBuffer( |
| 1208 VADisplay dpy, |
| 1209 VAContextID context, |
| 1210 VABufferID buffer, |
| 1211 VABufferType type, |
| 1212 unsigned int size, |
| 1213 unsigned int num_elements, |
| 1214 void *data) |
| 1215 { |
| 1216 VAEncSliceParameterBuffer* p = (VAEncSliceParameterBuffer*)data; |
| 1217 DPY2INDEX(dpy); |
| 1218 |
| 1219 va_TraceMsg(idx, "VAEncSliceParameterBuffer\n"); |
| 1220 |
| 1221 va_TraceMsg(idx, "\tstart_row_number = %d\n", p->start_row_number); |
| 1222 va_TraceMsg(idx, "\tslice_height = %d\n", p->slice_height); |
| 1223 va_TraceMsg(idx, "\tslice_flags.is_intra = %d\n", p->slice_flags.bits.is_int
ra); |
| 1224 va_TraceMsg(idx, "\tslice_flags.disable_deblocking_filter_idc = %d\n", p->sl
ice_flags.bits.disable_deblocking_filter_idc); |
| 1225 va_TraceMsg(idx, "\tslice_flags.uses_long_term_ref = %d\n", p->slice_flags.b
its.uses_long_term_ref); |
| 1226 va_TraceMsg(idx, "\tslice_flags.is_long_term_ref = %d\n", p->slice_flags.bit
s.is_long_term_ref); |
| 1227 va_TraceMsg(idx, NULL); |
| 1228 |
| 1229 return; |
| 1230 } |
| 1231 |
| 1232 static void va_TraceVAEncMiscParameterBuffer( |
| 1233 VADisplay dpy, |
| 1234 VAContextID context, |
| 1235 VABufferID buffer, |
| 1236 VABufferType type, |
| 1237 unsigned int size, |
| 1238 unsigned int num_elements, |
| 1239 void *data) |
| 1240 { |
| 1241 VAEncMiscParameterBuffer* tmp = (VAEncMiscParameterBuffer*)data; |
| 1242 DPY2INDEX(dpy); |
| 1243 |
| 1244 switch (tmp->type) { |
| 1245 case VAEncMiscParameterTypeFrameRate: |
| 1246 { |
| 1247 VAEncMiscParameterFrameRate *p = (VAEncMiscParameterFrameRate *)tmp->dat
a; |
| 1248 va_TraceMsg(idx, "VAEncMiscParameterFrameRate\n"); |
| 1249 va_TraceMsg(idx, "\tframerate = %d\n", p->framerate); |
| 1250 |
| 1251 break; |
| 1252 } |
| 1253 case VAEncMiscParameterTypeRateControl: |
| 1254 { |
| 1255 VAEncMiscParameterRateControl *p = (VAEncMiscParameterRateControl *)tmp-
>data; |
| 1256 |
| 1257 va_TraceMsg(idx, "VAEncMiscParameterRateControl\n"); |
| 1258 va_TraceMsg(idx, "\tbits_per_second = %d\n", p->bits_per_second); |
| 1259 va_TraceMsg(idx, "\twindow_size = %d\n", p->window_size); |
| 1260 va_TraceMsg(idx, "\tinitial_qp = %d\n", p->initial_qp); |
| 1261 va_TraceMsg(idx, "\tmin_qp = %d\n", p->min_qp); |
| 1262 break; |
| 1263 } |
| 1264 case VAEncMiscParameterTypeMaxSliceSize: |
| 1265 { |
| 1266 VAEncMiscParameterMaxSliceSize *p = (VAEncMiscParameterMaxSliceSize *)tm
p->data; |
| 1267 |
| 1268 va_TraceMsg(idx, "VAEncMiscParameterTypeMaxSliceSize\n"); |
| 1269 va_TraceMsg(idx, "\tmax_slice_size = %d\n", p->max_slice_size); |
| 1270 break; |
| 1271 } |
| 1272 case VAEncMiscParameterTypeAIR: |
| 1273 { |
| 1274 VAEncMiscParameterAIR *p = (VAEncMiscParameterAIR *)tmp->data; |
| 1275 |
| 1276 va_TraceMsg(idx, "VAEncMiscParameterAIR\n"); |
| 1277 va_TraceMsg(idx, "\tair_num_mbs = %d\n", p->air_num_mbs); |
| 1278 va_TraceMsg(idx, "\tair_threshold = %d\n", p->air_threshold); |
| 1279 va_TraceMsg(idx, "\tair_auto = %d\n", p->air_auto); |
| 1280 break; |
| 1281 } |
| 1282 default: |
| 1283 va_TraceMsg(idx, "invalid VAEncMiscParameterBuffer type = %d\n", tmp->ty
pe); |
| 1284 break; |
| 1285 } |
| 1286 va_TraceMsg(idx, NULL); |
| 1287 |
| 1288 return; |
| 1289 } |
| 1290 |
| 1291 |
| 1292 static void va_TraceVAPictureParameterBufferVC1( |
| 1293 VADisplay dpy, |
| 1294 VAContextID context, |
| 1295 VABufferID buffer, |
| 1296 VABufferType type, |
| 1297 unsigned int size, |
| 1298 unsigned int num_elements, |
| 1299 void *data |
| 1300 ) |
| 1301 { |
| 1302 VAPictureParameterBufferVC1* p = (VAPictureParameterBufferVC1*)data; |
| 1303 DPY2INDEX(dpy); |
| 1304 |
| 1305 va_TraceMsg(idx, "VAPictureParameterBufferVC1\n"); |
| 1306 |
| 1307 va_TraceMsg(idx, "\tforward_reference_picture = 0x%08x\n", p->forward_refere
nce_picture); |
| 1308 va_TraceMsg(idx, "\tbackward_reference_picture = 0x%08x\n", p->backward_refe
rence_picture); |
| 1309 va_TraceMsg(idx, "\tinloop_decoded_picture = 0x%08x\n", p->inloop_decoded_pi
cture); |
| 1310 |
| 1311 va_TraceMsg(idx, "\tpulldown = %d\n", p->sequence_fields.bits.pulldown); |
| 1312 va_TraceMsg(idx, "\tinterlace = %d\n", p->sequence_fields.bits.interlace); |
| 1313 va_TraceMsg(idx, "\ttfcntrflag = %d\n", p->sequence_fields.bits.tfcntrflag); |
| 1314 va_TraceMsg(idx, "\tfinterpflag = %d\n", p->sequence_fields.bits.finterpflag
); |
| 1315 va_TraceMsg(idx, "\tpsf = %d\n", p->sequence_fields.bits.psf); |
| 1316 va_TraceMsg(idx, "\tmultires = %d\n", p->sequence_fields.bits.multires); |
| 1317 va_TraceMsg(idx, "\toverlap = %d\n", p->sequence_fields.bits.overlap); |
| 1318 va_TraceMsg(idx, "\tsyncmarker = %d\n", p->sequence_fields.bits.syncmarker); |
| 1319 va_TraceMsg(idx, "\trangered = %d\n", p->sequence_fields.bits.rangered); |
| 1320 va_TraceMsg(idx, "\tmax_b_frames = %d\n", p->sequence_fields.bits.max_b_fram
es); |
| 1321 va_TraceMsg(idx, "\tprofile = %d\n", p->sequence_fields.bits.profile); |
| 1322 va_TraceMsg(idx, "\tcoded_width = %d\n", p->coded_width); |
| 1323 va_TraceMsg(idx, "\tcoded_height = %d\n", p->coded_height); |
| 1324 va_TraceMsg(idx, "\tclosed_entry = %d\n", p->entrypoint_fields.bits.closed_e
ntry); |
| 1325 va_TraceMsg(idx, "\tbroken_link = %d\n", p->entrypoint_fields.bits.broken_li
nk); |
| 1326 va_TraceMsg(idx, "\tclosed_entry = %d\n", p->entrypoint_fields.bits.closed_e
ntry); |
| 1327 va_TraceMsg(idx, "\tpanscan_flag = %d\n", p->entrypoint_fields.bits.panscan_
flag); |
| 1328 va_TraceMsg(idx, "\tloopfilter = %d\n", p->entrypoint_fields.bits.loopfilter
); |
| 1329 va_TraceMsg(idx, "\tconditional_overlap_flag = %d\n", p->conditional_overlap
_flag); |
| 1330 va_TraceMsg(idx, "\tfast_uvmc_flag = %d\n", p->fast_uvmc_flag); |
| 1331 va_TraceMsg(idx, "\trange_mapping_luma_flag = %d\n", p->range_mapping_fields
.bits.luma_flag); |
| 1332 va_TraceMsg(idx, "\trange_mapping_luma = %d\n", p->range_mapping_fields.bits
.luma); |
| 1333 va_TraceMsg(idx, "\trange_mapping_chroma_flag = %d\n", p->range_mapping_fiel
ds.bits.chroma_flag); |
| 1334 va_TraceMsg(idx, "\trange_mapping_chroma = %d\n", p->range_mapping_fields.bi
ts.chroma); |
| 1335 va_TraceMsg(idx, "\tb_picture_fraction = %d\n", p->b_picture_fraction); |
| 1336 va_TraceMsg(idx, "\tcbp_table = %d\n", p->cbp_table); |
| 1337 va_TraceMsg(idx, "\tmb_mode_table = %d\n", p->mb_mode_table); |
| 1338 va_TraceMsg(idx, "\trange_reduction_frame = %d\n", p->range_reduction_frame)
; |
| 1339 va_TraceMsg(idx, "\trounding_control = %d\n", p->rounding_control); |
| 1340 va_TraceMsg(idx, "\tpost_processing = %d\n", p->post_processing); |
| 1341 va_TraceMsg(idx, "\tpicture_resolution_index = %d\n", p->picture_resolution_
index); |
| 1342 va_TraceMsg(idx, "\tluma_scale = %d\n", p->luma_scale); |
| 1343 va_TraceMsg(idx, "\tluma_shift = %d\n", p->luma_shift); |
| 1344 va_TraceMsg(idx, "\tpicture_type = %d\n", p->picture_fields.bits.picture_typ
e); |
| 1345 va_TraceMsg(idx, "\tframe_coding_mode = %d\n", p->picture_fields.bits.frame_
coding_mode); |
| 1346 va_TraceMsg(idx, "\ttop_field_first = %d\n", p->picture_fields.bits.top_fiel
d_first); |
| 1347 va_TraceMsg(idx, "\tis_first_field = %d\n", p->picture_fields.bits.is_first_
field); |
| 1348 va_TraceMsg(idx, "\tintensity_compensation = %d\n", p->picture_fields.bits.i
ntensity_compensation); |
| 1349 va_TraceMsg(idx, "\tmv_type_mb = %d\n", p->raw_coding.flags.mv_type_mb); |
| 1350 va_TraceMsg(idx, "\tdirect_mb = %d\n", p->raw_coding.flags.direct_mb); |
| 1351 va_TraceMsg(idx, "\tskip_mb = %d\n", p->raw_coding.flags.skip_mb); |
| 1352 va_TraceMsg(idx, "\tfield_tx = %d\n", p->raw_coding.flags.field_tx); |
| 1353 va_TraceMsg(idx, "\tforward_mb = %d\n", p->raw_coding.flags.forward_mb); |
| 1354 va_TraceMsg(idx, "\tac_pred = %d\n", p->raw_coding.flags.ac_pred); |
| 1355 va_TraceMsg(idx, "\toverflags = %d\n", p->raw_coding.flags.overflags); |
| 1356 va_TraceMsg(idx, "\tbp_mv_type_mb = %d\n", p->bitplane_present.flags.bp_mv_t
ype_mb); |
| 1357 va_TraceMsg(idx, "\tbp_direct_mb = %d\n", p->bitplane_present.flags.bp_direc
t_mb); |
| 1358 va_TraceMsg(idx, "\tbp_skip_mb = %d\n", p->bitplane_present.flags.bp_skip_mb
); |
| 1359 va_TraceMsg(idx, "\tbp_field_tx = %d\n", p->bitplane_present.flags.bp_field_
tx); |
| 1360 va_TraceMsg(idx, "\tbp_forward_mb = %d\n", p->bitplane_present.flags.bp_forw
ard_mb); |
| 1361 va_TraceMsg(idx, "\tbp_ac_pred = %d\n", p->bitplane_present.flags.bp_ac_pred
); |
| 1362 va_TraceMsg(idx, "\tbp_overflags = %d\n", p->bitplane_present.flags.bp_overf
lags); |
| 1363 va_TraceMsg(idx, "\treference_distance_flag = %d\n", p->reference_fields.bit
s.reference_distance_flag); |
| 1364 va_TraceMsg(idx, "\treference_distance = %d\n", p->reference_fields.bits.ref
erence_distance); |
| 1365 va_TraceMsg(idx, "\tnum_reference_pictures = %d\n", p->reference_fields.bits
.num_reference_pictures); |
| 1366 va_TraceMsg(idx, "\treference_field_pic_indicator = %d\n", p->reference_fiel
ds.bits.reference_field_pic_indicator); |
| 1367 va_TraceMsg(idx, "\tmv_mode = %d\n", p->mv_fields.bits.mv_mode); |
| 1368 va_TraceMsg(idx, "\tmv_mode2 = %d\n", p->mv_fields.bits.mv_mode2); |
| 1369 va_TraceMsg(idx, "\tmv_table = %d\n", p->mv_fields.bits.mv_table); |
| 1370 va_TraceMsg(idx, "\ttwo_mv_block_pattern_table = %d\n", p->mv_fields.bits.tw
o_mv_block_pattern_table); |
| 1371 va_TraceMsg(idx, "\tfour_mv_switch = %d\n", p->mv_fields.bits.four_mv_switch
); |
| 1372 va_TraceMsg(idx, "\tfour_mv_block_pattern_table = %d\n", p->mv_fields.bits.f
our_mv_block_pattern_table); |
| 1373 va_TraceMsg(idx, "\textended_mv_flag = %d\n", p->mv_fields.bits.extended_mv_
flag); |
| 1374 va_TraceMsg(idx, "\textended_mv_range = %d\n", p->mv_fields.bits.extended_mv
_range); |
| 1375 va_TraceMsg(idx, "\textended_dmv_flag = %d\n", p->mv_fields.bits.extended_dm
v_flag); |
| 1376 va_TraceMsg(idx, "\textended_dmv_range = %d\n", p->mv_fields.bits.extended_d
mv_range); |
| 1377 va_TraceMsg(idx, "\tdquant = %d\n", p->pic_quantizer_fields.bits.dquant); |
| 1378 va_TraceMsg(idx, "\tquantizer = %d\n", p->pic_quantizer_fields.bits.quantize
r); |
| 1379 va_TraceMsg(idx, "\thalf_qp = %d\n", p->pic_quantizer_fields.bits.half_qp); |
| 1380 va_TraceMsg(idx, "\tpic_quantizer_scale = %d\n", p->pic_quantizer_fields.bit
s.pic_quantizer_scale); |
| 1381 va_TraceMsg(idx, "\tpic_quantizer_type = %d\n", p->pic_quantizer_fields.bits
.pic_quantizer_type); |
| 1382 va_TraceMsg(idx, "\tdq_frame = %d\n", p->pic_quantizer_fields.bits.dq_frame)
; |
| 1383 va_TraceMsg(idx, "\tdq_profile = %d\n", p->pic_quantizer_fields.bits.dq_prof
ile); |
| 1384 va_TraceMsg(idx, "\tdq_sb_edge = %d\n", p->pic_quantizer_fields.bits.dq_sb_e
dge); |
| 1385 va_TraceMsg(idx, "\tdq_db_edge = %d\n", p->pic_quantizer_fields.bits.dq_db_e
dge); |
| 1386 va_TraceMsg(idx, "\tdq_binary_level = %d\n", p->pic_quantizer_fields.bits.dq
_binary_level); |
| 1387 va_TraceMsg(idx, "\talt_pic_quantizer = %d\n", p->pic_quantizer_fields.bits.
alt_pic_quantizer); |
| 1388 va_TraceMsg(idx, "\tvariable_sized_transform_flag = %d\n", p->transform_fiel
ds.bits.variable_sized_transform_flag); |
| 1389 va_TraceMsg(idx, "\tmb_level_transform_type_flag = %d\n", p->transform_field
s.bits.mb_level_transform_type_flag); |
| 1390 va_TraceMsg(idx, "\tframe_level_transform_type = %d\n", p->transform_fields.
bits.frame_level_transform_type); |
| 1391 va_TraceMsg(idx, "\ttransform_ac_codingset_idx1 = %d\n", p->transform_fields
.bits.transform_ac_codingset_idx1); |
| 1392 va_TraceMsg(idx, "\ttransform_ac_codingset_idx2 = %d\n", p->transform_fields
.bits.transform_ac_codingset_idx2); |
| 1393 va_TraceMsg(idx, "\tintra_transform_dc_table = %d\n", p->transform_fields.bi
ts.intra_transform_dc_table); |
| 1394 va_TraceMsg(idx, NULL); |
| 1395 } |
| 1396 |
| 1397 static void va_TraceVASliceParameterBufferVC1( |
| 1398 VADisplay dpy, |
| 1399 VAContextID context, |
| 1400 VABufferID buffer, |
| 1401 VABufferType type, |
| 1402 unsigned int size, |
| 1403 unsigned int num_elements, |
| 1404 void* data |
| 1405 ) |
| 1406 { |
| 1407 VASliceParameterBufferVC1 *p = (VASliceParameterBufferVC1*)data; |
| 1408 DPY2INDEX(dpy); |
| 1409 |
| 1410 trace_context[idx].trace_slice_no++; |
| 1411 trace_context[idx].trace_slice_size = p->slice_data_size; |
| 1412 |
| 1413 va_TraceMsg(idx, "VASliceParameterBufferVC1\n"); |
| 1414 va_TraceMsg(idx, "\tslice_data_size = %d\n", p->slice_data_size); |
| 1415 va_TraceMsg(idx, "\tslice_data_offset = %d\n", p->slice_data_offset); |
| 1416 va_TraceMsg(idx, "\tslice_data_flag = %d\n", p->slice_data_flag); |
| 1417 va_TraceMsg(idx, "\tmacroblock_offset = %d\n", p->macroblock_offset); |
| 1418 va_TraceMsg(idx, "\tslice_vertical_position = %d\n", p->slice_vertical_posit
ion); |
| 1419 va_TraceMsg(idx, NULL); |
| 1420 } |
| 1421 |
| 1422 void va_TraceBeginPicture( |
| 1423 VADisplay dpy, |
| 1424 VAContextID context, |
| 1425 VASurfaceID render_target |
| 1426 ) |
| 1427 { |
| 1428 DPY2INDEX(dpy); |
| 1429 |
| 1430 TRACE_FUNCNAME(idx); |
| 1431 |
| 1432 va_TraceMsg(idx, "\tcontext = 0x%08x\n", context); |
| 1433 va_TraceMsg(idx, "\trender_targets = 0x%08x\n", render_target); |
| 1434 va_TraceMsg(idx, "\tframe_count = #%d\n", trace_context[idx].trace_frame_no
); |
| 1435 va_TraceMsg(idx, NULL); |
| 1436 |
| 1437 trace_context[idx].trace_rendertarget = render_target; /* for surface data d
ump after vaEndPicture */ |
| 1438 |
| 1439 trace_context[idx].trace_frame_no++; |
| 1440 trace_context[idx].trace_slice_no = 0; |
| 1441 } |
| 1442 |
| 1443 static void va_TraceMPEG2Buf( |
| 1444 VADisplay dpy, |
| 1445 VAContextID context, |
| 1446 VABufferID buffer, |
| 1447 VABufferType type, |
| 1448 unsigned int size, |
| 1449 unsigned int num_elements, |
| 1450 void *pbuf |
| 1451 ) |
| 1452 { |
| 1453 switch (type) { |
| 1454 case VAPictureParameterBufferType: |
| 1455 va_TraceVAPictureParameterBufferMPEG2(dpy, context, buffer, type, size,
num_elements, pbuf); |
| 1456 break; |
| 1457 case VAIQMatrixBufferType: |
| 1458 va_TraceVAIQMatrixBufferMPEG2(dpy, context, buffer, type, size, num_elem
ents, pbuf); |
| 1459 break; |
| 1460 case VABitPlaneBufferType: |
| 1461 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf); |
| 1462 break; |
| 1463 case VASliceGroupMapBufferType: |
| 1464 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf); |
| 1465 break; |
| 1466 case VASliceParameterBufferType: |
| 1467 va_TraceVASliceParameterBufferMPEG2(dpy, context, buffer, type, size, nu
m_elements, pbuf); |
| 1468 break; |
| 1469 case VASliceDataBufferType: |
| 1470 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf); |
| 1471 break; |
| 1472 case VAMacroblockParameterBufferType: |
| 1473 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf); |
| 1474 break; |
| 1475 case VAResidualDataBufferType: |
| 1476 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf); |
| 1477 break; |
| 1478 case VADeblockingParameterBufferType: |
| 1479 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf); |
| 1480 break; |
| 1481 case VAImageBufferType: |
| 1482 break; |
| 1483 case VAProtectedSliceDataBufferType: |
| 1484 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf); |
| 1485 break; |
| 1486 case VAEncCodedBufferType: |
| 1487 break; |
| 1488 case VAEncSequenceParameterBufferType: |
| 1489 break; |
| 1490 case VAEncPictureParameterBufferType: |
| 1491 break; |
| 1492 case VAEncSliceParameterBufferType: |
| 1493 break; |
| 1494 case VAEncH264VUIBufferType: |
| 1495 break; |
| 1496 case VAEncH264SEIBufferType: |
| 1497 break; |
| 1498 default: |
| 1499 break; |
| 1500 } |
| 1501 } |
| 1502 |
| 1503 static void va_TraceVAEncSequenceParameterBufferH263( |
| 1504 VADisplay dpy, |
| 1505 VAContextID context, |
| 1506 VABufferID buffer, |
| 1507 VABufferType type, |
| 1508 unsigned int size, |
| 1509 unsigned int num_elements, |
| 1510 void *data) |
| 1511 { |
| 1512 VAEncSequenceParameterBufferH263 *p = (VAEncSequenceParameterBufferH263 *)da
ta; |
| 1513 DPY2INDEX(dpy); |
| 1514 |
| 1515 va_TraceMsg(idx, "VAEncSequenceParameterBufferH263\n"); |
| 1516 |
| 1517 va_TraceMsg(idx, "\tintra_period = %d\n", p->intra_period); |
| 1518 va_TraceMsg(idx, "\tbits_per_second = %d\n", p->bits_per_second); |
| 1519 va_TraceMsg(idx, "\tframe_rate = %d\n", p->frame_rate); |
| 1520 va_TraceMsg(idx, "\tinitial_qp = %d\n", p->initial_qp); |
| 1521 va_TraceMsg(idx, "\tmin_qp = %d\n", p->min_qp); |
| 1522 va_TraceMsg(idx, NULL); |
| 1523 |
| 1524 /* start a new sequce, coded log file can be truncated */ |
| 1525 trace_context[idx].trace_sequence_start = 1; |
| 1526 |
| 1527 return; |
| 1528 } |
| 1529 |
| 1530 |
| 1531 static void va_TraceVAEncPictureParameterBufferH263( |
| 1532 VADisplay dpy, |
| 1533 VAContextID context, |
| 1534 VABufferID buffer, |
| 1535 VABufferType type, |
| 1536 unsigned int size, |
| 1537 unsigned int num_elements, |
| 1538 void *data) |
| 1539 { |
| 1540 VAEncPictureParameterBufferH263 *p = (VAEncPictureParameterBufferH263 *)data
; |
| 1541 DPY2INDEX(dpy); |
| 1542 |
| 1543 va_TraceMsg(idx, "VAEncPictureParameterBufferH263\n"); |
| 1544 va_TraceMsg(idx, "\treference_picture = 0x%08x\n", p->reference_picture); |
| 1545 va_TraceMsg(idx, "\treconstructed_picture = 0x%08x\n", p->reconstructed_pict
ure); |
| 1546 va_TraceMsg(idx, "\tcoded_buf = %08x\n", p->coded_buf); |
| 1547 va_TraceMsg(idx, "\tpicture_width = %d\n", p->picture_width); |
| 1548 va_TraceMsg(idx, "\tpicture_height = %d\n", p->picture_height); |
| 1549 va_TraceMsg(idx, "\tpicture_type = 0x%08x\n", p->picture_type); |
| 1550 va_TraceMsg(idx, NULL); |
| 1551 |
| 1552 trace_context[idx].trace_codedbuf = p->coded_buf; |
| 1553 |
| 1554 return; |
| 1555 } |
| 1556 |
| 1557 static void va_TraceVAEncPictureParameterBufferJPEG( |
| 1558 VADisplay dpy, |
| 1559 VAContextID context, |
| 1560 VABufferID buffer, |
| 1561 VABufferType type, |
| 1562 unsigned int size, |
| 1563 unsigned int num_elements, |
| 1564 void *data) |
| 1565 { |
| 1566 VAEncPictureParameterBufferJPEG *p = (VAEncPictureParameterBufferJPEG *)data
; |
| 1567 DPY2INDEX(dpy); |
| 1568 |
| 1569 va_TraceMsg(idx, "VAEncPictureParameterBufferJPEG\n"); |
| 1570 va_TraceMsg(idx, "\treconstructed_picture = 0x%08x\n", p->reconstructed_pict
ure); |
| 1571 va_TraceMsg(idx, "\tcoded_buf = %08x\n", p->coded_buf); |
| 1572 va_TraceMsg(idx, "\tpicture_width = %d\n", p->picture_width); |
| 1573 va_TraceMsg(idx, "\tpicture_height = %d\n", p->picture_height); |
| 1574 va_TraceMsg(idx, NULL); |
| 1575 |
| 1576 trace_context[idx].trace_codedbuf = p->coded_buf; |
| 1577 |
| 1578 return; |
| 1579 } |
| 1580 |
| 1581 static void va_TraceVAEncQMatrixBufferJPEG( |
| 1582 VADisplay dpy, |
| 1583 VAContextID context, |
| 1584 VABufferID buffer, |
| 1585 VABufferType type, |
| 1586 unsigned int size, |
| 1587 unsigned int num_elements, |
| 1588 void *data) |
| 1589 { |
| 1590 VAQMatrixBufferJPEG *p = (VAQMatrixBufferJPEG *)data; |
| 1591 DPY2INDEX(dpy); |
| 1592 |
| 1593 va_TraceMsg(idx, "VAQMatrixBufferJPEG\n"); |
| 1594 va_TraceMsg(idx, "\tload_lum_quantiser_matrix = %d", p->load_lum_quantiser_m
atrix); |
| 1595 if (p->load_lum_quantiser_matrix) { |
| 1596 int i; |
| 1597 for (i = 0; i < 64; i++) { |
| 1598 if ((i % 8) == 0) |
| 1599 va_TraceMsg(idx, "\n\t"); |
| 1600 va_TraceMsg(idx, "\t0x%02x", p->lum_quantiser_matrix[i]); |
| 1601 } |
| 1602 va_TraceMsg(idx, "\n"); |
| 1603 } |
| 1604 va_TraceMsg(idx, "\tload_chroma_quantiser_matrix = %08x\n", p->load_chroma_q
uantiser_matrix); |
| 1605 if (p->load_chroma_quantiser_matrix) { |
| 1606 int i; |
| 1607 for (i = 0; i < 64; i++) { |
| 1608 if ((i % 8) == 0) |
| 1609 va_TraceMsg(idx, "\n\t"); |
| 1610 va_TraceMsg(idx, "\t0x%02x", p->chroma_quantiser_matrix[i]); |
| 1611 } |
| 1612 va_TraceMsg(idx, "\n"); |
| 1613 } |
| 1614 |
| 1615 va_TraceMsg(idx, NULL); |
| 1616 |
| 1617 return; |
| 1618 } |
| 1619 |
| 1620 static void va_TraceH263Buf( |
| 1621 VADisplay dpy, |
| 1622 VAContextID context, |
| 1623 VABufferID buffer, |
| 1624 VABufferType type, |
| 1625 unsigned int size, |
| 1626 unsigned int num_elements, |
| 1627 void *pbuf |
| 1628 ) |
| 1629 { |
| 1630 switch (type) { |
| 1631 case VAPictureParameterBufferType:/* print MPEG4 buffer */ |
| 1632 va_TraceVAPictureParameterBufferMPEG4(dpy, context, buffer, type, size,
num_elements, pbuf); |
| 1633 break; |
| 1634 case VAIQMatrixBufferType:/* print MPEG4 buffer */ |
| 1635 va_TraceVAIQMatrixBufferMPEG4(dpy, context, buffer, type, size, num_elem
ents, pbuf); |
| 1636 break; |
| 1637 case VABitPlaneBufferType:/* print MPEG4 buffer */ |
| 1638 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf); |
| 1639 break; |
| 1640 case VASliceGroupMapBufferType: |
| 1641 break; |
| 1642 case VASliceParameterBufferType:/* print MPEG4 buffer */ |
| 1643 va_TraceVASliceParameterBufferMPEG4(dpy, context, buffer, type, size, nu
m_elements, pbuf); |
| 1644 break; |
| 1645 case VASliceDataBufferType: |
| 1646 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf); |
| 1647 break; |
| 1648 case VAMacroblockParameterBufferType: |
| 1649 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf); |
| 1650 break; |
| 1651 case VAResidualDataBufferType: |
| 1652 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf); |
| 1653 break; |
| 1654 case VADeblockingParameterBufferType: |
| 1655 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf); |
| 1656 break; |
| 1657 case VAImageBufferType: |
| 1658 break; |
| 1659 case VAProtectedSliceDataBufferType: |
| 1660 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf); |
| 1661 break; |
| 1662 case VAEncCodedBufferType: |
| 1663 break; |
| 1664 case VAEncSequenceParameterBufferType: |
| 1665 va_TraceVAEncSequenceParameterBufferH263(dpy, context, buffer, type, siz
e, num_elements, pbuf); |
| 1666 break; |
| 1667 case VAEncPictureParameterBufferType: |
| 1668 va_TraceVAEncPictureParameterBufferH263(dpy, context, buffer, type, size
, num_elements, pbuf); |
| 1669 break; |
| 1670 case VAEncSliceParameterBufferType: |
| 1671 va_TraceVAEncSliceParameterBuffer(dpy, context, buffer, type, size, num_
elements, pbuf); |
| 1672 break; |
| 1673 default: |
| 1674 break; |
| 1675 } |
| 1676 } |
| 1677 |
| 1678 |
| 1679 static void va_TraceJPEGBuf( |
| 1680 VADisplay dpy, |
| 1681 VAContextID context, |
| 1682 VABufferID buffer, |
| 1683 VABufferType type, |
| 1684 unsigned int size, |
| 1685 unsigned int num_elements, |
| 1686 void *pbuf |
| 1687 ) |
| 1688 { |
| 1689 switch (type) { |
| 1690 case VAPictureParameterBufferType:/* print MPEG4 buffer */ |
| 1691 case VAIQMatrixBufferType:/* print MPEG4 buffer */ |
| 1692 case VABitPlaneBufferType:/* print MPEG4 buffer */ |
| 1693 case VASliceGroupMapBufferType: |
| 1694 case VASliceParameterBufferType:/* print MPEG4 buffer */ |
| 1695 case VASliceDataBufferType: |
| 1696 case VAMacroblockParameterBufferType: |
| 1697 case VAResidualDataBufferType: |
| 1698 case VADeblockingParameterBufferType: |
| 1699 case VAImageBufferType: |
| 1700 case VAProtectedSliceDataBufferType: |
| 1701 case VAEncCodedBufferType: |
| 1702 case VAEncSequenceParameterBufferType: |
| 1703 case VAEncSliceParameterBufferType: |
| 1704 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf); |
| 1705 break; |
| 1706 case VAEncPictureParameterBufferType: |
| 1707 va_TraceVAEncPictureParameterBufferJPEG(dpy, context, buffer, type, size
, num_elements, pbuf); |
| 1708 break; |
| 1709 case VAQMatrixBufferType: |
| 1710 va_TraceVAEncQMatrixBufferJPEG(dpy, context, buffer, type, size, num_ele
ments, pbuf); |
| 1711 break; |
| 1712 default: |
| 1713 break; |
| 1714 } |
| 1715 } |
| 1716 |
| 1717 static void va_TraceMPEG4Buf( |
| 1718 VADisplay dpy, |
| 1719 VAContextID context, |
| 1720 VABufferID buffer, |
| 1721 VABufferType type, |
| 1722 unsigned int size, |
| 1723 unsigned int num_elements, |
| 1724 void *pbuf |
| 1725 ) |
| 1726 { |
| 1727 switch (type) { |
| 1728 case VAPictureParameterBufferType: |
| 1729 va_TraceVAPictureParameterBufferMPEG4(dpy, context, buffer, type, size,
num_elements, pbuf); |
| 1730 break; |
| 1731 case VAIQMatrixBufferType: |
| 1732 va_TraceVAIQMatrixBufferMPEG4(dpy, context, buffer, type, size, num_elem
ents, pbuf); |
| 1733 break; |
| 1734 case VABitPlaneBufferType: |
| 1735 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf); |
| 1736 break; |
| 1737 case VASliceGroupMapBufferType: |
| 1738 break; |
| 1739 case VASliceParameterBufferType: |
| 1740 va_TraceVASliceParameterBufferMPEG4(dpy, context, buffer, type, size, nu
m_elements, pbuf); |
| 1741 break; |
| 1742 case VASliceDataBufferType: |
| 1743 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf); |
| 1744 break; |
| 1745 case VAMacroblockParameterBufferType: |
| 1746 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf); |
| 1747 break; |
| 1748 case VAResidualDataBufferType: |
| 1749 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf); |
| 1750 break; |
| 1751 case VADeblockingParameterBufferType: |
| 1752 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf); |
| 1753 break; |
| 1754 case VAImageBufferType: |
| 1755 break; |
| 1756 case VAProtectedSliceDataBufferType: |
| 1757 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf); |
| 1758 break; |
| 1759 case VAEncCodedBufferType: |
| 1760 break; |
| 1761 case VAEncSequenceParameterBufferType: |
| 1762 va_TraceVAEncSequenceParameterBufferMPEG4(dpy, context, buffer, type, si
ze, num_elements, pbuf); |
| 1763 break; |
| 1764 case VAEncPictureParameterBufferType: |
| 1765 va_TraceVAEncPictureParameterBufferMPEG4(dpy, context, buffer, type, siz
e, num_elements, pbuf); |
| 1766 break; |
| 1767 case VAEncSliceParameterBufferType: |
| 1768 va_TraceVAEncSliceParameterBuffer(dpy, context, buffer, type, size, num_
elements, pbuf); |
| 1769 break; |
| 1770 case VAEncH264VUIBufferType: |
| 1771 break; |
| 1772 case VAEncH264SEIBufferType: |
| 1773 break; |
| 1774 default: |
| 1775 break; |
| 1776 } |
| 1777 } |
| 1778 |
| 1779 |
| 1780 static void va_TraceH264Buf( |
| 1781 VADisplay dpy, |
| 1782 VAContextID context, |
| 1783 VABufferID buffer, |
| 1784 VABufferType type, |
| 1785 unsigned int size, |
| 1786 unsigned int num_elements, |
| 1787 void *pbuf |
| 1788 ) |
| 1789 { |
| 1790 DPY2INDEX(dpy); |
| 1791 |
| 1792 switch (type) { |
| 1793 case VAPictureParameterBufferType: |
| 1794 va_TraceVAPictureParameterBufferH264(dpy, context, buffer, type, size, n
um_elements, pbuf); |
| 1795 break; |
| 1796 case VAIQMatrixBufferType: |
| 1797 va_TraceVAIQMatrixBufferH264(dpy, context, buffer, type, size, num_eleme
nts, pbuf); |
| 1798 break; |
| 1799 case VABitPlaneBufferType: |
| 1800 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
|
| 1801 break; |
| 1802 case VASliceGroupMapBufferType: |
| 1803 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf); |
| 1804 break; |
| 1805 case VASliceParameterBufferType: |
| 1806 va_TraceVASliceParameterBufferH264(dpy, context, buffer, type, size, num
_elements, pbuf); |
| 1807 break; |
| 1808 case VASliceDataBufferType: |
| 1809 va_TraceVABuffers(dpy, context, buffer, type, trace_context[idx].trace_s
lice_size, num_elements, pbuf); |
| 1810 break; |
| 1811 case VAMacroblockParameterBufferType: |
| 1812 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
|
| 1813 break; |
| 1814 case VAResidualDataBufferType: |
| 1815 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
|
| 1816 break; |
| 1817 case VADeblockingParameterBufferType: |
| 1818 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf); |
| 1819 break; |
| 1820 case VAImageBufferType: |
| 1821 break; |
| 1822 case VAProtectedSliceDataBufferType: |
| 1823 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf); |
| 1824 break; |
| 1825 case VAEncCodedBufferType: |
| 1826 break; |
| 1827 case VAEncSequenceParameterBufferType: |
| 1828 va_TraceVAEncSequenceParameterBufferH264(dpy, context, buffer, type, siz
e, num_elements, pbuf); |
| 1829 break; |
| 1830 case VAEncPictureParameterBufferType: |
| 1831 va_TraceVAEncPictureParameterBufferH264(dpy, context, buffer, type, size
, num_elements, pbuf); |
| 1832 break; |
| 1833 case VAEncSliceParameterBufferType: |
| 1834 va_TraceVAEncSliceParameterBuffer(dpy, context, buffer, type, size, num_
elements, pbuf); |
| 1835 break; |
| 1836 case VAEncH264VUIBufferType: |
| 1837 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf); |
| 1838 break; |
| 1839 case VAEncH264SEIBufferType: |
| 1840 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf); |
| 1841 break; |
| 1842 case VAEncMiscParameterBufferType: |
| 1843 va_TraceVAEncMiscParameterBuffer(dpy, context, buffer, type, size, num_e
lements, pbuf); |
| 1844 break; |
| 1845 default: |
| 1846 break; |
| 1847 } |
| 1848 } |
| 1849 |
| 1850 |
| 1851 static void va_TraceVC1Buf( |
| 1852 VADisplay dpy, |
| 1853 VAContextID context, |
| 1854 VABufferID buffer, |
| 1855 VABufferType type, |
| 1856 unsigned int size, |
| 1857 unsigned int num_elements, |
| 1858 void *pbuf |
| 1859 ) |
| 1860 { |
| 1861 DPY2INDEX(dpy); |
| 1862 |
| 1863 switch (type) { |
| 1864 case VAPictureParameterBufferType: |
| 1865 va_TraceVAPictureParameterBufferVC1(dpy, context, buffer, type, size, nu
m_elements, pbuf); |
| 1866 break; |
| 1867 case VAIQMatrixBufferType: |
| 1868 break; |
| 1869 case VABitPlaneBufferType: |
| 1870 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf); |
| 1871 break; |
| 1872 case VASliceGroupMapBufferType: |
| 1873 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf); |
| 1874 break; |
| 1875 case VASliceParameterBufferType: |
| 1876 va_TraceVASliceParameterBufferVC1(dpy, context, buffer, type, size, num_
elements, pbuf); |
| 1877 break; |
| 1878 case VASliceDataBufferType: |
| 1879 va_TraceVABuffers(dpy, context, buffer, type, trace_context[idx].trace_s
lice_size, num_elements, pbuf); |
| 1880 break; |
| 1881 case VAMacroblockParameterBufferType: |
| 1882 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf); |
| 1883 break; |
| 1884 case VAResidualDataBufferType: |
| 1885 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf); |
| 1886 break; |
| 1887 case VADeblockingParameterBufferType: |
| 1888 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf); |
| 1889 break; |
| 1890 case VAImageBufferType: |
| 1891 break; |
| 1892 case VAProtectedSliceDataBufferType: |
| 1893 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf); |
| 1894 break; |
| 1895 case VAEncCodedBufferType: |
| 1896 break; |
| 1897 case VAEncSequenceParameterBufferType: |
| 1898 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf); |
| 1899 break; |
| 1900 case VAEncPictureParameterBufferType: |
| 1901 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf); |
| 1902 break; |
| 1903 case VAEncSliceParameterBufferType: |
| 1904 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf); |
| 1905 break; |
| 1906 default: |
| 1907 break; |
| 1908 } |
| 1909 } |
| 1910 |
| 1911 void va_TraceRenderPicture( |
| 1912 VADisplay dpy, |
| 1913 VAContextID context, |
| 1914 VABufferID *buffers, |
| 1915 int num_buffers |
| 1916 ) |
| 1917 { |
| 1918 VABufferType type; |
| 1919 unsigned int size; |
| 1920 unsigned int num_elements; |
| 1921 int i; |
| 1922 DPY2INDEX(dpy); |
| 1923 |
| 1924 TRACE_FUNCNAME(idx); |
| 1925 |
| 1926 va_TraceMsg(idx, "\tcontext = 0x%08x\n", context); |
| 1927 va_TraceMsg(idx, "\tnum_buffers = %d\n", num_buffers); |
| 1928 for (i = 0; i < num_buffers; i++) { |
| 1929 unsigned char *pbuf; |
| 1930 unsigned int j; |
| 1931 |
| 1932 /* get buffer type information */ |
| 1933 vaBufferInfo(dpy, context, buffers[i], &type, &size, &num_elements); |
| 1934 |
| 1935 va_TraceMsg(idx, "\t---------------------------\n"); |
| 1936 va_TraceMsg(idx, "\tbuffers[%d] = 0x%08x\n", i, buffers[i]); |
| 1937 va_TraceMsg(idx, "\t type = %s\n", buffer_type_to_string(type)); |
| 1938 va_TraceMsg(idx, "\t size = %d\n", size); |
| 1939 va_TraceMsg(idx, "\t num_elements = %d\n", num_elements); |
| 1940 |
| 1941 vaMapBuffer(dpy, buffers[i], (void **)&pbuf); |
| 1942 |
| 1943 switch (trace_context[idx].trace_profile) { |
| 1944 case VAProfileMPEG2Simple: |
| 1945 case VAProfileMPEG2Main: |
| 1946 for (j=0; j<num_elements; j++) { |
| 1947 va_TraceMsg(idx, "\t---------------------------\n", j); |
| 1948 va_TraceMsg(idx, "\telement[%d] = ", j); |
| 1949 va_TraceMPEG2Buf(dpy, context, buffers[i], type, size, num_eleme
nts, pbuf + size*j); |
| 1950 } |
| 1951 break; |
| 1952 case VAProfileMPEG4Simple: |
| 1953 case VAProfileMPEG4AdvancedSimple: |
| 1954 case VAProfileMPEG4Main: |
| 1955 for (j=0; j<num_elements; j++) { |
| 1956 va_TraceMsg(idx, "\t---------------------------\n", j); |
| 1957 va_TraceMsg(idx, "\telement[%d] = ", j); |
| 1958 va_TraceMPEG4Buf(dpy, context, buffers[i], type, size, num_eleme
nts, pbuf + size*j); |
| 1959 } |
| 1960 break; |
| 1961 case VAProfileH264Baseline: |
| 1962 case VAProfileH264Main: |
| 1963 case VAProfileH264High: |
| 1964 case VAProfileH264ConstrainedBaseline: |
| 1965 for (j=0; j<num_elements; j++) { |
| 1966 va_TraceMsg(idx, "\t---------------------------\n", j); |
| 1967 va_TraceMsg(idx, "\telement[%d] = ", j); |
| 1968 |
| 1969 va_TraceH264Buf(dpy, context, buffers[i], type, size, num_elemen
ts, pbuf + size*j); |
| 1970 } |
| 1971 break; |
| 1972 case VAProfileVC1Simple: |
| 1973 case VAProfileVC1Main: |
| 1974 case VAProfileVC1Advanced: |
| 1975 for (j=0; j<num_elements; j++) { |
| 1976 va_TraceMsg(idx, "\t---------------------------\n", j); |
| 1977 va_TraceMsg(idx, "\telement[%d] = ", j); |
| 1978 |
| 1979 va_TraceVC1Buf(dpy, context, buffers[i], type, size, num_element
s, pbuf + size*j); |
| 1980 } |
| 1981 break; |
| 1982 case VAProfileH263Baseline: |
| 1983 for (j=0; j<num_elements; j++) { |
| 1984 va_TraceMsg(idx, "\t---------------------------\n", j); |
| 1985 va_TraceMsg(idx, "\telement[%d] = ", j); |
| 1986 |
| 1987 va_TraceH263Buf(dpy, context, buffers[i], type, size, num_elemen
ts, pbuf + size*j); |
| 1988 } |
| 1989 break; |
| 1990 case VAProfileJPEGBaseline: |
| 1991 for (j=0; j<num_elements; j++) { |
| 1992 va_TraceMsg(idx, "\t---------------------------\n", j); |
| 1993 va_TraceMsg(idx, "\telement[%d] = ", j); |
| 1994 |
| 1995 va_TraceJPEGBuf(dpy, context, buffers[i], type, size, num_elemen
ts, pbuf + size*j); |
| 1996 } |
| 1997 break; |
| 1998 default: |
| 1999 break; |
| 2000 } |
| 2001 |
| 2002 vaUnmapBuffer(dpy, buffers[i]); |
| 2003 } |
| 2004 |
| 2005 va_TraceMsg(idx, NULL); |
| 2006 } |
| 2007 |
| 2008 void va_TraceEndPicture( |
| 2009 VADisplay dpy, |
| 2010 VAContextID context, |
| 2011 int endpic_done |
| 2012 ) |
| 2013 { |
| 2014 int encode, decode, jpeg; |
| 2015 DPY2INDEX(dpy); |
| 2016 |
| 2017 TRACE_FUNCNAME(idx); |
| 2018 |
| 2019 if (endpic_done == 0) { |
| 2020 va_TraceMsg(idx, "\tcontext = 0x%08x\n", context); |
| 2021 va_TraceMsg(idx, "\trender_targets = 0x%08x\n", trace_context[idx].trace
_rendertarget); |
| 2022 } |
| 2023 |
| 2024 encode = (trace_context[idx].trace_entrypoint == VAEntrypointEncSlice) && |
| 2025 (trace_flag & VA_TRACE_FLAG_SURFACE_ENCODE); |
| 2026 decode = (trace_context[idx].trace_entrypoint == VAEntrypointVLD) && |
| 2027 (trace_flag & VA_TRACE_FLAG_SURFACE_DECODE); |
| 2028 jpeg = (trace_context[idx].trace_entrypoint == VAEntrypointEncPicture) && |
| 2029 (trace_flag & VA_TRACE_FLAG_SURFACE_JPEG); |
| 2030 |
| 2031 /* want to trace encode source surface, do it before vaEndPicture */ |
| 2032 if ((encode || jpeg) && (endpic_done == 0)) |
| 2033 va_TraceSurface(dpy); |
| 2034 |
| 2035 /* want to trace encoode codedbuf, do it after vaEndPicture */ |
| 2036 if ((encode || jpeg) && (endpic_done == 1)) { |
| 2037 /* force the pipleline finish rendering */ |
| 2038 vaSyncSurface(dpy, trace_context[idx].trace_rendertarget); |
| 2039 va_TraceCodedBuf(dpy); |
| 2040 } |
| 2041 |
| 2042 /* want to trace decode dest surface, do it after vaEndPicture */ |
| 2043 if (decode && (endpic_done == 1)) { |
| 2044 /* force the pipleline finish rendering */ |
| 2045 vaSyncSurface(dpy, trace_context[idx].trace_rendertarget); |
| 2046 va_TraceSurface(dpy); |
| 2047 } |
| 2048 va_TraceMsg(idx, NULL); |
| 2049 } |
| 2050 |
| 2051 void va_TraceSyncSurface( |
| 2052 VADisplay dpy, |
| 2053 VASurfaceID render_target |
| 2054 ) |
| 2055 { |
| 2056 DPY2INDEX(dpy); |
| 2057 |
| 2058 TRACE_FUNCNAME(idx); |
| 2059 |
| 2060 va_TraceMsg(idx, "\trender_target = 0x%08x\n", render_target); |
| 2061 va_TraceMsg(idx, NULL); |
| 2062 } |
| 2063 |
| 2064 |
| 2065 void va_TraceQuerySurfaceStatus( |
| 2066 VADisplay dpy, |
| 2067 VASurfaceID render_target, |
| 2068 VASurfaceStatus *status /* out */ |
| 2069 ) |
| 2070 { |
| 2071 DPY2INDEX(dpy); |
| 2072 |
| 2073 TRACE_FUNCNAME(idx); |
| 2074 |
| 2075 va_TraceMsg(idx, "\trender_target = 0x%08x\n", render_target); |
| 2076 va_TraceMsg(idx, "\tstatus = 0x%08x\n", *status); |
| 2077 va_TraceMsg(idx, NULL); |
| 2078 } |
| 2079 |
| 2080 |
| 2081 void va_TraceQuerySurfaceError( |
| 2082 VADisplay dpy, |
| 2083 VASurfaceID surface, |
| 2084 VAStatus error_status, |
| 2085 void **error_info /*out*/ |
| 2086 ) |
| 2087 { |
| 2088 DPY2INDEX(dpy); |
| 2089 |
| 2090 TRACE_FUNCNAME(idx); |
| 2091 va_TraceMsg(idx, "\tsurface = 0x%08x\n", surface); |
| 2092 va_TraceMsg(idx, "\terror_status = 0x%08x\n", error_status); |
| 2093 if (error_status == VA_STATUS_ERROR_DECODING_ERROR) { |
| 2094 VASurfaceDecodeMBErrors *p = *error_info; |
| 2095 while (p->status != -1) { |
| 2096 va_TraceMsg(idx, "\t\tstatus = %d\n", p->status); |
| 2097 va_TraceMsg(idx, "\t\tstart_mb = %d\n", p->start_mb); |
| 2098 va_TraceMsg(idx, "\t\tend_mb = %d\n", p->end_mb); |
| 2099 p++; /* next error record */ |
| 2100 } |
| 2101 } |
| 2102 va_TraceMsg(idx, NULL); |
| 2103 } |
| 2104 |
| 2105 void va_TraceMaxNumDisplayAttributes ( |
| 2106 VADisplay dpy, |
| 2107 int number |
| 2108 ) |
| 2109 { |
| 2110 DPY2INDEX(dpy); |
| 2111 |
| 2112 TRACE_FUNCNAME(idx); |
| 2113 |
| 2114 va_TraceMsg(idx, "\tmax_display_attributes = %d\n", number); |
| 2115 va_TraceMsg(idx, NULL); |
| 2116 } |
| 2117 |
| 2118 void va_TraceQueryDisplayAttributes ( |
| 2119 VADisplay dpy, |
| 2120 VADisplayAttribute *attr_list, /* out */ |
| 2121 int *num_attributes /* out */ |
| 2122 ) |
| 2123 { |
| 2124 int i; |
| 2125 |
| 2126 DPY2INDEX(dpy); |
| 2127 |
| 2128 va_TraceMsg(idx, "\tnum_attributes = %d\n", *num_attributes); |
| 2129 |
| 2130 for (i=0; i<*num_attributes; i++) { |
| 2131 va_TraceMsg(idx, "\tattr_list[%d] =\n"); |
| 2132 va_TraceMsg(idx, "\t typ = 0x%08x\n", attr_list[i].type); |
| 2133 va_TraceMsg(idx, "\t min_value = %d\n", attr_list[i].min_value); |
| 2134 va_TraceMsg(idx, "\t max_value = %d\n", attr_list[i].max_value); |
| 2135 va_TraceMsg(idx, "\t value = %d\n", attr_list[i].value); |
| 2136 va_TraceMsg(idx, "\t flags = %d\n", attr_list[i].flags); |
| 2137 } |
| 2138 va_TraceMsg(idx, NULL); |
| 2139 } |
| 2140 |
| 2141 |
| 2142 static void va_TraceDisplayAttributes ( |
| 2143 VADisplay dpy, |
| 2144 VADisplayAttribute *attr_list, |
| 2145 int num_attributes |
| 2146 ) |
| 2147 { |
| 2148 int i; |
| 2149 |
| 2150 DPY2INDEX(dpy); |
| 2151 |
| 2152 va_TraceMsg(idx, "\tnum_attributes = %d\n", num_attributes); |
| 2153 for (i=0; i<num_attributes; i++) { |
| 2154 va_TraceMsg(idx, "\tattr_list[%d] =\n"); |
| 2155 va_TraceMsg(idx, "\t typ = 0x%08x\n", attr_list[i].type); |
| 2156 va_TraceMsg(idx, "\t min_value = %d\n", attr_list[i].min_value); |
| 2157 va_TraceMsg(idx, "\t max_value = %d\n", attr_list[i].max_value); |
| 2158 va_TraceMsg(idx, "\t value = %d\n", attr_list[i].value); |
| 2159 va_TraceMsg(idx, "\t flags = %d\n", attr_list[i].flags); |
| 2160 } |
| 2161 va_TraceMsg(idx, NULL); |
| 2162 } |
| 2163 |
| 2164 |
| 2165 void va_TraceGetDisplayAttributes ( |
| 2166 VADisplay dpy, |
| 2167 VADisplayAttribute *attr_list, |
| 2168 int num_attributes |
| 2169 ) |
| 2170 { |
| 2171 DPY2INDEX(dpy); |
| 2172 |
| 2173 TRACE_FUNCNAME(idx); |
| 2174 |
| 2175 va_TraceDisplayAttributes (dpy, attr_list, num_attributes); |
| 2176 } |
| 2177 |
| 2178 void va_TraceSetDisplayAttributes ( |
| 2179 VADisplay dpy, |
| 2180 VADisplayAttribute *attr_list, |
| 2181 int num_attributes |
| 2182 ) |
| 2183 { |
| 2184 DPY2INDEX(dpy); |
| 2185 |
| 2186 TRACE_FUNCNAME(idx); |
| 2187 |
| 2188 va_TraceDisplayAttributes (dpy, attr_list, num_attributes); |
| 2189 } |
| 2190 |
| 2191 |
| 2192 void va_TracePutSurface ( |
| 2193 VADisplay dpy, |
| 2194 VASurfaceID surface, |
| 2195 void *draw, /* the target Drawable */ |
| 2196 short srcx, |
| 2197 short srcy, |
| 2198 unsigned short srcw, |
| 2199 unsigned short srch, |
| 2200 short destx, |
| 2201 short desty, |
| 2202 unsigned short destw, |
| 2203 unsigned short desth, |
| 2204 VARectangle *cliprects, /* client supplied clip list */ |
| 2205 unsigned int number_cliprects, /* number of clip rects in the clip list */ |
| 2206 unsigned int flags /* de-interlacing flags */ |
| 2207 ) |
| 2208 { |
| 2209 DPY2INDEX(dpy); |
| 2210 |
| 2211 TRACE_FUNCNAME(idx); |
| 2212 |
| 2213 va_TraceMsg(idx, "\tsurface = 0x%08x\n", surface); |
| 2214 va_TraceMsg(idx, "\tdraw = 0x%08x\n", draw); |
| 2215 va_TraceMsg(idx, "\tsrcx = %d\n", srcx); |
| 2216 va_TraceMsg(idx, "\tsrcy = %d\n", srcy); |
| 2217 va_TraceMsg(idx, "\tsrcw = %d\n", srcw); |
| 2218 va_TraceMsg(idx, "\tsrch = %d\n", srch); |
| 2219 va_TraceMsg(idx, "\tdestx = %d\n", destx); |
| 2220 va_TraceMsg(idx, "\tdesty = %d\n", desty); |
| 2221 va_TraceMsg(idx, "\tdestw = %d\n", destw); |
| 2222 va_TraceMsg(idx, "\tdesth = %d\n", desth); |
| 2223 va_TraceMsg(idx, "\tcliprects = 0x%08x\n", cliprects); |
| 2224 va_TraceMsg(idx, "\tnumber_cliprects = %d\n", number_cliprects); |
| 2225 va_TraceMsg(idx, "\tflags = 0x%08x\n", flags); |
| 2226 va_TraceMsg(idx, NULL); |
| 2227 } |
OLD | NEW |