2 * Copyright (c) 2009-2011 Intel Corporation. All Rights Reserved.
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:
12 * The above copyright notice and this permission notice (including the
13 * next paragraph) shall be included in all copies or substantial portions
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.
27 #include "va_backend.h"
37 #include <sys/types.h>
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 calculate a checksum)
47 * .LIBVA_TRACE_CODEDBUF=coded_clip_file: save the coded clip into file coded_clip_file
48 * .LIBVA_TRACE_SURFACE=decoded_yuv_file: save the decoded YUV file decoded_yuv_file
49 * .LIBVA_TRACE_LOGSIZE=numeric number: truncate the log_file or coded_clip_file, or decoded_yuv_file
50 * when the size is bigger than the number
57 unsigned int trace_flag = 0;
59 /* LIBVA_TRACE_LOGSIZE */
60 static unsigned int trace_logsize = 0xffffffff; /* truncate the log when the size is bigger than it */
62 /* LIBVA_TRACE_BUFDATA */
63 static unsigned int trace_buffer_data; /* dump buffer data or not */
65 #define TRACE_CONTEXT_MAX 4
66 /* per context settings */
67 static struct _trace_context {
68 VADisplay dpy; /* should use context as the key */
71 FILE *trace_fp_log; /* save the log into a file */
72 char trace_log_fn[1024]; /* file name */
74 /* LIBVA_TRACE_CODEDBUF */
75 FILE *trace_fp_codedbuf; /* save the encode result into a file */
76 char trace_codedbuf_fn[1024]; /* file name */
78 /* LIBVA_TRACE_SURFACE */
79 FILE *trace_fp_surface; /* save the surface YUV into a file */
80 char trace_surface_fn[1024]; /* file name */
82 VAContextID trace_context; /* current context */
84 VASurfaceID trace_rendertarget; /* current render target */
85 VAProfile trace_profile; /* current profile for buffers */
86 VAEntrypoint trace_entrypoint; /* current entrypoint */
87 VABufferID trace_codedbuf;
89 unsigned int trace_frame_no; /* current frame NO */
90 unsigned int trace_slice_no; /* current slice NO */
91 unsigned int trace_slice_size; /* current slice buffer size */
93 unsigned int trace_frame_width; /* current frame width */
94 unsigned int trace_frame_height; /* current frame height */
95 unsigned int trace_sequence_start; /* get a new sequence for encoding or not */
96 } trace_context[TRACE_CONTEXT_MAX] = { {0} }; /* trace five context at the same time */
98 #define DPY2INDEX(dpy) \
101 for (idx = 0; idx < TRACE_CONTEXT_MAX; idx++) \
102 if (trace_context[idx].dpy == dpy) \
105 if (idx == TRACE_CONTEXT_MAX) \
108 #define TRACE_FUNCNAME(idx) va_TraceMsg(idx, "==========%s\n", __func__);
110 /* Prototype declarations (functions defined in va.c) */
112 void va_errorMessage(const char *msg, ...);
113 void va_infoMessage(const char *msg, ...);
115 int va_parseConfig(char *env, char *env_value);
117 VAStatus vaBufferInfo(
119 VAContextID context, /* in */
120 VABufferID buf_id, /* in */
121 VABufferType *type, /* out */
122 unsigned int *size, /* out */
123 unsigned int *num_elements /* out */
126 VAStatus vaLockSurface(VADisplay dpy,
128 unsigned int *fourcc, /* following are output argument */
129 unsigned int *luma_stride,
130 unsigned int *chroma_u_stride,
131 unsigned int *chroma_v_stride,
132 unsigned int *luma_offset,
133 unsigned int *chroma_u_offset,
134 unsigned int *chroma_v_offset,
135 unsigned int *buffer_name,
139 VAStatus vaUnlockSurface(VADisplay dpy,
144 void va_TraceInit(VADisplay dpy)
146 char env_value[1024];
147 unsigned int suffix = 0xffff & ((unsigned int)time(NULL));
151 for (trace_index = 0; trace_index < TRACE_CONTEXT_MAX; trace_index++)
152 if (trace_context[trace_index].dpy == 0)
155 if (trace_index == TRACE_CONTEXT_MAX)
158 if (va_parseConfig("LIBVA_TRACE", &env_value[0]) == 0) {
161 /*Check if there is still room for suffix .%d.%d*/
162 if (strnlen(env_value, 1024) < (1024 - 8))
163 snprintf(env_value+strnlen(env_value, 1024),
164 (1025 - 8 - strnlen(env_value, 1024)),
165 ".%d.%d", trace_index, suffix);
167 tmp = fopen(env_value, "w");
169 trace_context[trace_index].trace_fp_log = tmp;
170 strcpy(trace_context[trace_index].trace_log_fn, env_value);
172 trace_context[trace_index].trace_fp_log = stderr;
173 strcpy(trace_context[trace_index].trace_codedbuf_fn, "/dev/stderr");
175 va_infoMessage("LIBVA_TRACE is on, save log into %s\n", trace_context[trace_index].trace_log_fn);
181 /* may re-get the global settings for multiple context */
182 if (va_parseConfig("LIBVA_TRACE_LOGSIZE", &env_value[0]) == 0) {
183 trace_logsize = atoi(env_value);
184 va_infoMessage("LIBVA_TRACE_LOGSIZE is on, size is %d\n", trace_logsize);
188 if (va_parseConfig("LIBVA_TRACE_BUFDATA", NULL) == 0) {
189 trace_buffer_data = 1; /* dump buffer data */
190 va_infoMessage("LIBVA_TRACE_BUFDATA is on, dump buffer into log file\n");
194 /* per-context setting */
195 if (va_parseConfig("LIBVA_TRACE_CODEDBUF", &env_value[0]) == 0) {
196 if (strnlen(env_value, 1024) < (1024 - 8))
197 snprintf(env_value+strnlen(env_value, 1024),
198 (1025 - 8 - strnlen(env_value, 1024)),
199 ".%d.%d", trace_index, suffix);
201 tmp = fopen(env_value, "w");
204 trace_context[trace_index].trace_fp_codedbuf = tmp;
205 strcpy(trace_context[trace_index].trace_codedbuf_fn, env_value);
207 trace_context[trace_index].trace_fp_codedbuf = stderr;
208 strcpy(trace_context[trace_index].trace_codedbuf_fn, "/dev/stderr");
211 va_infoMessage("LIBVA_TRACE_CODEDBUF is on, save coded clip into %s\n", trace_context[trace_index].trace_codedbuf_fn);
214 if (va_parseConfig("LIBVA_TRACE_SURFACE", &env_value[0]) == 0) {
215 sprintf(env_value+strnlen(env_value, 1024), ".%d.%d", trace_index, suffix);
217 tmp = fopen(env_value, "w");
220 trace_context[trace_index].trace_fp_surface = tmp;
221 strcpy(trace_context[trace_index].trace_surface_fn, env_value);
223 trace_context[trace_index].trace_fp_surface = stderr;
224 strcpy(trace_context[trace_index].trace_surface_fn, "/dev/stderr");
227 va_infoMessage("LIBVA_TRACE_SURFACE is on, save coded clip into %s\n", trace_context[trace_index].trace_surface_fn);
230 trace_context[trace_index].dpy = dpy;
234 void va_TraceEnd(VADisplay dpy)
238 if (trace_context[idx].trace_fp_log && (trace_context[idx].trace_fp_log != stderr))
239 fclose(trace_context[idx].trace_fp_log);
241 if (trace_context[idx].trace_fp_codedbuf && (trace_context[idx].trace_fp_codedbuf != stderr))
242 fclose(trace_context[idx].trace_fp_codedbuf);
244 if (trace_context[idx].trace_fp_surface && (trace_context[idx].trace_fp_surface != stderr))
245 fclose(trace_context[idx].trace_fp_surface);
247 memset(&trace_context[idx], sizeof(struct _trace_context), 0);
251 static unsigned int file_size(FILE *fp)
255 fstat(fileno(fp), &buf);
261 static void truncate_file(FILE *fp)
263 ftruncate(fileno(fp), 0);
267 void va_TraceMsg(int idx, const char *msg, ...)
271 if (file_size(trace_context[idx].trace_fp_log) >= trace_logsize)
272 truncate_file(trace_context[idx].trace_fp_log);
276 vfprintf(trace_context[idx].trace_fp_log, msg, args);
279 fflush(trace_context[idx].trace_fp_log);
282 void va_TraceCodedBuf(VADisplay dpy)
284 VACodedBufferSegment *buf_list = NULL;
286 unsigned char check_sum = 0;
289 /* can only truncate at a sequence boudary */
290 if (((file_size(trace_context[idx].trace_fp_log) >= trace_logsize))
291 && trace_context[idx].trace_sequence_start) {
292 va_TraceMsg(idx, "==========truncate file %s\n", trace_context[idx].trace_codedbuf_fn);
293 truncate_file(trace_context[idx].trace_fp_log);
297 trace_context[idx].trace_sequence_start = 0; /* only truncate coded file when meet next new sequence */
299 va_status = vaMapBuffer(dpy, trace_context[idx].trace_codedbuf, (void **)(&buf_list));
300 if (va_status != VA_STATUS_SUCCESS)
303 va_TraceMsg(idx, "==========dump codedbuf into file %s\n", trace_context[idx].trace_codedbuf_fn);
305 while (buf_list != NULL) {
308 va_TraceMsg(idx, "\tsize = %d\n", buf_list->size);
309 if (trace_context[idx].trace_fp_log)
310 fwrite(buf_list->buf, buf_list->size, 1, trace_context[idx].trace_fp_codedbuf);
312 for (i=0; i<buf_list->size; i++)
313 check_sum ^= *((unsigned char *)buf_list->buf + i);
315 buf_list = buf_list->next;
317 vaUnmapBuffer(dpy,trace_context[idx].trace_codedbuf);
319 va_TraceMsg(idx, "\tchecksum = 0x%02x\n", check_sum);
320 va_TraceMsg(idx, NULL);
324 void va_TraceSurface(VADisplay dpy)
327 unsigned int fourcc; /* following are output argument */
328 unsigned int luma_stride;
329 unsigned int chroma_u_stride;
330 unsigned int chroma_v_stride;
331 unsigned int luma_offset;
332 unsigned int chroma_u_offset;
333 unsigned int chroma_v_offset;
334 unsigned int buffer_name;
336 unsigned char *Y_data, *UV_data, *tmp;
338 unsigned char check_sum = 0;
341 va_TraceMsg(idx, "==========dump surface data in file %s\n", trace_context[idx].trace_surface_fn);
343 if ((file_size(trace_context[idx].trace_fp_surface) >= trace_logsize)) {
344 va_TraceMsg(idx, "==========truncate file %s\n", trace_context[idx].trace_surface_fn);
345 truncate_file(trace_context[idx].trace_fp_surface);
347 va_TraceMsg(idx, NULL);
349 va_status = vaLockSurface(
351 trace_context[idx].trace_rendertarget,
353 &luma_stride, &chroma_u_stride, &chroma_v_stride,
354 &luma_offset, &chroma_u_offset, &chroma_v_offset,
355 &buffer_name, &buffer);
357 if (va_status != VA_STATUS_SUCCESS) {
358 va_TraceMsg(idx, "Error:vaLockSurface failed\n");
362 va_TraceMsg(idx, "\tfourcc = 0x%08x\n", fourcc);
363 va_TraceMsg(idx, "\twidth = %d\n", trace_context[idx].trace_frame_width);
364 va_TraceMsg(idx, "\theight = %d\n", trace_context[idx].trace_frame_height);
365 va_TraceMsg(idx, "\tluma_stride = %d\n", luma_stride);
366 va_TraceMsg(idx, "\tchroma_u_stride = %d\n", chroma_u_stride);
367 va_TraceMsg(idx, "\tchroma_v_stride = %d\n", chroma_v_stride);
368 va_TraceMsg(idx, "\tluma_offset = %d\n", luma_offset);
369 va_TraceMsg(idx, "\tchroma_u_offset = %d\n", chroma_u_offset);
370 va_TraceMsg(idx, "\tchroma_v_offset = %d\n", chroma_v_offset);
372 if (buffer == NULL) {
373 va_TraceMsg(idx, "Error:vaLockSurface return NULL buffer\n");
374 va_TraceMsg(idx, NULL);
376 vaUnlockSurface(dpy, trace_context[idx].trace_rendertarget);
379 va_TraceMsg(idx, "\tbuffer location = 0x%08x\n", buffer);
380 va_TraceMsg(idx, NULL);
382 Y_data = (unsigned char*)buffer;
383 UV_data = (unsigned char*)buffer + chroma_u_offset;
386 for (i=0; i<trace_context[idx].trace_frame_height; i++) {
387 for (j=0; j<trace_context[idx].trace_frame_width; j++)
390 if (trace_context[idx].trace_fp_surface)
391 fwrite(tmp, trace_context[idx].trace_frame_width, 1, trace_context[idx].trace_fp_surface);
393 tmp = Y_data + i * luma_stride;
397 if (fourcc == VA_FOURCC_NV12) {
398 for (i=0; i<trace_context[idx].trace_frame_height/2; i++) {
399 for (j=0; j<trace_context[idx].trace_frame_width; j++)
402 if (trace_context[idx].trace_fp_surface)
403 fwrite(tmp, trace_context[idx].trace_frame_width, 1, trace_context[idx].trace_fp_surface);
405 tmp = UV_data + i * chroma_u_stride;
409 vaUnlockSurface(dpy, trace_context[idx].trace_rendertarget);
411 va_TraceMsg(idx, "\tchecksum = 0x%02x\n", check_sum & 0xff);
412 va_TraceMsg(idx, NULL);
416 void va_TraceInitialize (
418 int *major_version, /* out */
419 int *minor_version /* out */
426 void va_TraceTerminate (
435 void va_TraceCreateConfig(
438 VAEntrypoint entrypoint,
439 VAConfigAttrib *attrib_list,
441 VAConfigID *config_id /* out */
449 va_TraceMsg(idx, "\tprofile = %d\n", profile);
450 va_TraceMsg(idx, "\tentrypoint = %d\n", entrypoint);
451 va_TraceMsg(idx, "\tnum_attribs = %d\n", num_attribs);
452 for (i = 0; i < num_attribs; i++) {
453 va_TraceMsg(idx, "\t\tattrib_list[%d].type = 0x%08x\n", i, attrib_list[i].type);
454 va_TraceMsg(idx, "\t\tattrib_list[%d].value = 0x%08x\n", i, attrib_list[i].value);
456 va_TraceMsg(idx, NULL);
458 trace_context[idx].trace_profile = profile;
459 trace_context[idx].trace_entrypoint = entrypoint;
463 void va_TraceCreateSurface(
469 VASurfaceID *surfaces /* out */
477 va_TraceMsg(idx, "\twidth = %d\n", width);
478 va_TraceMsg(idx, "\theight = %d\n", height);
479 va_TraceMsg(idx, "\tformat = %d\n", format);
480 va_TraceMsg(idx, "\tnum_surfaces = %d\n", num_surfaces);
482 for (i = 0; i < num_surfaces; i++)
483 va_TraceMsg(idx, "\t\tsurfaces[%d] = 0x%08x\n", i, surfaces[i]);
485 va_TraceMsg(idx, NULL);
489 void va_TraceCreateContext(
491 VAConfigID config_id,
495 VASurfaceID *render_targets,
496 int num_render_targets,
497 VAContextID *context /* out */
505 va_TraceMsg(idx, "\twidth = %d\n", picture_width);
506 va_TraceMsg(idx, "\theight = %d\n", picture_height);
507 va_TraceMsg(idx, "\tflag = 0x%08x\n", flag);
508 va_TraceMsg(idx, "\tnum_render_targets = %d\n", num_render_targets);
509 for (i=0; i<num_render_targets; i++)
510 va_TraceMsg(idx, "\t\trender_targets[%d] = 0x%08x\n", i, render_targets[i]);
511 va_TraceMsg(idx, "\tcontext = 0x%08x\n", *context);
512 va_TraceMsg(idx, NULL);
514 trace_context[idx].trace_context = *context;
516 trace_context[idx].trace_frame_no = 0;
517 trace_context[idx].trace_slice_no = 0;
519 trace_context[idx].trace_frame_width = picture_width;
520 trace_context[idx].trace_frame_height = picture_height;
524 static char * buffer_type_to_string(int type)
527 case VAPictureParameterBufferType: return "VAPictureParameterBufferType";
528 case VAIQMatrixBufferType: return "VAIQMatrixBufferType";
529 case VABitPlaneBufferType: return "VABitPlaneBufferType";
530 case VASliceGroupMapBufferType: return "VASliceGroupMapBufferType";
531 case VASliceParameterBufferType: return "VASliceParameterBufferType";
532 case VASliceDataBufferType: return "VASliceDataBufferType";
533 case VAProtectedSliceDataBufferType: return "VAProtectedSliceDataBufferType";
534 case VAMacroblockParameterBufferType: return "VAMacroblockParameterBufferType";
535 case VAResidualDataBufferType: return "VAResidualDataBufferType";
536 case VADeblockingParameterBufferType: return "VADeblockingParameterBufferType";
537 case VAImageBufferType: return "VAImageBufferType";
538 case VAEncCodedBufferType: return "VAEncCodedBufferType";
539 case VAEncSequenceParameterBufferType: return "VAEncSequenceParameterBufferType";
540 case VAEncPictureParameterBufferType: return "VAEncPictureParameterBufferType";
541 case VAEncSliceParameterBufferType: return "VAEncSliceParameterBufferType";
542 case VAEncMiscParameterBufferType: return "VAEncMiscParameterBufferType";
543 default: return "UnknowBuffer";
547 void va_TraceMapBuffer (
549 VABufferID buf_id, /* in */
550 void **pbuf /* out */
555 unsigned int num_elements;
557 VACodedBufferSegment *buf_list;
562 vaBufferInfo(dpy, trace_context[idx].trace_context, buf_id, &type, &size, &num_elements);
564 va_TraceMsg(idx, "\tbuf_id=0x%x\n", buf_id);
565 va_TraceMsg(idx, "\tbuf_type=%s\n", buffer_type_to_string(type));
566 va_TraceMsg(idx, "\tbuf_size=%s\n", size);
567 va_TraceMsg(idx, "\tbuf_elements=%s\n", &num_elements);
570 /* only trace CodedBuffer */
571 if (type != VAEncCodedBufferType)
574 buf_list = (VACodedBufferSegment *)(*pbuf);
575 while (buf_list != NULL) {
576 va_TraceMsg(idx, "\tCodedbuf[%d] =\n", i++);
578 va_TraceMsg(idx, "\t size = %d\n", buf_list->size);
579 va_TraceMsg(idx, "\t bit_offset = %d\n", buf_list->bit_offset);
580 va_TraceMsg(idx, "\t status = 0x%08x\n", buf_list->status);
581 va_TraceMsg(idx, "\t reserved = 0x%08x\n", buf_list->reserved);
582 va_TraceMsg(idx, "\t buf = 0x%08x\n", buf_list->buf);
584 buf_list = buf_list->next;
586 va_TraceMsg(idx, NULL);
589 static void va_TraceVABuffers(
595 unsigned int num_elements,
600 unsigned char *p = pbuf;
601 unsigned char check_sum = 0;
604 va_TraceMsg(idx, "%s\n", buffer_type_to_string(type));
606 for (i=0; i<size; i++) {
607 unsigned char value = p[i];
609 if ((trace_buffer_data) && ((i%16) == 0))
610 va_TraceMsg(idx, "\n0x%08x:", i);
612 if (trace_buffer_data)
613 va_TraceMsg(idx, " %02x", value);
618 va_TraceMsg(idx, "\tchecksum = 0x%02x\n", check_sum & 0xff);
619 va_TraceMsg(idx, NULL);
625 static void va_TraceVAPictureParameterBufferMPEG2(
631 unsigned int num_elements,
634 VAPictureParameterBufferMPEG2 *p=(VAPictureParameterBufferMPEG2 *)data;
637 va_TraceMsg(idx,"VAPictureParameterBufferH264\n");
639 va_TraceMsg(idx,"\thorizontal size= %d\n", p->horizontal_size);
640 va_TraceMsg(idx,"\tvertical size= %d\n", p->vertical_size);
641 va_TraceMsg(idx,"\tforward reference picture= %d\n", p->forward_reference_picture);
642 va_TraceMsg(idx,"\tbackward reference picture= %d\n", p->backward_reference_picture);
643 va_TraceMsg(idx,"\tpicture coding type= %d\n", p->picture_coding_type);
644 va_TraceMsg(idx,"\tf mode= %d\n", p->f_code);
646 va_TraceMsg(idx,"\tpicture coding extension = %d\n", p->picture_coding_extension.value);
647 va_TraceMsg(idx,"\tintra_dc_precision= %d\n", p->picture_coding_extension.bits.intra_dc_precision);
648 va_TraceMsg(idx,"\tpicture_structure= %d\n", p->picture_coding_extension.bits.picture_structure);
649 va_TraceMsg(idx,"\ttop_field_first= %d\n", p->picture_coding_extension.bits.top_field_first);
650 va_TraceMsg(idx,"\tframe_pred_frame_dct= %d\n", p->picture_coding_extension.bits.frame_pred_frame_dct);
651 va_TraceMsg(idx,"\tconcealment_motion_vectors= %d\n", p->picture_coding_extension.bits.concealment_motion_vectors);
652 va_TraceMsg(idx,"\tq_scale_type= %d\n", p->picture_coding_extension.bits.q_scale_type);
653 va_TraceMsg(idx,"\tintra_vlc_format= %d\n", p->picture_coding_extension.bits.intra_vlc_format);
654 va_TraceMsg(idx,"\talternate_scan= %d\n", p->picture_coding_extension.bits.alternate_scan);
655 va_TraceMsg(idx,"\trepeat_first_field= %d\n", p->picture_coding_extension.bits.repeat_first_field);
656 va_TraceMsg(idx,"\tprogressive_frame= %d\n", p->picture_coding_extension.bits.progressive_frame);
657 va_TraceMsg(idx,"\tis_first_field= %d\n", p->picture_coding_extension.bits.is_first_field);
658 va_TraceMsg(idx, NULL);
664 static void va_TraceVAIQMatrixBufferMPEG2(
670 unsigned int num_elements,
673 VAIQMatrixBufferMPEG2 *p=(VAIQMatrixBufferMPEG2 *)data;
676 va_TraceMsg(idx,"VAIQMatrixBufferMPEG2\n");
678 va_TraceMsg(idx,"\tload_intra_quantiser_matrix = %d\n", p->load_intra_quantiser_matrix);
679 va_TraceMsg(idx,"\tload_non_intra_quantiser_matrix = %d\n", p->load_non_intra_quantiser_matrix);
680 va_TraceMsg(idx,"\tload_chroma_intra_quantiser_matrix = %d\n", p->load_chroma_intra_quantiser_matrix);
681 va_TraceMsg(idx,"\tload_chroma_non_intra_quantiser_matrix = %d\n", p->load_chroma_non_intra_quantiser_matrix);
682 va_TraceMsg(idx,"\tintra_quantiser_matrix = %d\n", p->intra_quantiser_matrix);
683 va_TraceMsg(idx,"\tnon_intra_quantiser_matrix = %d\n", p->non_intra_quantiser_matrix);
684 va_TraceMsg(idx,"\tchroma_intra_quantiser_matrix = %d\n", p->chroma_intra_quantiser_matrix);
685 va_TraceMsg(idx,"\tchroma_non_intra_quantiser_matrix = %d\n", p->chroma_non_intra_quantiser_matrix);
686 va_TraceMsg(idx, NULL);
692 static void va_TraceVASliceParameterBufferMPEG2(
698 unsigned int num_elements,
701 VASliceParameterBufferMPEG2 *p=(VASliceParameterBufferMPEG2 *)data;
705 trace_context[idx].trace_slice_no++;
707 trace_context[idx].trace_slice_size = p->slice_data_size;
709 va_TraceMsg(idx,"VASliceParameterBufferMPEG2\n");
711 va_TraceMsg(idx,"\tslice_data_size = %d\n", p->slice_data_size);
712 va_TraceMsg(idx,"\tslice_data_offset = %d\n", p->slice_data_offset);
713 va_TraceMsg(idx,"\tslice_data_flag = %d\n", p->slice_data_flag);
714 va_TraceMsg(idx,"\tmacroblock_offset = %d\n", p->macroblock_offset);
715 va_TraceMsg(idx,"\tslice_horizontal_position = %d\n", p->slice_horizontal_position);
716 va_TraceMsg(idx,"\tslice_vertical_position = %d\n", p->slice_vertical_position);
717 va_TraceMsg(idx,"\tquantiser_scale_code = %d\n", p->quantiser_scale_code);
718 va_TraceMsg(idx,"\tintra_slice_flag = %d\n", p->intra_slice_flag);
719 va_TraceMsg(idx, NULL);
725 static void va_TraceVAPictureParameterBufferMPEG4(
731 unsigned int num_elements,
735 VAPictureParameterBufferMPEG4 *p=(VAPictureParameterBufferMPEG4 *)data;
739 va_TraceMsg(idx,"*VAPictureParameterBufferMPEG4\n");
740 va_TraceMsg(idx,"\tvop_width = %d\n", p->vop_width);
741 va_TraceMsg(idx,"\tvop_height = %d\n", p->vop_height);
742 va_TraceMsg(idx,"\tforward_reference_picture = %d\n", p->forward_reference_picture);
743 va_TraceMsg(idx,"\tbackward_reference_picture = %d\n", p->backward_reference_picture);
744 va_TraceMsg(idx,"\tvol_fields value = %d\n", p->vol_fields.value);
745 va_TraceMsg(idx,"\tshort_video_header= %d\n", p->vol_fields.bits.short_video_header);
746 va_TraceMsg(idx,"\tchroma_format= %d\n", p->vol_fields.bits.chroma_format);
747 va_TraceMsg(idx,"\tinterlaced= %d\n", p->vol_fields.bits.interlaced);
748 va_TraceMsg(idx,"\tobmc_disable= %d\n", p->vol_fields.bits.obmc_disable);
749 va_TraceMsg(idx,"\tsprite_enable= %d\n", p->vol_fields.bits.sprite_enable);
750 va_TraceMsg(idx,"\tsprite_warping_accuracy= %d\n", p->vol_fields.bits.sprite_warping_accuracy);
751 va_TraceMsg(idx,"\tquant_type= %d\n", p->vol_fields.bits.quant_type);
752 va_TraceMsg(idx,"\tquarter_sample= %d\n", p->vol_fields.bits.quarter_sample);
753 va_TraceMsg(idx,"\tdata_partitioned= %d\n", p->vol_fields.bits.data_partitioned);
754 va_TraceMsg(idx,"\treversible_vlc= %d\n", p->vol_fields.bits.reversible_vlc);
755 va_TraceMsg(idx,"\tresync_marker_disable= %d\n", p->vol_fields.bits.resync_marker_disable);
756 va_TraceMsg(idx,"\tno_of_sprite_warping_points = %d\n", p->no_of_sprite_warping_points);
757 va_TraceMsg(idx,"\tsprite_trajectory_du =");
759 va_TraceMsg(idx,"\t%d", p->sprite_trajectory_du[i]);
761 va_TraceMsg(idx,"\n");
762 va_TraceMsg(idx,"\tsprite_trajectory_dv =");
764 va_TraceMsg(idx,"\t%d", p->sprite_trajectory_dv[i]);
765 va_TraceMsg(idx,"\n");
766 va_TraceMsg(idx,"\tvop_fields value = %d\n", p->vop_fields.value);
767 va_TraceMsg(idx,"\tvop_coding_type= %d\n", p->vop_fields.bits.vop_coding_type);
768 va_TraceMsg(idx,"\tbackward_reference_vop_coding_type= %d\n", p->vop_fields.bits.backward_reference_vop_coding_type);
769 va_TraceMsg(idx,"\tvop_rounding_type= %d\n", p->vop_fields.bits.vop_rounding_type);
770 va_TraceMsg(idx,"\tintra_dc_vlc_thr= %d\n", p->vop_fields.bits.intra_dc_vlc_thr);
771 va_TraceMsg(idx,"\ttop_field_first= %d\n", p->vop_fields.bits.top_field_first);
772 va_TraceMsg(idx,"\talternate_vertical_scan_flag= %d\n", p->vop_fields.bits.alternate_vertical_scan_flag);
773 va_TraceMsg(idx,"\tvop_fcode_forward = %d\n", p->vop_fcode_forward);
774 va_TraceMsg(idx,"\tvop_fcode_backward = %d\n", p->vop_fcode_backward);
775 va_TraceMsg(idx,"\tnum_gobs_in_vop = %d\n", p->num_gobs_in_vop);
776 va_TraceMsg(idx,"\tnum_macroblocks_in_gob = %d\n", p->num_macroblocks_in_gob);
777 va_TraceMsg(idx,"\tTRB = %d\n", p->TRB);
778 va_TraceMsg(idx,"\tTRD = %d\n", p->TRD);
779 va_TraceMsg(idx, NULL);
785 static void va_TraceVAIQMatrixBufferMPEG4(
791 unsigned int num_elements,
795 VAIQMatrixBufferMPEG4 *p=(VAIQMatrixBufferMPEG4 *)data;
798 va_TraceMsg(idx,"VAIQMatrixBufferMPEG4\n");
800 va_TraceMsg(idx,"\tload_intra_quant_mat = %d\n", p->load_intra_quant_mat);
801 va_TraceMsg(idx,"\tload_non_intra_quant_mat = %d\n", p->load_non_intra_quant_mat);
802 va_TraceMsg(idx,"\tintra_quant_mat =\n");
804 va_TraceMsg(idx,"\t\t%d\n", p->intra_quant_mat[i]);
806 va_TraceMsg(idx,"\tnon_intra_quant_mat =\n");
808 va_TraceMsg(idx,"\t\t%d\n", p->non_intra_quant_mat[i]);
809 va_TraceMsg(idx, NULL);
815 static void va_TraceVASliceParameterBufferMPEG4(
821 unsigned int num_elements,
824 VASliceParameterBufferMPEG4 *p=(VASliceParameterBufferMPEG4 *)data;
828 trace_context[idx].trace_slice_no++;
830 trace_context[idx].trace_slice_size = p->slice_data_size;
832 va_TraceMsg(idx,"VASliceParameterBufferMPEG4\n");
834 va_TraceMsg(idx,"\tslice_data_size = %d\n", p->slice_data_size);
835 va_TraceMsg(idx,"\tslice_data_offset = %d\n", p->slice_data_offset);
836 va_TraceMsg(idx,"\tslice_data_flag = %d\n", p->slice_data_flag);
837 va_TraceMsg(idx,"\tmacroblock_offset = %d\n", p->macroblock_offset);
838 va_TraceMsg(idx,"\tmacroblock_number = %d\n", p->macroblock_number);
839 va_TraceMsg(idx,"\tquant_scale = %d\n", p->quant_scale);
840 va_TraceMsg(idx, NULL);
846 static inline void va_TraceFlagIfNotZero(
848 const char *name, /* in */
849 unsigned int flag /* in */
853 va_TraceMsg(idx, "%s = %x\n", name, flag);
858 static void va_TraceVAPictureParameterBufferH264(
864 unsigned int num_elements,
868 VAPictureParameterBufferH264 *p = (VAPictureParameterBufferH264*)data;
872 va_TraceMsg(idx, "VAPictureParameterBufferH264\n");
874 va_TraceMsg(idx, "\tCurrPic.picture_id = 0x%08x\n", p->CurrPic.picture_id);
875 va_TraceMsg(idx, "\tCurrPic.frame_idx = %d\n", p->CurrPic.frame_idx);
876 va_TraceMsg(idx, "\tCurrPic.flags = %d\n", p->CurrPic.flags);
877 va_TraceMsg(idx, "\tCurrPic.TopFieldOrderCnt = %d\n", p->CurrPic.TopFieldOrderCnt);
878 va_TraceMsg(idx, "\tCurrPic.BottomFieldOrderCnt = %d\n", p->CurrPic.BottomFieldOrderCnt);
880 va_TraceMsg(idx, "\tReferenceFrames (TopFieldOrderCnt-BottomFieldOrderCnt-picture_id-frame_idx:\n");
881 for (i = 0; i < 16; i++)
883 if (p->ReferenceFrames[i].flags != VA_PICTURE_H264_INVALID) {
884 va_TraceMsg(idx, "\t\t%d-%d-0x%08x-%d\n",
885 p->ReferenceFrames[i].TopFieldOrderCnt,
886 p->ReferenceFrames[i].BottomFieldOrderCnt,
887 p->ReferenceFrames[i].picture_id,
888 p->ReferenceFrames[i].frame_idx);
890 va_TraceMsg(idx, "\t\tinv-inv-inv-inv\n");
892 va_TraceMsg(idx, "\n");
894 va_TraceMsg(idx, "\tpicture_width_in_mbs_minus1 = %d\n", p->picture_width_in_mbs_minus1);
895 va_TraceMsg(idx, "\tpicture_height_in_mbs_minus1 = %d\n", p->picture_height_in_mbs_minus1);
896 va_TraceMsg(idx, "\tbit_depth_luma_minus8 = %d\n", p->bit_depth_luma_minus8);
897 va_TraceMsg(idx, "\tbit_depth_chroma_minus8 = %d\n", p->bit_depth_chroma_minus8);
898 va_TraceMsg(idx, "\tnum_ref_frames = %d\n", p->num_ref_frames);
899 va_TraceMsg(idx, "\tseq fields = %d\n", p->seq_fields.value);
900 va_TraceMsg(idx, "\tchroma_format_idc = %d\n", p->seq_fields.bits.chroma_format_idc);
901 va_TraceMsg(idx, "\tresidual_colour_transform_flag = %d\n", p->seq_fields.bits.residual_colour_transform_flag);
902 va_TraceMsg(idx, "\tframe_mbs_only_flag = %d\n", p->seq_fields.bits.frame_mbs_only_flag);
903 va_TraceMsg(idx, "\tmb_adaptive_frame_field_flag = %d\n", p->seq_fields.bits.mb_adaptive_frame_field_flag);
904 va_TraceMsg(idx, "\tdirect_8x8_inference_flag = %d\n", p->seq_fields.bits.direct_8x8_inference_flag);
905 va_TraceMsg(idx, "\tMinLumaBiPredSize8x8 = %d\n", p->seq_fields.bits.MinLumaBiPredSize8x8);
906 va_TraceMsg(idx, "\tnum_slice_groups_minus1 = %d\n", p->num_slice_groups_minus1);
907 va_TraceMsg(idx, "\tslice_group_map_type = %d\n", p->slice_group_map_type);
908 va_TraceMsg(idx, "\tslice_group_change_rate_minus1 = %d\n", p->slice_group_change_rate_minus1);
909 va_TraceMsg(idx, "\tpic_init_qp_minus26 = %d\n", p->pic_init_qp_minus26);
910 va_TraceMsg(idx, "\tpic_init_qs_minus26 = %d\n", p->pic_init_qs_minus26);
911 va_TraceMsg(idx, "\tchroma_qp_index_offset = %d\n", p->chroma_qp_index_offset);
912 va_TraceMsg(idx, "\tsecond_chroma_qp_index_offset = %d\n", p->second_chroma_qp_index_offset);
913 va_TraceMsg(idx, "\tpic_fields = 0x%03x\n", p->pic_fields.value);
914 va_TraceFlagIfNotZero(idx, "\t\tentropy_coding_mode_flag", p->pic_fields.bits.entropy_coding_mode_flag);
915 va_TraceFlagIfNotZero(idx, "\t\tweighted_pred_flag", p->pic_fields.bits.weighted_pred_flag);
916 va_TraceFlagIfNotZero(idx, "\t\tweighted_bipred_idc", p->pic_fields.bits.weighted_bipred_idc);
917 va_TraceFlagIfNotZero(idx, "\t\ttransform_8x8_mode_flag", p->pic_fields.bits.transform_8x8_mode_flag);
918 va_TraceFlagIfNotZero(idx, "\t\tfield_pic_flag", p->pic_fields.bits.field_pic_flag);
919 va_TraceFlagIfNotZero(idx, "\t\tconstrained_intra_pred_flag", p->pic_fields.bits.constrained_intra_pred_flag);
920 va_TraceFlagIfNotZero(idx, "\t\tpic_order_present_flag", p->pic_fields.bits.pic_order_present_flag);
921 va_TraceFlagIfNotZero(idx, "\t\tdeblocking_filter_control_present_flag", p->pic_fields.bits.deblocking_filter_control_present_flag);
922 va_TraceFlagIfNotZero(idx, "\t\tredundant_pic_cnt_present_flag", p->pic_fields.bits.redundant_pic_cnt_present_flag);
923 va_TraceFlagIfNotZero(idx, "\t\treference_pic_flag", p->pic_fields.bits.reference_pic_flag);
924 va_TraceMsg(idx, "\tframe_num = %d\n", p->frame_num);
925 va_TraceMsg(idx, NULL);
930 static void va_TraceVASliceParameterBufferH264(
936 unsigned int num_elements,
940 VASliceParameterBufferH264* p = (VASliceParameterBufferH264*)data;
943 trace_context[idx].trace_slice_no++;
944 trace_context[idx].trace_slice_size = p->slice_data_size;
946 va_TraceMsg(idx, "VASliceParameterBufferH264\n");
947 va_TraceMsg(idx, "\tslice_data_size = %d\n", p->slice_data_size);
948 va_TraceMsg(idx, "\tslice_data_offset = %d\n", p->slice_data_offset);
949 va_TraceMsg(idx, "\tslice_data_flag = %d\n", p->slice_data_flag);
950 va_TraceMsg(idx, "\tslice_data_bit_offset = %d\n", p->slice_data_bit_offset);
951 va_TraceMsg(idx, "\tfirst_mb_in_slice = %d\n", p->first_mb_in_slice);
952 va_TraceMsg(idx, "\tslice_type = %d\n", p->slice_type);
953 va_TraceMsg(idx, "\tdirect_spatial_mv_pred_flag = %d\n", p->direct_spatial_mv_pred_flag);
954 va_TraceMsg(idx, "\tnum_ref_idx_l0_active_minus1 = %d\n", p->num_ref_idx_l0_active_minus1);
955 va_TraceMsg(idx, "\tnum_ref_idx_l1_active_minus1 = %d\n", p->num_ref_idx_l1_active_minus1);
956 va_TraceMsg(idx, "\tcabac_init_idc = %d\n", p->cabac_init_idc);
957 va_TraceMsg(idx, "\tslice_qp_delta = %d\n", p->slice_qp_delta);
958 va_TraceMsg(idx, "\tdisable_deblocking_filter_idc = %d\n", p->disable_deblocking_filter_idc);
959 va_TraceMsg(idx, "\tslice_alpha_c0_offset_div2 = %d\n", p->slice_alpha_c0_offset_div2);
960 va_TraceMsg(idx, "\tslice_beta_offset_div2 = %d\n", p->slice_beta_offset_div2);
962 if (p->slice_type == 0 || p->slice_type == 1) {
963 va_TraceMsg(idx, "\tRefPicList0 =");
964 for (i = 0; i < p->num_ref_idx_l0_active_minus1 + 1; i++) {
965 va_TraceMsg(idx, "%d-%d-0x%08x-%d\n", p->RefPicList0[i].TopFieldOrderCnt, p->RefPicList0[i].BottomFieldOrderCnt, p->RefPicList0[i].picture_id, p->RefPicList0[i].frame_idx);
967 if (p->slice_type == 1) {
968 va_TraceMsg(idx, "\tRefPicList1 =");
969 for (i = 0; i < p->num_ref_idx_l1_active_minus1 + 1; i++)
971 va_TraceMsg(idx, "%d-%d-0x%08x-%d\n", p->RefPicList1[i].TopFieldOrderCnt, p->RefPicList1[i].BottomFieldOrderCnt, p->RefPicList1[i].picture_id, p->RefPicList1[i].frame_idx);
976 va_TraceMsg(idx, "\tluma_log2_weight_denom = %d\n", p->luma_log2_weight_denom);
977 va_TraceMsg(idx, "\tchroma_log2_weight_denom = %d\n", p->chroma_log2_weight_denom);
978 va_TraceMsg(idx, "\tluma_weight_l0_flag = %d\n", p->luma_weight_l0_flag);
979 if (p->luma_weight_l0_flag) {
980 for (i = 0; i <= p->num_ref_idx_l0_active_minus1; i++) {
981 va_TraceMsg(idx, "\t%d ", p->luma_weight_l0[i]);
982 va_TraceMsg(idx, "\t%d ", p->luma_offset_l0[i]);
986 va_TraceMsg(idx, "\tchroma_weight_l0_flag = %d\n", p->chroma_weight_l0_flag);
987 if (p->chroma_weight_l0_flag) {
988 for (i = 0; i <= p->num_ref_idx_l0_active_minus1; i++) {
989 va_TraceMsg(idx, "\t\t%d ", p->chroma_weight_l0[i][0]);
990 va_TraceMsg(idx, "\t\t%d ", p->chroma_offset_l0[i][0]);
991 va_TraceMsg(idx, "\t\t%d ", p->chroma_weight_l0[i][1]);
992 va_TraceMsg(idx, "\t\t%d ", p->chroma_offset_l0[i][1]);
996 va_TraceMsg(idx, "\tluma_weight_l1_flag = %d\n", p->luma_weight_l1_flag);
997 if (p->luma_weight_l1_flag) {
998 for (i = 0; i <= p->num_ref_idx_l1_active_minus1; i++) {
999 va_TraceMsg(idx, "\t\t%d ", p->luma_weight_l1[i]);
1000 va_TraceMsg(idx, "\t\t%d ", p->luma_offset_l1[i]);
1004 va_TraceMsg(idx, "\tchroma_weight_l1_flag = %d\n", p->chroma_weight_l1_flag);
1005 if (p->chroma_weight_l1_flag) {
1006 for (i = 0; i <= p->num_ref_idx_l1_active_minus1; i++) {
1007 va_TraceMsg(idx, "\t\t%d ", p->chroma_weight_l1[i][0]);
1008 va_TraceMsg(idx, "\t\t%d ", p->chroma_offset_l1[i][0]);
1009 va_TraceMsg(idx, "\t\t%d ", p->chroma_weight_l1[i][1]);
1010 va_TraceMsg(idx, "\t\t%d ", p->chroma_offset_l1[i][1]);
1012 va_TraceMsg(idx, "\n");
1014 va_TraceMsg(idx, NULL);
1017 static void va_TraceVAIQMatrixBufferH264(
1019 VAContextID context,
1023 unsigned int num_elements,
1028 VAIQMatrixBufferH264* p = (VAIQMatrixBufferH264* )data;
1032 va_TraceMsg(idx, "VAIQMatrixBufferH264\n");
1034 va_TraceMsg(idx, "\tScalingList4x4[6][16]=\n");
1035 for (i = 0; i < 6; i++) {
1036 for (j = 0; j < 16; j++) {
1037 va_TraceMsg(idx, "\t%d\t", p->ScalingList4x4[i][j]);
1038 if ((j + 1) % 8 == 0)
1039 va_TraceMsg(idx, "\n");
1043 va_TraceMsg(idx, "\tScalingList8x8[2][64]=\n");
1044 for (i = 0; i < 2; i++) {
1045 for (j = 0; j < 64; j++) {
1046 va_TraceMsg(idx, "\t%d", p->ScalingList8x8[i][j]);
1047 if ((j + 1) % 8 == 0)
1048 va_TraceMsg(idx, "\n");
1052 va_TraceMsg(idx, NULL);
1055 static void va_TraceVAEncSequenceParameterBufferH264(
1057 VAContextID context,
1061 unsigned int num_elements,
1064 VAEncSequenceParameterBufferH264 *p = (VAEncSequenceParameterBufferH264 *)data;
1067 va_TraceMsg(idx, "VAEncSequenceParameterBufferH264\n");
1069 va_TraceMsg(idx, "\tseq_parameter_set_id = %d\n", p->seq_parameter_set_id);
1070 va_TraceMsg(idx, "\tlevel_idc = %d\n", p->level_idc);
1071 va_TraceMsg(idx, "\tintra_period = %d\n", p->intra_period);
1072 va_TraceMsg(idx, "\tintra_idr_period = %d\n", p->intra_idr_period);
1073 va_TraceMsg(idx, "\tmax_num_ref_frames = %d\n", p->max_num_ref_frames);
1074 va_TraceMsg(idx, "\tpicture_width_in_mbs = %d\n", p->picture_width_in_mbs);
1075 va_TraceMsg(idx, "\tpicture_height_in_mbs = %d\n", p->picture_height_in_mbs);
1076 va_TraceMsg(idx, "\tbits_per_second = %d\n", p->bits_per_second);
1077 va_TraceMsg(idx, "\tframe_rate = %d\n", p->frame_rate);
1078 va_TraceMsg(idx, "\tinitial_qp = %d\n", p->initial_qp);
1079 va_TraceMsg(idx, "\tmin_qp = %d\n", p->min_qp);
1080 va_TraceMsg(idx, "\tbasic_unit_size = %d\n", p->basic_unit_size);
1081 va_TraceMsg(idx, "\tvui_flag = %d\n", p->vui_flag);
1082 va_TraceMsg(idx, NULL);
1084 /* start a new sequce, coded log file can be truncated */
1085 trace_context[idx].trace_sequence_start = 1;
1090 static void va_TraceVAEncPictureParameterBufferH264(
1092 VAContextID context,
1096 unsigned int num_elements,
1099 VAEncPictureParameterBufferH264 *p = (VAEncPictureParameterBufferH264 *)data;
1102 va_TraceMsg(idx, "VAEncPictureParameterBufferH264\n");
1103 va_TraceMsg(idx, "\treference_picture = 0x%08x\n", p->reference_picture);
1104 va_TraceMsg(idx, "\treconstructed_picture = 0x%08x\n", p->reconstructed_picture);
1105 va_TraceMsg(idx, "\tcoded_buf = %08x\n", p->coded_buf);
1106 va_TraceMsg(idx, "\tpicture_width = %d\n", p->picture_width);
1107 va_TraceMsg(idx, "\tpicture_height = %d\n", p->picture_height);
1108 va_TraceMsg(idx, "\tlast_picture = 0x%08x\n", p->last_picture);
1109 va_TraceMsg(idx, NULL);
1111 trace_context[idx].trace_codedbuf = p->coded_buf;
1117 static void va_TraceVAEncSliceParameterBuffer(
1119 VAContextID context,
1123 unsigned int num_elements,
1126 VAEncSliceParameterBuffer* p = (VAEncSliceParameterBuffer*)data;
1129 va_TraceMsg(idx, "VAEncSliceParameterBuffer\n");
1131 va_TraceMsg(idx, "\tstart_row_number = %d\n", p->start_row_number);
1132 va_TraceMsg(idx, "\tslice_height = %d\n", p->slice_height);
1133 va_TraceMsg(idx, "\tslice_flags.is_intra = %d\n", p->slice_flags.bits.is_intra);
1134 va_TraceMsg(idx, "\tslice_flags.disable_deblocking_filter_idc = %d\n", p->slice_flags.bits.disable_deblocking_filter_idc);
1135 va_TraceMsg(idx, "\tslice_flags.uses_long_term_ref = %d\n", p->slice_flags.bits.uses_long_term_ref);
1136 va_TraceMsg(idx, "\tslice_flags.is_long_term_ref = %d\n", p->slice_flags.bits.is_long_term_ref);
1137 va_TraceMsg(idx, NULL);
1142 static void va_TraceVAEncMiscParameterBuffer(
1144 VAContextID context,
1148 unsigned int num_elements,
1151 VAEncMiscParameterBuffer* tmp = (VAEncMiscParameterBuffer*)data;
1154 switch (tmp->type) {
1155 case VAEncMiscParameterTypeFrameRate:
1157 VAEncMiscParameterFrameRate *p = (VAEncMiscParameterFrameRate *)tmp->data;
1158 va_TraceMsg(idx, "VAEncMiscParameterFrameRate\n");
1159 va_TraceMsg(idx, "\tframerate = %d\n", p->framerate);
1163 case VAEncMiscParameterTypeRateControl:
1165 VAEncMiscParameterRateControl *p = (VAEncMiscParameterRateControl *)tmp->data;
1167 va_TraceMsg(idx, "VAEncMiscParameterRateControl\n");
1168 va_TraceMsg(idx, "\tbits_per_second = %d\n", p->bits_per_second);
1169 va_TraceMsg(idx, "\twindow_size = %d\n", p->window_size);
1170 va_TraceMsg(idx, "\tinitial_qp = %d\n", p->initial_qp);
1171 va_TraceMsg(idx, "\tmin_qp = %d\n", p->min_qp);
1174 case VAEncMiscParameterTypeMaxSliceSize:
1176 VAEncMiscParameterMaxSliceSize *p = (VAEncMiscParameterMaxSliceSize *)tmp->data;
1178 va_TraceMsg(idx, "VAEncMiscParameterTypeMaxSliceSize\n");
1179 va_TraceMsg(idx, "\tmax_slice_size = %d\n", p->max_slice_size);
1182 case VAEncMiscParameterTypeAIR:
1184 VAEncMiscParameterAIR *p = (VAEncMiscParameterAIR *)tmp->data;
1186 va_TraceMsg(idx, "VAEncMiscParameterAIR\n");
1187 va_TraceMsg(idx, "\tair_num_mbs = %d\n", p->air_num_mbs);
1188 va_TraceMsg(idx, "\tair_threshold = %d\n", p->air_threshold);
1189 va_TraceMsg(idx, "\tair_auto = %d\n", p->air_auto);
1193 va_TraceMsg(idx, "invalid VAEncMiscParameterBuffer type = %d\n", tmp->type);
1196 va_TraceMsg(idx, NULL);
1202 static void va_TraceVAPictureParameterBufferVC1(
1204 VAContextID context,
1208 unsigned int num_elements,
1212 VAPictureParameterBufferVC1* p = (VAPictureParameterBufferVC1*)data;
1215 va_TraceMsg(idx, "VAPictureParameterBufferVC1\n");
1217 va_TraceMsg(idx, "\tforward_reference_picture = 0x%08x\n", p->forward_reference_picture);
1218 va_TraceMsg(idx, "\tbackward_reference_picture = 0x%08x\n", p->backward_reference_picture);
1219 va_TraceMsg(idx, "\tinloop_decoded_picture = 0x%08x\n", p->inloop_decoded_picture);
1221 va_TraceMsg(idx, "\tpulldown = %d\n", p->sequence_fields.bits.pulldown);
1222 va_TraceMsg(idx, "\tinterlace = %d\n", p->sequence_fields.bits.interlace);
1223 va_TraceMsg(idx, "\ttfcntrflag = %d\n", p->sequence_fields.bits.tfcntrflag);
1224 va_TraceMsg(idx, "\tfinterpflag = %d\n", p->sequence_fields.bits.finterpflag);
1225 va_TraceMsg(idx, "\tpsf = %d\n", p->sequence_fields.bits.psf);
1226 va_TraceMsg(idx, "\tmultires = %d\n", p->sequence_fields.bits.multires);
1227 va_TraceMsg(idx, "\toverlap = %d\n", p->sequence_fields.bits.overlap);
1228 va_TraceMsg(idx, "\tsyncmarker = %d\n", p->sequence_fields.bits.syncmarker);
1229 va_TraceMsg(idx, "\trangered = %d\n", p->sequence_fields.bits.rangered);
1230 va_TraceMsg(idx, "\tmax_b_frames = %d\n", p->sequence_fields.bits.max_b_frames);
1231 va_TraceMsg(idx, "\tprofile = %d\n", p->sequence_fields.bits.profile);
1232 va_TraceMsg(idx, "\tcoded_width = %d\n", p->coded_width);
1233 va_TraceMsg(idx, "\tcoded_height = %d\n", p->coded_height);
1234 va_TraceMsg(idx, "\tclosed_entry = %d\n", p->entrypoint_fields.bits.closed_entry);
1235 va_TraceMsg(idx, "\tbroken_link = %d\n", p->entrypoint_fields.bits.broken_link);
1236 va_TraceMsg(idx, "\tclosed_entry = %d\n", p->entrypoint_fields.bits.closed_entry);
1237 va_TraceMsg(idx, "\tpanscan_flag = %d\n", p->entrypoint_fields.bits.panscan_flag);
1238 va_TraceMsg(idx, "\tloopfilter = %d\n", p->entrypoint_fields.bits.loopfilter);
1239 va_TraceMsg(idx, "\tconditional_overlap_flag = %d\n", p->conditional_overlap_flag);
1240 va_TraceMsg(idx, "\tfast_uvmc_flag = %d\n", p->fast_uvmc_flag);
1241 va_TraceMsg(idx, "\trange_mapping_luma_flag = %d\n", p->range_mapping_fields.bits.luma_flag);
1242 va_TraceMsg(idx, "\trange_mapping_luma = %d\n", p->range_mapping_fields.bits.luma);
1243 va_TraceMsg(idx, "\trange_mapping_chroma_flag = %d\n", p->range_mapping_fields.bits.chroma_flag);
1244 va_TraceMsg(idx, "\trange_mapping_chroma = %d\n", p->range_mapping_fields.bits.chroma);
1245 va_TraceMsg(idx, "\tb_picture_fraction = %d\n", p->b_picture_fraction);
1246 va_TraceMsg(idx, "\tcbp_table = %d\n", p->cbp_table);
1247 va_TraceMsg(idx, "\tmb_mode_table = %d\n", p->mb_mode_table);
1248 va_TraceMsg(idx, "\trange_reduction_frame = %d\n", p->range_reduction_frame);
1249 va_TraceMsg(idx, "\trounding_control = %d\n", p->rounding_control);
1250 va_TraceMsg(idx, "\tpost_processing = %d\n", p->post_processing);
1251 va_TraceMsg(idx, "\tpicture_resolution_index = %d\n", p->picture_resolution_index);
1252 va_TraceMsg(idx, "\tluma_scale = %d\n", p->luma_scale);
1253 va_TraceMsg(idx, "\tluma_shift = %d\n", p->luma_shift);
1254 va_TraceMsg(idx, "\tpicture_type = %d\n", p->picture_fields.bits.picture_type);
1255 va_TraceMsg(idx, "\tframe_coding_mode = %d\n", p->picture_fields.bits.frame_coding_mode);
1256 va_TraceMsg(idx, "\ttop_field_first = %d\n", p->picture_fields.bits.top_field_first);
1257 va_TraceMsg(idx, "\tis_first_field = %d\n", p->picture_fields.bits.is_first_field);
1258 va_TraceMsg(idx, "\tintensity_compensation = %d\n", p->picture_fields.bits.intensity_compensation);
1259 va_TraceMsg(idx, "\tmv_type_mb = %d\n", p->raw_coding.flags.mv_type_mb);
1260 va_TraceMsg(idx, "\tdirect_mb = %d\n", p->raw_coding.flags.direct_mb);
1261 va_TraceMsg(idx, "\tskip_mb = %d\n", p->raw_coding.flags.skip_mb);
1262 va_TraceMsg(idx, "\tfield_tx = %d\n", p->raw_coding.flags.field_tx);
1263 va_TraceMsg(idx, "\tforward_mb = %d\n", p->raw_coding.flags.forward_mb);
1264 va_TraceMsg(idx, "\tac_pred = %d\n", p->raw_coding.flags.ac_pred);
1265 va_TraceMsg(idx, "\toverflags = %d\n", p->raw_coding.flags.overflags);
1266 va_TraceMsg(idx, "\tbp_mv_type_mb = %d\n", p->bitplane_present.flags.bp_mv_type_mb);
1267 va_TraceMsg(idx, "\tbp_direct_mb = %d\n", p->bitplane_present.flags.bp_direct_mb);
1268 va_TraceMsg(idx, "\tbp_skip_mb = %d\n", p->bitplane_present.flags.bp_skip_mb);
1269 va_TraceMsg(idx, "\tbp_field_tx = %d\n", p->bitplane_present.flags.bp_field_tx);
1270 va_TraceMsg(idx, "\tbp_forward_mb = %d\n", p->bitplane_present.flags.bp_forward_mb);
1271 va_TraceMsg(idx, "\tbp_ac_pred = %d\n", p->bitplane_present.flags.bp_ac_pred);
1272 va_TraceMsg(idx, "\tbp_overflags = %d\n", p->bitplane_present.flags.bp_overflags);
1273 va_TraceMsg(idx, "\treference_distance_flag = %d\n", p->reference_fields.bits.reference_distance_flag);
1274 va_TraceMsg(idx, "\treference_distance = %d\n", p->reference_fields.bits.reference_distance);
1275 va_TraceMsg(idx, "\tnum_reference_pictures = %d\n", p->reference_fields.bits.num_reference_pictures);
1276 va_TraceMsg(idx, "\treference_field_pic_indicator = %d\n", p->reference_fields.bits.reference_field_pic_indicator);
1277 va_TraceMsg(idx, "\tmv_mode = %d\n", p->mv_fields.bits.mv_mode);
1278 va_TraceMsg(idx, "\tmv_mode2 = %d\n", p->mv_fields.bits.mv_mode2);
1279 va_TraceMsg(idx, "\tmv_table = %d\n", p->mv_fields.bits.mv_table);
1280 va_TraceMsg(idx, "\ttwo_mv_block_pattern_table = %d\n", p->mv_fields.bits.two_mv_block_pattern_table);
1281 va_TraceMsg(idx, "\tfour_mv_switch = %d\n", p->mv_fields.bits.four_mv_switch);
1282 va_TraceMsg(idx, "\tfour_mv_block_pattern_table = %d\n", p->mv_fields.bits.four_mv_block_pattern_table);
1283 va_TraceMsg(idx, "\textended_mv_flag = %d\n", p->mv_fields.bits.extended_mv_flag);
1284 va_TraceMsg(idx, "\textended_mv_range = %d\n", p->mv_fields.bits.extended_mv_range);
1285 va_TraceMsg(idx, "\textended_dmv_flag = %d\n", p->mv_fields.bits.extended_dmv_flag);
1286 va_TraceMsg(idx, "\textended_dmv_range = %d\n", p->mv_fields.bits.extended_dmv_range);
1287 va_TraceMsg(idx, "\tdquant = %d\n", p->pic_quantizer_fields.bits.dquant);
1288 va_TraceMsg(idx, "\tquantizer = %d\n", p->pic_quantizer_fields.bits.quantizer);
1289 va_TraceMsg(idx, "\thalf_qp = %d\n", p->pic_quantizer_fields.bits.half_qp);
1290 va_TraceMsg(idx, "\tpic_quantizer_scale = %d\n", p->pic_quantizer_fields.bits.pic_quantizer_scale);
1291 va_TraceMsg(idx, "\tpic_quantizer_type = %d\n", p->pic_quantizer_fields.bits.pic_quantizer_type);
1292 va_TraceMsg(idx, "\tdq_frame = %d\n", p->pic_quantizer_fields.bits.dq_frame);
1293 va_TraceMsg(idx, "\tdq_profile = %d\n", p->pic_quantizer_fields.bits.dq_profile);
1294 va_TraceMsg(idx, "\tdq_sb_edge = %d\n", p->pic_quantizer_fields.bits.dq_sb_edge);
1295 va_TraceMsg(idx, "\tdq_db_edge = %d\n", p->pic_quantizer_fields.bits.dq_db_edge);
1296 va_TraceMsg(idx, "\tdq_binary_level = %d\n", p->pic_quantizer_fields.bits.dq_binary_level);
1297 va_TraceMsg(idx, "\talt_pic_quantizer = %d\n", p->pic_quantizer_fields.bits.alt_pic_quantizer);
1298 va_TraceMsg(idx, "\tvariable_sized_transform_flag = %d\n", p->transform_fields.bits.variable_sized_transform_flag);
1299 va_TraceMsg(idx, "\tmb_level_transform_type_flag = %d\n", p->transform_fields.bits.mb_level_transform_type_flag);
1300 va_TraceMsg(idx, "\tframe_level_transform_type = %d\n", p->transform_fields.bits.frame_level_transform_type);
1301 va_TraceMsg(idx, "\ttransform_ac_codingset_idx1 = %d\n", p->transform_fields.bits.transform_ac_codingset_idx1);
1302 va_TraceMsg(idx, "\ttransform_ac_codingset_idx2 = %d\n", p->transform_fields.bits.transform_ac_codingset_idx2);
1303 va_TraceMsg(idx, "\tintra_transform_dc_table = %d\n", p->transform_fields.bits.intra_transform_dc_table);
1304 va_TraceMsg(idx, NULL);
1307 static void va_TraceVASliceParameterBufferVC1(
1309 VAContextID context,
1313 unsigned int num_elements,
1317 VASliceParameterBufferVC1 *p = (VASliceParameterBufferVC1*)data;
1320 trace_context[idx].trace_slice_no++;
1321 trace_context[idx].trace_slice_size = p->slice_data_size;
1323 va_TraceMsg(idx, "VASliceParameterBufferVC1\n");
1324 va_TraceMsg(idx, "\tslice_data_size = %d\n", p->slice_data_size);
1325 va_TraceMsg(idx, "\tslice_data_offset = %d\n", p->slice_data_offset);
1326 va_TraceMsg(idx, "\tslice_data_flag = %d\n", p->slice_data_flag);
1327 va_TraceMsg(idx, "\tmacroblock_offset = %d\n", p->macroblock_offset);
1328 va_TraceMsg(idx, "\tslice_vertical_position = %d\n", p->slice_vertical_position);
1329 va_TraceMsg(idx, NULL);
1332 void va_TraceBeginPicture(
1334 VAContextID context,
1335 VASurfaceID render_target
1340 TRACE_FUNCNAME(idx);
1342 va_TraceMsg(idx, "\tcontext = 0x%08x\n", context);
1343 va_TraceMsg(idx, "\trender_targets = 0x%08x\n", render_target);
1344 va_TraceMsg(idx, "\tframe_count = #%d\n", trace_context[idx].trace_frame_no);
1345 va_TraceMsg(idx, NULL);
1347 trace_context[idx].trace_rendertarget = render_target; /* for surface data dump after vaEndPicture */
1349 trace_context[idx].trace_frame_no++;
1350 trace_context[idx].trace_slice_no = 0;
1353 static void va_TraceMPEG2Buf(
1355 VAContextID context,
1359 unsigned int num_elements,
1364 case VAPictureParameterBufferType:
1365 va_TraceVAPictureParameterBufferMPEG2(dpy, context, buffer, type, size, num_elements, pbuf);
1367 case VAIQMatrixBufferType:
1368 va_TraceVAIQMatrixBufferMPEG2(dpy, context, buffer, type, size, num_elements, pbuf);
1370 case VABitPlaneBufferType:
1371 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
1373 case VASliceGroupMapBufferType:
1374 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
1376 case VASliceParameterBufferType:
1377 va_TraceVASliceParameterBufferMPEG2(dpy, context, buffer, type, size, num_elements, pbuf);
1379 case VASliceDataBufferType:
1380 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
1382 case VAMacroblockParameterBufferType:
1383 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
1385 case VAResidualDataBufferType:
1386 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
1388 case VADeblockingParameterBufferType:
1389 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
1391 case VAImageBufferType:
1393 case VAProtectedSliceDataBufferType:
1394 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
1396 case VAEncCodedBufferType:
1398 case VAEncSequenceParameterBufferType:
1400 case VAEncPictureParameterBufferType:
1402 case VAEncSliceParameterBufferType:
1404 case VAEncH264VUIBufferType:
1406 case VAEncH264SEIBufferType:
1413 static void va_TraceMPEG4Buf(
1415 VAContextID context,
1419 unsigned int num_elements,
1424 case VAPictureParameterBufferType:
1425 va_TraceVAPictureParameterBufferMPEG4(dpy, context, buffer, type, size, num_elements, pbuf);
1427 case VAIQMatrixBufferType:
1428 va_TraceVAIQMatrixBufferMPEG4(dpy, context, buffer, type, size, num_elements, pbuf);
1430 case VABitPlaneBufferType:
1431 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
1433 case VASliceGroupMapBufferType:
1435 case VASliceParameterBufferType:
1436 va_TraceVASliceParameterBufferMPEG4(dpy, context, buffer, type, size, num_elements, pbuf);
1438 case VASliceDataBufferType:
1439 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
1441 case VAMacroblockParameterBufferType:
1442 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
1444 case VAResidualDataBufferType:
1445 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
1447 case VADeblockingParameterBufferType:
1448 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
1450 case VAImageBufferType:
1452 case VAProtectedSliceDataBufferType:
1453 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
1455 case VAEncCodedBufferType:
1457 case VAEncSequenceParameterBufferType:
1458 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
1460 case VAEncPictureParameterBufferType:
1461 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
1463 case VAEncSliceParameterBufferType:
1464 va_TraceVAEncSliceParameterBuffer(dpy, context, buffer, type, size, num_elements, pbuf);
1466 case VAEncH264VUIBufferType:
1468 case VAEncH264SEIBufferType:
1476 static void va_TraceH264Buf(
1478 VAContextID context,
1482 unsigned int num_elements,
1489 case VAPictureParameterBufferType:
1490 va_TraceVAPictureParameterBufferH264(dpy, context, buffer, type, size, num_elements, pbuf);
1492 case VAIQMatrixBufferType:
1493 va_TraceVAIQMatrixBufferH264(dpy, context, buffer, type, size, num_elements, pbuf);
1495 case VABitPlaneBufferType:
1496 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
1498 case VASliceGroupMapBufferType:
1499 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
1501 case VASliceParameterBufferType:
1502 va_TraceVASliceParameterBufferH264(dpy, context, buffer, type, size, num_elements, pbuf);
1504 case VASliceDataBufferType:
1505 va_TraceVABuffers(dpy, context, buffer, type, trace_context[idx].trace_slice_size, num_elements, pbuf);
1507 case VAMacroblockParameterBufferType:
1508 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
1510 case VAResidualDataBufferType:
1511 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
1513 case VADeblockingParameterBufferType:
1514 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
1516 case VAImageBufferType:
1518 case VAProtectedSliceDataBufferType:
1519 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
1521 case VAEncCodedBufferType:
1523 case VAEncSequenceParameterBufferType:
1524 va_TraceVAEncSequenceParameterBufferH264(dpy, context, buffer, type, size, num_elements, pbuf);
1526 case VAEncPictureParameterBufferType:
1527 va_TraceVAEncPictureParameterBufferH264(dpy, context, buffer, type, size, num_elements, pbuf);
1529 case VAEncSliceParameterBufferType:
1530 va_TraceVAEncSliceParameterBuffer(dpy, context, buffer, type, size, num_elements, pbuf);
1532 case VAEncH264VUIBufferType:
1533 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
1535 case VAEncH264SEIBufferType:
1536 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
1538 case VAEncMiscParameterBufferType:
1539 va_TraceVAEncMiscParameterBuffer(dpy, context, buffer, type, size, num_elements, pbuf);
1547 static void va_TraceVC1Buf(
1549 VAContextID context,
1553 unsigned int num_elements,
1560 case VAPictureParameterBufferType:
1561 va_TraceVAPictureParameterBufferVC1(dpy, context, buffer, type, size, num_elements, pbuf);
1563 case VAIQMatrixBufferType:
1565 case VABitPlaneBufferType:
1566 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
1568 case VASliceGroupMapBufferType:
1569 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
1571 case VASliceParameterBufferType:
1572 va_TraceVASliceParameterBufferVC1(dpy, context, buffer, type, size, num_elements, pbuf);
1574 case VASliceDataBufferType:
1575 va_TraceVABuffers(dpy, context, buffer, type, trace_context[idx].trace_slice_size, num_elements, pbuf);
1577 case VAMacroblockParameterBufferType:
1578 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
1580 case VAResidualDataBufferType:
1581 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
1583 case VADeblockingParameterBufferType:
1584 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
1586 case VAImageBufferType:
1588 case VAProtectedSliceDataBufferType:
1589 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
1591 case VAEncCodedBufferType:
1593 case VAEncSequenceParameterBufferType:
1594 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
1596 case VAEncPictureParameterBufferType:
1597 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
1599 case VAEncSliceParameterBufferType:
1600 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
1607 void va_TraceRenderPicture(
1609 VAContextID context,
1610 VABufferID *buffers,
1616 unsigned int num_elements;
1620 TRACE_FUNCNAME(idx);
1622 va_TraceMsg(idx, "\tcontext = 0x%08x\n", context);
1623 va_TraceMsg(idx, "\tnum_buffers = %d\n", num_buffers);
1624 for (i = 0; i < num_buffers; i++) {
1628 /* get buffer type information */
1629 vaBufferInfo(dpy, context, buffers[i], &type, &size, &num_elements);
1631 va_TraceMsg(idx, "\t---------------------------\n");
1632 va_TraceMsg(idx, "\tbuffers[%d] = 0x%08x\n", i, buffers[i]);
1633 va_TraceMsg(idx, "\t type = %s\n", buffer_type_to_string(type));
1634 va_TraceMsg(idx, "\t size = %d\n", size);
1635 va_TraceMsg(idx, "\t num_elements = %d\n", num_elements);
1637 vaMapBuffer(dpy, buffers[i], &pbuf);
1639 switch (trace_context[idx].trace_profile) {
1640 case VAProfileMPEG2Simple:
1641 case VAProfileMPEG2Main:
1642 for (j=0; j<num_elements; j++) {
1643 va_TraceMsg(idx, "\t------------------", j);
1644 va_TraceMsg(idx, "\telement[%d] = ", j);
1645 va_TraceMPEG2Buf(dpy, context, buffers[i], type, size, num_elements, pbuf + size*j);
1648 case VAProfileMPEG4Simple:
1649 case VAProfileMPEG4AdvancedSimple:
1650 case VAProfileMPEG4Main:
1651 for (j=0; j<num_elements; j++) {
1652 va_TraceMsg(idx, "\t------------------", j);
1653 va_TraceMsg(idx, "\telement[%d] = ", j);
1654 va_TraceMPEG4Buf(dpy, context, buffers[i], type, size, num_elements, pbuf + size*j);
1657 case VAProfileH264Baseline:
1658 case VAProfileH264Main:
1659 case VAProfileH264High:
1660 case VAProfileH264ConstrainedBaseline:
1661 for (j=0; j<num_elements; j++) {
1662 va_TraceMsg(idx, "\t---------------------------\n", j);
1663 va_TraceMsg(idx, "\telement[%d] = ", j);
1665 va_TraceH264Buf(dpy, context, buffers[i], type, size, num_elements, pbuf + size*j);
1668 case VAProfileVC1Simple:
1669 case VAProfileVC1Main:
1670 case VAProfileVC1Advanced:
1671 for (j=0; j<num_elements; j++) {
1672 va_TraceMsg(idx, "\t---------------------------\n", j);
1673 va_TraceMsg(idx, "\telement[%d] = ", j);
1675 va_TraceVC1Buf(dpy, context, buffers[i], type, size, num_elements, pbuf + size*j);
1678 case VAProfileH263Baseline:
1679 for (j=0; j<num_elements; j++) {
1680 va_TraceMsg(idx, "\t---------------------------\n", j);
1681 va_TraceMsg(idx, "\telement[%d] = ", j);
1683 va_TraceMPEG4Buf(dpy, context, buffers[i], type, size, num_elements, pbuf + size*j);
1690 vaUnmapBuffer(dpy, buffers[i]);
1693 va_TraceMsg(idx, NULL);
1697 void va_TraceEndPicture(
1704 TRACE_FUNCNAME(idx);
1706 va_TraceMsg(idx, "\tcontext = 0x%08x\n", context);
1707 va_TraceMsg(idx, "\trender_targets = 0x%08x\n", trace_context[idx].trace_rendertarget);
1709 /* want to trace codedbuf, and it is encode */
1710 if (trace_context[idx].trace_fp_codedbuf &&
1711 ((trace_context[idx].trace_entrypoint == VAEntrypointEncSlice) ||
1712 (trace_context[idx].trace_entrypoint == VAEntrypointEncPicture))) {
1713 /* force the pipleline finish rendering */
1714 vaSyncSurface(dpy, trace_context[idx].trace_rendertarget);
1715 va_TraceCodedBuf(dpy);
1718 /* trace decoded surface for decoding, or the source sourface for encoding */
1719 if (trace_context[idx].trace_fp_surface) {
1720 /* force the pipleline finish rendering */
1721 vaSyncSurface(dpy, trace_context[idx].trace_rendertarget);
1723 va_TraceSurface(dpy);
1726 va_TraceMsg(idx, NULL);
1729 void va_TraceSyncSurface(
1731 VASurfaceID render_target
1736 TRACE_FUNCNAME(idx);
1738 va_TraceMsg(idx, "\trender_target = 0x%08x\n", render_target);
1739 va_TraceMsg(idx, NULL);
1743 void va_TraceQuerySurfaceStatus(
1745 VASurfaceID render_target,
1746 VASurfaceStatus *status /* out */
1751 TRACE_FUNCNAME(idx);
1753 va_TraceMsg(idx, "\trender_target = 0x%08x\n", render_target);
1754 va_TraceMsg(idx, "\tstatus = 0x%08x\n", *status);
1755 va_TraceMsg(idx, NULL);
1759 void va_TraceQuerySurfaceError(
1761 VASurfaceID surface,
1762 VAStatus error_status,
1763 void **error_info /*out*/
1768 TRACE_FUNCNAME(idx);
1769 va_TraceMsg(idx, "\tsurface = 0x%08x\n", surface);
1770 va_TraceMsg(idx, "\terror_status = 0x%08x\n", error_status);
1771 if (error_status == VA_STATUS_ERROR_DECODING_ERROR) {
1772 VASurfaceDecodeMBErrors *p = *error_info;
1773 while (p->status != -1) {
1774 va_TraceMsg(idx, "\t\tstatus = %d\n", p->status);
1775 va_TraceMsg(idx, "\t\tstart_mb = %d\n", p->start_mb);
1776 va_TraceMsg(idx, "\t\tend_mb = %d\n", p->end_mb);
1777 p++; /* next error record */
1780 va_TraceMsg(idx, NULL);
1783 void va_TraceMaxNumDisplayAttributes (
1790 TRACE_FUNCNAME(idx);
1792 va_TraceMsg(idx, "\tmax_display_attributes = %d\n", number);
1793 va_TraceMsg(idx, NULL);
1796 void va_TraceQueryDisplayAttributes (
1798 VADisplayAttribute *attr_list, /* out */
1799 int *num_attributes /* out */
1806 va_TraceMsg(idx, "\tnum_attributes = %d\n", *num_attributes);
1808 for (i=0; i<*num_attributes; i++) {
1809 va_TraceMsg(idx, "\tattr_list[%d] =\n");
1810 va_TraceMsg(idx, "\t typ = 0x%08x\n", attr_list[i].type);
1811 va_TraceMsg(idx, "\t min_value = %d\n", attr_list[i].min_value);
1812 va_TraceMsg(idx, "\t max_value = %d\n", attr_list[i].max_value);
1813 va_TraceMsg(idx, "\t value = %d\n", attr_list[i].value);
1814 va_TraceMsg(idx, "\t flags = %d\n", attr_list[i].flags);
1816 va_TraceMsg(idx, NULL);
1820 static void va_TraceDisplayAttributes (
1822 VADisplayAttribute *attr_list,
1830 va_TraceMsg(idx, "\tnum_attributes = %d\n", num_attributes);
1831 for (i=0; i<num_attributes; i++) {
1832 va_TraceMsg(idx, "\tattr_list[%d] =\n");
1833 va_TraceMsg(idx, "\t typ = 0x%08x\n", attr_list[i].type);
1834 va_TraceMsg(idx, "\t min_value = %d\n", attr_list[i].min_value);
1835 va_TraceMsg(idx, "\t max_value = %d\n", attr_list[i].max_value);
1836 va_TraceMsg(idx, "\t value = %d\n", attr_list[i].value);
1837 va_TraceMsg(idx, "\t flags = %d\n", attr_list[i].flags);
1839 va_TraceMsg(idx, NULL);
1843 void va_TraceGetDisplayAttributes (
1845 VADisplayAttribute *attr_list,
1851 TRACE_FUNCNAME(idx);
1853 va_TraceDisplayAttributes (dpy, attr_list, num_attributes);
1856 void va_TraceSetDisplayAttributes (
1858 VADisplayAttribute *attr_list,
1864 TRACE_FUNCNAME(idx);
1866 va_TraceDisplayAttributes (dpy, attr_list, num_attributes);
1870 void va_TracePutSurface (
1872 VASurfaceID surface,
1873 void *draw, /* the target Drawable */
1876 unsigned short srcw,
1877 unsigned short srch,
1880 unsigned short destw,
1881 unsigned short desth,
1882 VARectangle *cliprects, /* client supplied clip list */
1883 unsigned int number_cliprects, /* number of clip rects in the clip list */
1884 unsigned int flags /* de-interlacing flags */
1889 TRACE_FUNCNAME(idx);
1891 va_TraceMsg(idx, "\tsurface = 0x%08x\n", surface);
1892 va_TraceMsg(idx, "\tdraw = 0x%08x\n", draw);
1893 va_TraceMsg(idx, "\tsrcx = %d\n", srcx);
1894 va_TraceMsg(idx, "\tsrcy = %d\n", srcy);
1895 va_TraceMsg(idx, "\tsrcw = %d\n", srcw);
1896 va_TraceMsg(idx, "\tsrch = %d\n", srch);
1897 va_TraceMsg(idx, "\tdestx = %d\n", destx);
1898 va_TraceMsg(idx, "\tdesty = %d\n", desty);
1899 va_TraceMsg(idx, "\tdestw = %d\n", destw);
1900 va_TraceMsg(idx, "\tdesth = %d\n", desth);
1901 va_TraceMsg(idx, "\tcliprects = 0x%08x\n", cliprects);
1902 va_TraceMsg(idx, "\tnumber_cliprects = %d\n", number_cliprects);
1903 va_TraceMsg(idx, "\tflags = 0x%08x\n", flags);
1904 va_TraceMsg(idx, NULL);