1 
2 /*
3  * Copyright (c) 2009-2011 Intel Corporation. All Rights Reserved.
4  *
5  * Permission is hereby granted, free of charge, to any person obtaining a
6  * copy of this software and associated documentation files (the
7  * "Software"), to deal in the Software without restriction, including
8  * without limitation the rights to use, copy, modify, merge, publish,
9  * distribute, sub license, and/or sell copies of the Software, and to
10  * permit persons to whom the Software is furnished to do so, subject to
11  * the following conditions:
12  *
13  * The above copyright notice and this permission notice (including the
14  * next paragraph) shall be included in all copies or substantial portions
15  * of the Software.
16  *
17  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
18  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
19  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
20  * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
21  * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
22  * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
23  * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
24  */
25 
26 #define _GNU_SOURCE 1
27 #include "va.h"
28 #include "va_enc_h264.h"
29 #include "va_backend.h"
30 #include "va_trace.h"
31 #include "va_enc_h264.h"
32 #include "va_enc_jpeg.h"
33 #include "va_enc_vp8.h"
34 #include "va_dec_jpeg.h"
35 #include "va_dec_vp8.h"
36 #include "va_vpp.h"
37 #include <assert.h>
38 #include <stdarg.h>
39 #include <stdlib.h>
40 #include <stdio.h>
41 #include <string.h>
42 #include <dlfcn.h>
43 #include <unistd.h>
44 #include <sys/types.h>
45 #include <sys/stat.h>
46 #include <unistd.h>
47 #include <time.h>
48 #include <errno.h>
49 
50 #define LIBVA_TRACE_FILE "/data/mediadrm/libva.log"
51 
52 /*
53  * Env. to debug some issue, e.g. the decode/encode issue in a video conference scenerio:
54  * .LIBVA_TRACE=log_file: general VA parameters saved into log_file
55  * .LIBVA_TRACE_BUFDATA: dump all VA data buffer into log_file
56  * .LIBVA_TRACE_CODEDBUF=coded_clip_file: save the coded clip into file coded_clip_file
57  * .LIBVA_TRACE_SURFACE=yuv_file: save surface YUV into file yuv_file. Use file name to determine
58  *                                decode/encode or jpeg surfaces
59  * .LIBVA_TRACE_SURFACE_GEOMETRY=WIDTHxHEIGHT+XOFF+YOFF: only save part of surface context into file
60  *                                due to storage bandwidth limitation
61  */
62 
63 /* global settings */
64 
65 /* LIBVA_TRACE */
66 int trace_flag = 0;
67 
68 /* per context settings */
69 struct trace_context {
70     /* LIBVA_TRACE */
71     FILE *trace_fp_log; /* save the log into a file */
72     char *trace_log_fn; /* file name */
73 
74     /* LIBVA_TRACE_CODEDBUF */
75     FILE *trace_fp_codedbuf; /* save the encode result into a file */
76     char *trace_codedbuf_fn; /* file name */
77 
78     /* LIBVA_TRACE_SURFACE */
79     FILE *trace_fp_surface; /* save the surface YUV into a file */
80     char *trace_surface_fn; /* file name */
81 
82     VAContextID  trace_context; /* current context */
83 
84     VASurfaceID  trace_rendertarget; /* current render target */
85     VAProfile trace_profile; /* current profile for buffers */
86     VAEntrypoint trace_entrypoint; /* current entrypoint */
87 
88     unsigned int trace_frame_no; /* current frame NO */
89     unsigned int trace_slice_no; /* current slice NO */
90     unsigned int trace_slice_size; /* current slice buffer size */
91 
92     unsigned int trace_surface_width; /* surface dumping geometry */
93     unsigned int trace_surface_height;
94     unsigned int trace_surface_xoff;
95     unsigned int trace_surface_yoff;
96 
97     unsigned int trace_frame_width; /* current frame width */
98     unsigned int trace_frame_height; /* current frame height */
99 };
100 
101 #define TRACE_CTX(dpy) ((struct trace_context *)((VADisplayContextP)dpy)->vatrace)
102 
103 #define DPY2TRACECTX(dpy)                               \
104     struct trace_context *trace_ctx = TRACE_CTX(dpy);   \
105                                                         \
106     if (trace_ctx == NULL)                              \
107         return;                                         \
108 
109 #define TRACE_FUNCNAME(idx)    va_TraceMsg(trace_ctx, "==========%s\n", __func__);
110 
111 /* Prototype declarations (functions defined in va.c) */
112 
113 void va_errorMessage(const char *msg, ...);
114 void va_infoMessage(const char *msg, ...);
115 
116 int va_parseConfig(char *env, char *env_value);
117 
118 VAStatus vaBufferInfo(
119     VADisplay dpy,
120     VAContextID context,        /* in */
121     VABufferID buf_id,          /* in */
122     VABufferType *type,         /* out */
123     unsigned int *size,         /* out */
124     unsigned int *num_elements  /* out */
125     );
126 
127 VAStatus vaLockSurface(VADisplay dpy,
128                        VASurfaceID surface,
129                        unsigned int *fourcc, /* following are output argument */
130                        unsigned int *luma_stride,
131                        unsigned int *chroma_u_stride,
132                        unsigned int *chroma_v_stride,
133                        unsigned int *luma_offset,
134                        unsigned int *chroma_u_offset,
135                        unsigned int *chroma_v_offset,
136                        unsigned int *buffer_name,
137                        void **buffer
138                        );
139 
140 VAStatus vaUnlockSurface(VADisplay dpy,
141                          VASurfaceID surface
142                          );
143 
144 #define FILE_NAME_SUFFIX(env_value)                      \
145 do {                                                    \
146     int tmp = strnlen(env_value, sizeof(env_value));    \
147     int left = sizeof(env_value) - tmp;                 \
148                                                         \
149     snprintf(env_value+tmp,                             \
150              left,                                      \
151              ".%04d.%08lx",                             \
152              suffix,                                    \
153              (unsigned long)trace_ctx);                 \
154 } while (0)
155 
va_TraceInit(VADisplay dpy)156 void va_TraceInit(VADisplay dpy)
157 {
158     char env_value[1024] = {0};
159     // It's used to get value from libva.conf, just use to check value.
160     char va_value[1024] = {0};
161     unsigned short suffix = 0xffff & ((unsigned int)time(NULL));
162     FILE *tmp;
163     struct trace_context *trace_ctx = calloc(sizeof(struct trace_context), 1);
164 
165     if (trace_ctx == NULL)
166         return;
167 
168     if (va_parseConfig("LIBVA_TRACE", &va_value[0]) == 0) {
169         strcpy(env_value, LIBVA_TRACE_FILE);
170         FILE_NAME_SUFFIX(env_value);
171         trace_ctx->trace_log_fn = strdup(env_value);
172 
173         tmp = fopen(env_value, "w");
174         if (tmp) {
175             trace_ctx->trace_fp_log = tmp;
176             va_infoMessage("LIBVA_TRACE is on, save log into %s\n", trace_ctx->trace_log_fn);
177             trace_flag = VA_TRACE_FLAG_LOG;
178         } else
179             va_errorMessage("Open file %s failed (%s)\n", env_value, strerror(errno));
180     }
181 
182     /* may re-get the global settings for multiple context */
183     if ((trace_flag & VA_TRACE_FLAG_LOG) && (va_parseConfig("LIBVA_TRACE_BUFDATA", NULL) == 0)) {
184         trace_flag |= VA_TRACE_FLAG_BUFDATA;
185         va_infoMessage("LIBVA_TRACE_BUFDATA is on, dump buffer into log file\n");
186     }
187 
188     /* per-context setting */
189     if (va_parseConfig("LIBVA_TRACE_CODEDBUF", &env_value[0]) == 0) {
190         FILE_NAME_SUFFIX(env_value);
191         trace_ctx->trace_codedbuf_fn = strdup(env_value);
192         va_infoMessage("LIBVA_TRACE_CODEDBUF is on, save codedbuf into log file %s\n",
193                        trace_ctx->trace_codedbuf_fn);
194         trace_flag |= VA_TRACE_FLAG_CODEDBUF;
195     }
196 
197     if (va_parseConfig("LIBVA_TRACE_SURFACE", &env_value[0]) == 0) {
198         FILE_NAME_SUFFIX(env_value);
199         trace_ctx->trace_surface_fn = strdup(env_value);
200 
201         va_infoMessage("LIBVA_TRACE_SURFACE is on, save surface into %s\n",
202                        trace_ctx->trace_surface_fn);
203 
204         /* for surface data dump, it is time-consume, and may
205          * cause some side-effect, so only trace the needed surfaces
206          * to trace encode surface, set the trace file name to sth like *enc*
207          * to trace decode surface, set the trace file name to sth like *dec*
208          * if no dec/enc in file name, set both
209          */
210         if (strstr(env_value, "dec"))
211             trace_flag |= VA_TRACE_FLAG_SURFACE_DECODE;
212         if (strstr(env_value, "enc"))
213             trace_flag |= VA_TRACE_FLAG_SURFACE_ENCODE;
214         if (strstr(env_value, "jpeg") || strstr(env_value, "jpg"))
215             trace_flag |= VA_TRACE_FLAG_SURFACE_JPEG;
216 
217         if (va_parseConfig("LIBVA_TRACE_SURFACE_GEOMETRY", &env_value[0]) == 0) {
218             char *p = env_value, *q;
219 
220             trace_ctx->trace_surface_width = strtod(p, &q);
221             p = q+1; /* skip "x" */
222             trace_ctx->trace_surface_height = strtod(p, &q);
223             p = q+1; /* skip "+" */
224             trace_ctx->trace_surface_xoff = strtod(p, &q);
225             p = q+1; /* skip "+" */
226             trace_ctx->trace_surface_yoff = strtod(p, &q);
227 
228             va_infoMessage("LIBVA_TRACE_SURFACE_GEOMETRY is on, only dump surface %dx%d+%d+%d content\n",
229                            trace_ctx->trace_surface_width,
230                            trace_ctx->trace_surface_height,
231                            trace_ctx->trace_surface_xoff,
232                            trace_ctx->trace_surface_yoff);
233         }
234     }
235 
236     ((VADisplayContextP)dpy)->vatrace = trace_ctx;
237 }
238 
239 
va_TraceEnd(VADisplay dpy)240 void va_TraceEnd(VADisplay dpy)
241 {
242     DPY2TRACECTX(dpy);
243 
244     if (trace_ctx->trace_fp_log)
245         fclose(trace_ctx->trace_fp_log);
246 
247     if (trace_ctx->trace_fp_codedbuf)
248         fclose(trace_ctx->trace_fp_codedbuf);
249 
250     if (trace_ctx->trace_fp_surface)
251         fclose(trace_ctx->trace_fp_surface);
252 
253     if (trace_ctx->trace_log_fn)
254         free(trace_ctx->trace_log_fn);
255 
256     if (trace_ctx->trace_codedbuf_fn)
257         free(trace_ctx->trace_codedbuf_fn);
258 
259     if (trace_ctx->trace_surface_fn)
260         free(trace_ctx->trace_surface_fn);
261 
262     free(trace_ctx);
263     ((VADisplayContextP)dpy)->vatrace = NULL;
264 }
265 
266 
va_TraceMsg(struct trace_context * trace_ctx,const char * msg,...)267 void va_TraceMsg(struct trace_context *trace_ctx, const char *msg, ...)
268 {
269     va_list args;
270 
271     if (!(trace_flag & VA_TRACE_FLAG_LOG))
272         return;
273 
274     if (msg)  {
275         struct timeval tv;
276 
277         if (gettimeofday(&tv, NULL) == 0)
278             fprintf(trace_ctx->trace_fp_log, "[%04d.%06d] ",
279                     (unsigned int)tv.tv_sec & 0xffff, (unsigned int)tv.tv_usec);
280         va_start(args, msg);
281         vfprintf(trace_ctx->trace_fp_log, msg, args);
282         va_end(args);
283     } else
284         fflush(trace_ctx->trace_fp_log);
285 }
286 
287 
va_TraceSurface(VADisplay dpy)288 void va_TraceSurface(VADisplay dpy)
289 {
290     unsigned int i;
291     unsigned int fourcc; /* following are output argument */
292     unsigned int luma_stride;
293     unsigned int chroma_u_stride;
294     unsigned int chroma_v_stride;
295     unsigned int luma_offset;
296     unsigned int chroma_u_offset;
297     unsigned int chroma_v_offset;
298     unsigned int buffer_name;
299     void *buffer = NULL;
300     unsigned char *Y_data, *UV_data, *tmp;
301     VAStatus va_status;
302     DPY2TRACECTX(dpy);
303 
304     if (!trace_ctx->trace_fp_surface)
305         return;
306 
307     va_TraceMsg(trace_ctx, "==========dump surface data in file %s\n", trace_ctx->trace_surface_fn);
308 
309     va_TraceMsg(trace_ctx, NULL);
310 
311     va_status = vaLockSurface(
312         dpy,
313         trace_ctx->trace_rendertarget,
314         &fourcc,
315         &luma_stride, &chroma_u_stride, &chroma_v_stride,
316         &luma_offset, &chroma_u_offset, &chroma_v_offset,
317         &buffer_name, &buffer);
318 
319     if (va_status != VA_STATUS_SUCCESS) {
320         va_TraceMsg(trace_ctx, "Error:vaLockSurface failed\n");
321         return;
322     }
323 
324     va_TraceMsg(trace_ctx, "\tfourcc = 0x%08x\n", fourcc);
325     va_TraceMsg(trace_ctx, "\twidth = %d\n", trace_ctx->trace_frame_width);
326     va_TraceMsg(trace_ctx, "\theight = %d\n", trace_ctx->trace_frame_height);
327     va_TraceMsg(trace_ctx, "\tluma_stride = %d\n", luma_stride);
328     va_TraceMsg(trace_ctx, "\tchroma_u_stride = %d\n", chroma_u_stride);
329     va_TraceMsg(trace_ctx, "\tchroma_v_stride = %d\n", chroma_v_stride);
330     va_TraceMsg(trace_ctx, "\tluma_offset = %d\n", luma_offset);
331     va_TraceMsg(trace_ctx, "\tchroma_u_offset = %d\n", chroma_u_offset);
332     va_TraceMsg(trace_ctx, "\tchroma_v_offset = %d\n", chroma_v_offset);
333 
334     if (buffer == NULL) {
335         va_TraceMsg(trace_ctx, "Error:vaLockSurface return NULL buffer\n");
336         va_TraceMsg(trace_ctx, NULL);
337 
338         vaUnlockSurface(dpy, trace_ctx->trace_rendertarget);
339         return;
340     }
341     va_TraceMsg(trace_ctx, "\tbuffer location = 0x%08x\n", buffer);
342     va_TraceMsg(trace_ctx, NULL);
343 
344     Y_data = (unsigned char*)buffer;
345     UV_data = (unsigned char*)buffer + chroma_u_offset;
346 
347     tmp = Y_data + luma_stride * trace_ctx->trace_surface_yoff;
348     for (i=0; i<trace_ctx->trace_surface_height; i++) {
349         fwrite(tmp + trace_ctx->trace_surface_xoff,
350                trace_ctx->trace_surface_width,
351                1, trace_ctx->trace_fp_surface);
352 
353         tmp += luma_stride;
354     }
355     tmp = UV_data + chroma_u_stride * trace_ctx->trace_surface_yoff / 2;
356     if (fourcc == VA_FOURCC_NV12) {
357         for (i=0; i<trace_ctx->trace_surface_height/2; i++) {
358             fwrite(tmp + trace_ctx->trace_surface_xoff,
359                    trace_ctx->trace_surface_width,
360                    1, trace_ctx->trace_fp_surface);
361 
362             tmp += chroma_u_stride;
363         }
364     }
365 
366     vaUnlockSurface(dpy, trace_ctx->trace_rendertarget);
367 
368     va_TraceMsg(trace_ctx, NULL);
369 }
370 
371 
va_TraceInitialize(VADisplay dpy,int __maybe_unused * major_version,int __maybe_unused * minor_version)372 void va_TraceInitialize (
373     VADisplay dpy,
374     int __maybe_unused *major_version,     /* out */
375     int __maybe_unused *minor_version      /* out */
376 )
377 {
378     DPY2TRACECTX(dpy);
379 
380     TRACE_FUNCNAME(idx);
381 }
382 
va_TraceTerminate(VADisplay dpy)383 void va_TraceTerminate (
384     VADisplay dpy
385 )
386 {
387     DPY2TRACECTX(dpy);
388     TRACE_FUNCNAME(idx);
389 }
390 
391 
va_TraceCreateConfig(VADisplay dpy,VAProfile profile,VAEntrypoint entrypoint,VAConfigAttrib * attrib_list,int num_attribs,VAConfigID __maybe_unused * config_id)392 void va_TraceCreateConfig(
393     VADisplay dpy,
394     VAProfile profile,
395     VAEntrypoint entrypoint,
396     VAConfigAttrib *attrib_list,
397     int num_attribs,
398     VAConfigID __maybe_unused *config_id /* out */
399 )
400 {
401     int i;
402     int encode, decode, jpeg;
403     DPY2TRACECTX(dpy);
404 
405     TRACE_FUNCNAME(idx);
406 
407     va_TraceMsg(trace_ctx, "\tprofile = %d\n", profile);
408     va_TraceMsg(trace_ctx, "\tentrypoint = %d\n", entrypoint);
409     va_TraceMsg(trace_ctx, "\tnum_attribs = %d\n", num_attribs);
410     if (attrib_list) {
411         for (i = 0; i < num_attribs; i++) {
412             va_TraceMsg(trace_ctx, "\t\tattrib_list[%d].type = 0x%08x\n", i, attrib_list[i].type);
413             va_TraceMsg(trace_ctx, "\t\tattrib_list[%d].value = 0x%08x\n", i, attrib_list[i].value);
414         }
415     }
416     va_TraceMsg(trace_ctx, NULL);
417 
418     trace_ctx->trace_profile = profile;
419     trace_ctx->trace_entrypoint = entrypoint;
420 
421     /* avoid to create so many empty files */
422     encode = (trace_ctx->trace_entrypoint == VAEntrypointEncSlice);
423     decode = (trace_ctx->trace_entrypoint == VAEntrypointVLD);
424     jpeg = (trace_ctx->trace_entrypoint == VAEntrypointEncPicture);
425     if ((encode && (trace_flag & VA_TRACE_FLAG_SURFACE_ENCODE)) ||
426         (decode && (trace_flag & VA_TRACE_FLAG_SURFACE_DECODE)) ||
427         (jpeg && (trace_flag & VA_TRACE_FLAG_SURFACE_JPEG))) {
428         FILE *tmp = fopen(trace_ctx->trace_surface_fn, "w");
429 
430         if (tmp)
431             trace_ctx->trace_fp_surface = tmp;
432         else {
433             va_errorMessage("Open file %s failed (%s)\n",
434                             trace_ctx->trace_surface_fn,
435                             strerror(errno));
436             trace_ctx->trace_fp_surface = NULL;
437             trace_flag &= ~(VA_TRACE_FLAG_SURFACE);
438         }
439     }
440 
441     if (encode && (trace_flag & VA_TRACE_FLAG_CODEDBUF)) {
442         FILE *tmp = fopen(trace_ctx->trace_codedbuf_fn, "w");
443 
444         if (tmp)
445             trace_ctx->trace_fp_codedbuf = tmp;
446         else {
447             va_errorMessage("Open file %s failed (%s)\n",
448                             trace_ctx->trace_codedbuf_fn,
449                             strerror(errno));
450             trace_ctx->trace_fp_codedbuf = NULL;
451             trace_flag &= ~VA_TRACE_FLAG_CODEDBUF;
452         }
453     }
454 }
455 
va_TraceSurfaceAttributes(struct trace_context * trace_ctx,VASurfaceAttrib * attrib_list,unsigned int * num_attribs)456 static void va_TraceSurfaceAttributes(
457     struct trace_context *trace_ctx,
458     VASurfaceAttrib    *attrib_list,
459     unsigned int       *num_attribs
460 )
461 {
462     int i, num;
463     VASurfaceAttrib *p;
464 
465     if (!attrib_list || !num_attribs)
466         return;
467 
468     p = attrib_list;
469     num = *num_attribs;
470     if (num > VASurfaceAttribCount)
471         num = VASurfaceAttribCount;
472 
473     for (i=0; i<num; i++) {
474         int type = p->value.type;
475 
476         va_TraceMsg(trace_ctx, "\tattrib_list[%i] =\n", i);
477 
478         va_TraceMsg(trace_ctx, "\t\ttype = %d\n", p->type);
479         va_TraceMsg(trace_ctx, "\t\tflags = %d\n", p->flags);
480         va_TraceMsg(trace_ctx, "\t\tvalue.type = %d\n", type);
481         switch (type) {
482         case VAGenericValueTypeInteger:
483             va_TraceMsg(trace_ctx, "\t\tvalue.value.i = 0x%08x\n", p->value.value.i);
484             break;
485         case VAGenericValueTypeFloat:
486             va_TraceMsg(trace_ctx, "\t\tvalue.value.f = %f\n", p->value.value.f);
487             break;
488         case VAGenericValueTypePointer:
489             va_TraceMsg(trace_ctx, "\t\tvalue.value.p = %p\n", p->value.value.p);
490             if ((p->type == VASurfaceAttribExternalBufferDescriptor) && p->value.value.p) {
491                 VASurfaceAttribExternalBuffers *tmp = (VASurfaceAttribExternalBuffers *) p->value.value.p;
492                 unsigned int j;
493 
494                 va_TraceMsg(trace_ctx, "\t\t--VASurfaceAttribExternalBufferDescriptor\n");
495                 va_TraceMsg(trace_ctx, "\t\t  pixel_format=0x%08x\n", tmp->pixel_format);
496                 va_TraceMsg(trace_ctx, "\t\t  width=%d\n", tmp->width);
497                 va_TraceMsg(trace_ctx, "\t\t  height=%d\n", tmp->height);
498                 va_TraceMsg(trace_ctx, "\t\t  data_size=%d\n", tmp->data_size);
499                 va_TraceMsg(trace_ctx, "\t\t  num_planes=%d\n", tmp->num_planes);
500                 va_TraceMsg(trace_ctx, "\t\t  pitches[4]=%d %d %d %d\n",
501                             tmp->pitches[0], tmp->pitches[1], tmp->pitches[2], tmp->pitches[3]);
502                 va_TraceMsg(trace_ctx, "\t\t  offsets[4]=%d %d %d %d\n",
503                             tmp->offsets[0], tmp->offsets[1], tmp->offsets[2], tmp->offsets[3]);
504                 va_TraceMsg(trace_ctx, "\t\t  flags=0x%08x\n", tmp->flags);
505                 va_TraceMsg(trace_ctx, "\t\t  num_buffers=0x%08x\n", tmp->num_buffers);
506                 va_TraceMsg(trace_ctx, "\t\t  buffers=%p\n", tmp->buffers);
507                 for (j = 0; j < tmp->num_buffers; j++) {
508                     va_TraceMsg(trace_ctx, "\t\t\tbuffers[%d]=%p\n", j, tmp->buffers[j]);
509                 }
510             }
511             break;
512         case VAGenericValueTypeFunc:
513             va_TraceMsg(trace_ctx, "\t\tvalue.value.fn = %p\n", p->value.value.fn);
514             break;
515         default:
516             break;
517         }
518 
519         p++;
520     }
521 }
522 
va_TraceCreateSurfaces(VADisplay dpy,int width,int height,int format,int num_surfaces,VASurfaceID * surfaces,VASurfaceAttrib * attrib_list,unsigned int num_attribs)523 void va_TraceCreateSurfaces(
524     VADisplay dpy,
525     int width,
526     int height,
527     int format,
528     int num_surfaces,
529     VASurfaceID *surfaces,    /* out */
530     VASurfaceAttrib    *attrib_list,
531     unsigned int        num_attribs
532 )
533 {
534     int i;
535     DPY2TRACECTX(dpy);
536 
537     TRACE_FUNCNAME(idx);
538 
539     va_TraceMsg(trace_ctx, "\twidth = %d\n", width);
540     va_TraceMsg(trace_ctx, "\theight = %d\n", height);
541     va_TraceMsg(trace_ctx, "\tformat = %d\n", format);
542     va_TraceMsg(trace_ctx, "\tnum_surfaces = %d\n", num_surfaces);
543 
544     if (surfaces) {
545         for (i = 0; i < num_surfaces; i++)
546             va_TraceMsg(trace_ctx, "\t\tsurfaces[%d] = 0x%08x\n", i, surfaces[i]);
547     }
548 
549     va_TraceSurfaceAttributes(trace_ctx, attrib_list, &num_attribs);
550 
551     va_TraceMsg(trace_ctx, NULL);
552 }
553 
554 
va_TraceDestroySurfaces(VADisplay dpy,VASurfaceID * surface_list,int num_surfaces)555 void va_TraceDestroySurfaces(
556     VADisplay dpy,
557     VASurfaceID *surface_list,
558     int num_surfaces
559 )
560 {
561     int i;
562     DPY2TRACECTX(dpy);
563 
564     TRACE_FUNCNAME(idx);
565 
566     if (surface_list) {
567         for (i = 0; i < num_surfaces; i++)
568             va_TraceMsg(trace_ctx, "\t\tsurfaces[%d] = 0x%08x\n", i, surface_list[i]);
569     }
570 
571     va_TraceMsg(trace_ctx, NULL);
572 }
573 
574 
va_TraceCreateContext(VADisplay dpy,VAConfigID config_id,int picture_width,int picture_height,int flag,VASurfaceID * render_targets,int num_render_targets,VAContextID * context)575 void va_TraceCreateContext(
576     VADisplay dpy,
577     VAConfigID config_id,
578     int picture_width,
579     int picture_height,
580     int flag,
581     VASurfaceID *render_targets,
582     int num_render_targets,
583     VAContextID *context        /* out */
584 )
585 {
586     int i;
587     DPY2TRACECTX(dpy);
588 
589     TRACE_FUNCNAME(idx);
590 
591     va_TraceMsg(trace_ctx, "\tconfig = 0x%08x\n", config_id);
592     va_TraceMsg(trace_ctx, "\twidth = %d\n", picture_width);
593     va_TraceMsg(trace_ctx, "\theight = %d\n", picture_height);
594     va_TraceMsg(trace_ctx, "\tflag = 0x%08x\n", flag);
595     va_TraceMsg(trace_ctx, "\tnum_render_targets = %d\n", num_render_targets);
596     if (render_targets) {
597         for (i=0; i<num_render_targets; i++)
598             va_TraceMsg(trace_ctx, "\t\trender_targets[%d] = 0x%08x\n", i, render_targets[i]);
599     }
600     if (context) {
601         va_TraceMsg(trace_ctx, "\tcontext = 0x%08x\n", *context);
602         trace_ctx->trace_context = *context;
603     } else
604         trace_ctx->trace_context = VA_INVALID_ID;
605 
606     trace_ctx->trace_frame_no = 0;
607     trace_ctx->trace_slice_no = 0;
608 
609     trace_ctx->trace_frame_width = picture_width;
610     trace_ctx->trace_frame_height = picture_height;
611 
612     if (trace_ctx->trace_surface_width == 0)
613         trace_ctx->trace_surface_width = picture_width;
614     if (trace_ctx->trace_surface_height == 0)
615         trace_ctx->trace_surface_height = picture_height;
616 }
617 
618 
buffer_type_to_string(int type)619 static char * buffer_type_to_string(int type)
620 {
621     switch (type) {
622     case VAPictureParameterBufferType: return "VAPictureParameterBufferType";
623     case VAIQMatrixBufferType: return "VAIQMatrixBufferType";
624     case VABitPlaneBufferType: return "VABitPlaneBufferType";
625     case VASliceGroupMapBufferType: return "VASliceGroupMapBufferType";
626     case VASliceParameterBufferType: return "VASliceParameterBufferType";
627     case VASliceDataBufferType: return "VASliceDataBufferType";
628     case VAProtectedSliceDataBufferType: return "VAProtectedSliceDataBufferType";
629     case VAMacroblockParameterBufferType: return "VAMacroblockParameterBufferType";
630     case VAResidualDataBufferType: return "VAResidualDataBufferType";
631     case VADeblockingParameterBufferType: return "VADeblockingParameterBufferType";
632     case VAImageBufferType: return "VAImageBufferType";
633     case VAQMatrixBufferType: return "VAQMatrixBufferType";
634     case VAHuffmanTableBufferType: return "VAHuffmanTableBufferType";
635     case VAProbabilityBufferType: return "VAProbabilityBufferType";
636 /* Following are encode buffer types */
637     case VAEncCodedBufferType: return "VAEncCodedBufferType";
638     case VAEncSequenceParameterBufferType: return "VAEncSequenceParameterBufferType";
639     case VAEncPictureParameterBufferType: return "VAEncPictureParameterBufferType";
640     case VAEncSliceParameterBufferType: return "VAEncSliceParameterBufferType";
641     case VAEncPackedHeaderParameterBufferType: return "VAEncPackedHeaderParameterBufferType";
642     case VAEncPackedHeaderDataBufferType: return "VAEncPackedHeaderDataBufferType";
643     case VAEncMiscParameterBufferType: return "VAEncMiscParameterBufferType";
644     case VAEncMacroblockParameterBufferType: return "VAEncMacroblockParameterBufferType";
645     case VAProcPipelineParameterBufferType: return "VAProcPipelineParameterBufferType";
646     case VAProcFilterParameterBufferType: return "VAProcFilterParameterBufferType";
647     default: return "UnknowBuffer";
648     }
649 }
650 
va_TraceCreateBuffer(VADisplay dpy,VAContextID __maybe_unused context,VABufferType type,unsigned int size,unsigned int num_elements,void __maybe_unused * data,VABufferID * buf_id)651 void va_TraceCreateBuffer (
652     VADisplay dpy,
653     VAContextID __maybe_unused context,	/* in */
654     VABufferType type,		/* in */
655     unsigned int size,		/* in */
656     unsigned int num_elements,	/* in */
657     void __maybe_unused *data,			/* in */
658     VABufferID *buf_id		/* out */
659 )
660 {
661     DPY2TRACECTX(dpy);
662 
663     /* only trace CodedBuffer */
664     if (type != VAEncCodedBufferType)
665         return;
666 
667     TRACE_FUNCNAME(idx);
668     va_TraceMsg(trace_ctx, "\tbuf_type=%s\n", buffer_type_to_string(type));
669     if (buf_id)
670         va_TraceMsg(trace_ctx, "\tbuf_id=0x%x\n", *buf_id);
671     va_TraceMsg(trace_ctx, "\tsize=%d\n", size);
672     va_TraceMsg(trace_ctx, "\tnum_elements=%d\n", num_elements);
673 
674     va_TraceMsg(trace_ctx, NULL);
675 }
676 
va_TraceDestroyBuffer(VADisplay dpy,VABufferID buf_id)677 void va_TraceDestroyBuffer (
678     VADisplay dpy,
679     VABufferID buf_id    /* in */
680 )
681 {
682     VABufferType type;
683     unsigned int size;
684     unsigned int num_elements;
685 
686     DPY2TRACECTX(dpy);
687 
688     vaBufferInfo(dpy, trace_ctx->trace_context, buf_id, &type, &size, &num_elements);
689 
690     /* only trace CodedBuffer */
691     if (type != VAEncCodedBufferType)
692         return;
693 
694     TRACE_FUNCNAME(idx);
695     va_TraceMsg(trace_ctx, "\tbuf_type=%s\n", buffer_type_to_string(type));
696     va_TraceMsg(trace_ctx, "\tbuf_id=0x%x\n", buf_id);
697     va_TraceMsg(trace_ctx, "\tsize=%d\n", size);
698     va_TraceMsg(trace_ctx, "\tnum_elements=%d\n", num_elements);
699 
700     va_TraceMsg(trace_ctx, NULL);
701 }
702 
703 
va_TraceMapBuffer(VADisplay dpy,VABufferID buf_id,void ** pbuf)704 void va_TraceMapBuffer (
705     VADisplay dpy,
706     VABufferID buf_id,    /* in */
707     void **pbuf           /* out */
708 )
709 {
710     VABufferType type;
711     unsigned int size;
712     unsigned int num_elements;
713 
714     VACodedBufferSegment *buf_list;
715     int i = 0;
716 
717     DPY2TRACECTX(dpy);
718 
719     vaBufferInfo(dpy, trace_ctx->trace_context, buf_id, &type, &size, &num_elements);
720 
721     /* only trace CodedBuffer */
722     if (type != VAEncCodedBufferType)
723         return;
724 
725     TRACE_FUNCNAME(idx);
726     va_TraceMsg(trace_ctx, "\tbuf_id=0x%x\n", buf_id);
727     va_TraceMsg(trace_ctx, "\tbuf_type=%s\n", buffer_type_to_string(type));
728     if ((pbuf == NULL) || (*pbuf == NULL))
729         return;
730 
731     buf_list = (VACodedBufferSegment *)(*pbuf);
732     while (buf_list != NULL) {
733         va_TraceMsg(trace_ctx, "\tCodedbuf[%d] =\n", i++);
734 
735         va_TraceMsg(trace_ctx, "\t   size = %d\n", buf_list->size);
736         va_TraceMsg(trace_ctx, "\t   bit_offset = %d\n", buf_list->bit_offset);
737         va_TraceMsg(trace_ctx, "\t   status = 0x%08x\n", buf_list->status);
738         va_TraceMsg(trace_ctx, "\t   reserved = 0x%08x\n", buf_list->reserved);
739         va_TraceMsg(trace_ctx, "\t   buf = 0x%08x\n", buf_list->buf);
740 
741         if (trace_ctx->trace_fp_codedbuf) {
742             va_TraceMsg(trace_ctx, "\tDump the content to file\n");
743             fwrite(buf_list->buf, buf_list->size, 1, trace_ctx->trace_fp_codedbuf);
744         }
745 
746         buf_list = buf_list->next;
747     }
748     va_TraceMsg(trace_ctx, NULL);
749 }
750 
va_TraceVABuffers(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * pbuf)751 static void va_TraceVABuffers(
752     VADisplay dpy,
753     VAContextID context,
754     VABufferID buffer,
755     VABufferType type,
756     unsigned int size,
757     unsigned int num_elements,
758     void *pbuf
759 )
760 {
761     unsigned int i;
762     unsigned char *p = pbuf;
763     unsigned int dump_size = 64;
764 
765     DPY2TRACECTX(dpy);
766 
767     va_TraceMsg(trace_ctx, "\t    context = %d, buffer = %d, type = %d, size = %d, num_elements = %d\n",
768                 context, buffer, type, size, num_elements);
769     va_TraceMsg(trace_ctx, "--%s\n",  buffer_type_to_string(type));
770 
771     if (dump_size>size)
772         dump_size = size;
773 
774     if (trace_flag & VA_TRACE_FLAG_BUFDATA)
775         dump_size = size;
776 
777     if (trace_ctx->trace_fp_log) {
778         for (i=0; i<dump_size; i++) {
779             unsigned char value =  p[i];
780 
781             if (i==0)
782                 fprintf(trace_ctx->trace_fp_log, "\t\t0x%04x:", i);
783             else if ((i%16) == 0)
784                 fprintf(trace_ctx->trace_fp_log, "\n\t\t0x%04x:", i);
785 
786             fprintf(trace_ctx->trace_fp_log, " %02x", value);
787         }
788         fprintf(trace_ctx->trace_fp_log, "\n");
789     }
790 
791     va_TraceMsg(trace_ctx, NULL);
792 
793     return;
794 }
795 
796 
va_TraceVAPictureParameterBufferMPEG2(VADisplay dpy,VAContextID __maybe_unused context,VABufferID __maybe_unused buffer,VABufferType __maybe_unused type,unsigned int __maybe_unused size,unsigned int __maybe_unused num_elements,void * data)797 static void va_TraceVAPictureParameterBufferMPEG2(
798     VADisplay dpy,
799     VAContextID __maybe_unused context,
800     VABufferID __maybe_unused buffer,
801     VABufferType __maybe_unused type,
802     unsigned int __maybe_unused size,
803     unsigned int __maybe_unused num_elements,
804     void *data)
805 {
806     VAPictureParameterBufferMPEG2 *p=(VAPictureParameterBufferMPEG2 *)data;
807     DPY2TRACECTX(dpy);
808 
809     va_TraceMsg(trace_ctx,"VAPictureParameterBufferMPEG2\n");
810     va_TraceMsg(trace_ctx,"\thorizontal size= %d\n", p->horizontal_size);
811     va_TraceMsg(trace_ctx,"\tvertical size= %d\n", p->vertical_size);
812     va_TraceMsg(trace_ctx,"\tforward reference picture= %d\n", p->forward_reference_picture);
813     va_TraceMsg(trace_ctx,"\tbackward reference picture= %d\n", p->backward_reference_picture);
814     va_TraceMsg(trace_ctx,"\tpicture coding type= %d\n", p->picture_coding_type);
815     va_TraceMsg(trace_ctx,"\tf mode= %d\n", p->f_code);
816 
817     va_TraceMsg(trace_ctx,"\tpicture coding extension = %d\n", p->picture_coding_extension.value);
818     va_TraceMsg(trace_ctx,"\tintra_dc_precision= %d\n", p->picture_coding_extension.bits.intra_dc_precision);
819     va_TraceMsg(trace_ctx,"\tpicture_structure= %d\n", p->picture_coding_extension.bits.picture_structure);
820     va_TraceMsg(trace_ctx,"\ttop_field_first= %d\n", p->picture_coding_extension.bits.top_field_first);
821     va_TraceMsg(trace_ctx,"\tframe_pred_frame_dct= %d\n", p->picture_coding_extension.bits.frame_pred_frame_dct);
822     va_TraceMsg(trace_ctx,"\tconcealment_motion_vectors= %d\n", p->picture_coding_extension.bits.concealment_motion_vectors);
823     va_TraceMsg(trace_ctx,"\tq_scale_type= %d\n", p->picture_coding_extension.bits.q_scale_type);
824     va_TraceMsg(trace_ctx,"\tintra_vlc_format= %d\n", p->picture_coding_extension.bits.intra_vlc_format);
825     va_TraceMsg(trace_ctx,"\talternate_scan= %d\n", p->picture_coding_extension.bits.alternate_scan);
826     va_TraceMsg(trace_ctx,"\trepeat_first_field= %d\n", p->picture_coding_extension.bits.repeat_first_field);
827     va_TraceMsg(trace_ctx,"\tprogressive_frame= %d\n", p->picture_coding_extension.bits.progressive_frame);
828     va_TraceMsg(trace_ctx,"\tis_first_field= %d\n", p->picture_coding_extension.bits.is_first_field);
829     va_TraceMsg(trace_ctx, NULL);
830 
831     return;
832 }
833 
834 
va_TraceVAIQMatrixBufferMPEG2(VADisplay dpy,VAContextID __maybe_unused context,VABufferID __maybe_unused buffer,VABufferType __maybe_unused type,unsigned int __maybe_unused size,unsigned int __maybe_unused num_elements,void * data)835 static void va_TraceVAIQMatrixBufferMPEG2(
836     VADisplay dpy,
837     VAContextID __maybe_unused context,
838     VABufferID __maybe_unused buffer,
839     VABufferType __maybe_unused type,
840     unsigned int __maybe_unused size,
841     unsigned int __maybe_unused num_elements,
842     void *data)
843 {
844     VAIQMatrixBufferMPEG2 *p=(VAIQMatrixBufferMPEG2 *)data;
845     DPY2TRACECTX(dpy);
846 
847     va_TraceMsg(trace_ctx,"VAIQMatrixBufferMPEG2\n");
848     va_TraceMsg(trace_ctx,"\tload_intra_quantiser_matrix = %d\n", p->load_intra_quantiser_matrix);
849     va_TraceMsg(trace_ctx,"\tload_non_intra_quantiser_matrix = %d\n", p->load_non_intra_quantiser_matrix);
850     va_TraceMsg(trace_ctx,"\tload_chroma_intra_quantiser_matrix = %d\n", p->load_chroma_intra_quantiser_matrix);
851     va_TraceMsg(trace_ctx,"\tload_chroma_non_intra_quantiser_matrix = %d\n", p->load_chroma_non_intra_quantiser_matrix);
852     va_TraceMsg(trace_ctx,"\tintra_quantiser_matrix = %d\n", p->intra_quantiser_matrix);
853     va_TraceMsg(trace_ctx,"\tnon_intra_quantiser_matrix = %d\n", p->non_intra_quantiser_matrix);
854     va_TraceMsg(trace_ctx,"\tchroma_intra_quantiser_matrix = %d\n", p->chroma_intra_quantiser_matrix);
855     va_TraceMsg(trace_ctx,"\tchroma_non_intra_quantiser_matrix = %d\n", p->chroma_non_intra_quantiser_matrix);
856     va_TraceMsg(trace_ctx, NULL);
857 
858     return;
859 }
860 
861 
va_TraceVASliceParameterBufferMPEG2(VADisplay dpy,VAContextID __maybe_unused context,VABufferID __maybe_unused buffer,VABufferType __maybe_unused type,unsigned int __maybe_unused size,unsigned int __maybe_unused num_elements,void * data)862 static void va_TraceVASliceParameterBufferMPEG2(
863     VADisplay dpy,
864     VAContextID __maybe_unused context,
865     VABufferID __maybe_unused buffer,
866     VABufferType __maybe_unused type,
867     unsigned int __maybe_unused size,
868     unsigned int __maybe_unused num_elements,
869     void *data)
870 {
871     VASliceParameterBufferMPEG2 *p=(VASliceParameterBufferMPEG2 *)data;
872 
873     DPY2TRACECTX(dpy);
874 
875     trace_ctx->trace_slice_no++;
876 
877     trace_ctx->trace_slice_size = p->slice_data_size;
878 
879     va_TraceMsg(trace_ctx,"VASliceParameterBufferMPEG2\n");
880     va_TraceMsg(trace_ctx,"\tslice_data_size = %d\n", p->slice_data_size);
881     va_TraceMsg(trace_ctx,"\tslice_data_offset = %d\n", p->slice_data_offset);
882     va_TraceMsg(trace_ctx,"\tslice_data_flag = %d\n", p->slice_data_flag);
883     va_TraceMsg(trace_ctx,"\tmacroblock_offset = %d\n", p->macroblock_offset);
884     va_TraceMsg(trace_ctx,"\tslice_horizontal_position = %d\n", p->slice_horizontal_position);
885     va_TraceMsg(trace_ctx,"\tslice_vertical_position = %d\n", p->slice_vertical_position);
886     va_TraceMsg(trace_ctx,"\tquantiser_scale_code = %d\n", p->quantiser_scale_code);
887     va_TraceMsg(trace_ctx,"\tintra_slice_flag = %d\n", p->intra_slice_flag);
888     va_TraceMsg(trace_ctx, NULL);
889 
890     return;
891 }
892 
va_TraceVAPictureParameterBufferJPEG(VADisplay dpy,VAContextID __maybe_unused context,VABufferID __maybe_unused buffer,VABufferType __maybe_unused type,unsigned int __maybe_unused size,unsigned int __maybe_unused num_elements,void * data)893 static void va_TraceVAPictureParameterBufferJPEG(
894     VADisplay dpy,
895     VAContextID __maybe_unused context,
896     VABufferID __maybe_unused buffer,
897     VABufferType __maybe_unused type,
898     unsigned int __maybe_unused size,
899     unsigned int __maybe_unused num_elements,
900     void *data)
901 {
902     int i;
903     VAPictureParameterBufferJPEGBaseline *p=(VAPictureParameterBufferJPEGBaseline *)data;
904     DPY2TRACECTX(dpy);
905 
906     va_TraceMsg(trace_ctx,"*VAPictureParameterBufferJPEG\n");
907     va_TraceMsg(trace_ctx,"\tpicture_width = %u\n", p->picture_width);
908     va_TraceMsg(trace_ctx,"\tpicture_height = %u\n", p->picture_height);
909     va_TraceMsg(trace_ctx,"\tcomponents = \n");
910     for (i = 0; i < p->num_components && i < 255; ++i) {
911         va_TraceMsg(trace_ctx,"\t\t[%d] component_id = %u\n", i, p->components[i].component_id);
912         va_TraceMsg(trace_ctx,"\t\t[%d] h_sampling_factor = %u\n", i, p->components[i].h_sampling_factor);
913         va_TraceMsg(trace_ctx,"\t\t[%d] v_sampling_factor = %u\n", i, p->components[i].v_sampling_factor);
914         va_TraceMsg(trace_ctx,"\t\t[%d] quantiser_table_selector = %u\n", i, p->components[i].quantiser_table_selector);
915     }
916 }
917 
va_TraceVAIQMatrixBufferJPEG(VADisplay dpy,VAContextID __maybe_unused context,VABufferID __maybe_unused buffer,VABufferType __maybe_unused type,unsigned int __maybe_unused size,unsigned int __maybe_unused num_elements,void * data)918 static void va_TraceVAIQMatrixBufferJPEG(
919     VADisplay dpy,
920     VAContextID __maybe_unused context,
921     VABufferID __maybe_unused buffer,
922     VABufferType __maybe_unused type,
923     unsigned int __maybe_unused size,
924     unsigned int __maybe_unused num_elements,
925     void *data)
926 {
927     int i, j;
928     static char tmp[1024];
929     VAIQMatrixBufferJPEGBaseline *p=(VAIQMatrixBufferJPEGBaseline *)data;
930     DPY2TRACECTX(dpy);
931 
932     va_TraceMsg(trace_ctx,"*VAIQMatrixParameterBufferJPEG\n");
933     va_TraceMsg(trace_ctx,"\tload_quantiser_table =\n");
934     for (i = 0; i < 4; ++i) {
935         va_TraceMsg(trace_ctx,"\t\t[%d] = %u\n", i, p->load_quantiser_table[i]);
936     }
937     va_TraceMsg(trace_ctx,"\tquantiser_table =\n");
938     for (i = 0; i < 4; ++i) {
939         memset(tmp, 0, sizeof tmp);
940         for (j = 0; j < 64; ++j) {
941             sprintf(tmp + strlen(tmp), "%u ", p->quantiser_table[i][j]);
942         }
943         va_TraceMsg(trace_ctx,"\t\t[%d] = %s\n", i, tmp);
944     }
945 }
946 
va_TraceVASliceParameterBufferJPEG(VADisplay dpy,VAContextID __maybe_unused context,VABufferID __maybe_unused buffer,VABufferType __maybe_unused type,unsigned int __maybe_unused size,unsigned int __maybe_unused num_elements,void * data)947 static void va_TraceVASliceParameterBufferJPEG(
948     VADisplay dpy,
949     VAContextID __maybe_unused context,
950     VABufferID __maybe_unused buffer,
951     VABufferType __maybe_unused type,
952     unsigned int __maybe_unused size,
953     unsigned int __maybe_unused num_elements,
954     void *data)
955 {
956     int i;
957     VASliceParameterBufferJPEGBaseline *p=(VASliceParameterBufferJPEGBaseline *)data;
958     DPY2TRACECTX(dpy);
959 
960     va_TraceMsg(trace_ctx,"*VASliceParameterBufferJPEG\n");
961     va_TraceMsg(trace_ctx,"\tslice_data_size = %u\n", p->slice_data_size);
962     va_TraceMsg(trace_ctx,"\tslice_data_offset = %u\n", p->slice_data_offset);
963     va_TraceMsg(trace_ctx,"\tslice_data_flag = %u\n", p->slice_data_flag);
964     va_TraceMsg(trace_ctx,"\tslice_horizontal_position = %u\n", p->slice_horizontal_position);
965     va_TraceMsg(trace_ctx,"\tslice_vertical_position = %u\n", p->slice_vertical_position);
966     va_TraceMsg(trace_ctx,"\tcomponents = \n");
967     for (i = 0; i < p->num_components && i < 4; ++i) {
968         va_TraceMsg(trace_ctx,"\t\t[%d] component_selector = %u\n", i, p->components[i].component_selector);
969         va_TraceMsg(trace_ctx,"\t\t[%d] dc_table_selector = %u\n", i, p->components[i].dc_table_selector);
970         va_TraceMsg(trace_ctx,"\t\t[%d] ac_table_selector = %u\n", i, p->components[i].ac_table_selector);
971     }
972     va_TraceMsg(trace_ctx,"\trestart_interval = %u\n", p->restart_interval);
973     va_TraceMsg(trace_ctx,"\tnum_mcus = %u\n", p->num_mcus);
974 }
975 
va_TraceVAHuffmanTableBufferJPEG(VADisplay dpy,VAContextID __maybe_unused context,VABufferID __maybe_unused buffer,VABufferType __maybe_unused type,unsigned int __maybe_unused size,unsigned int __maybe_unused num_elements,void * data)976 static void va_TraceVAHuffmanTableBufferJPEG(
977     VADisplay dpy,
978     VAContextID __maybe_unused context,
979     VABufferID __maybe_unused buffer,
980     VABufferType __maybe_unused type,
981     unsigned int __maybe_unused size,
982     unsigned int __maybe_unused num_elements,
983     void *data)
984 {
985     int i, j;
986     static char tmp[1024];
987     VAHuffmanTableBufferJPEGBaseline *p=(VAHuffmanTableBufferJPEGBaseline *)data;
988     DPY2TRACECTX(dpy);
989     va_TraceMsg(trace_ctx,"*VAHuffmanTableBufferJPEG\n");
990 
991     for (i = 0; i < 2; ++i) {
992         va_TraceMsg(trace_ctx,"\tload_huffman_table[%d] =%u\n", i, p->load_huffman_table[0]);
993         va_TraceMsg(trace_ctx,"\thuffman_table[%d] =\n", i);
994         memset(tmp, 0, sizeof tmp);
995         for (j = 0; j < 16; ++j) {
996             sprintf(tmp + strlen(tmp), "%u ", p->huffman_table[i].num_dc_codes[j]);
997         }
998         va_TraceMsg(trace_ctx,"\t\tnum_dc_codes =%s\n", tmp);
999         memset(tmp, 0, sizeof tmp);
1000         for (j = 0; j < 12; ++j) {
1001             sprintf(tmp + strlen(tmp), "%u ", p->huffman_table[i].dc_values[j]);
1002         }
1003         va_TraceMsg(trace_ctx,"\t\tdc_values =%s\n", tmp);
1004         memset(tmp, 0, sizeof tmp);
1005         for (j = 0; j < 16; ++j) {
1006             sprintf(tmp + strlen(tmp), "%u ", p->huffman_table[i].num_ac_codes[j]);
1007         }
1008         va_TraceMsg(trace_ctx,"\t\tnum_ac_codes =%s\n", tmp);
1009         memset(tmp, 0, sizeof tmp);
1010         for (j = 0; j < 162; ++j) {
1011             sprintf(tmp + strlen(tmp), "%u ", p->huffman_table[i].ac_values[j]);
1012         }
1013         va_TraceMsg(trace_ctx,"\t\tac_values =%s\n", tmp);
1014         memset(tmp, 0, sizeof tmp);
1015         for (j = 0; j < 2; ++j) {
1016             sprintf(tmp + strlen(tmp), "%u ", p->huffman_table[i].pad[j]);
1017         }
1018         va_TraceMsg(trace_ctx,"\t\tpad =%s\n", tmp);
1019     }
1020 }
1021 
va_TraceVAPictureParameterBufferMPEG4(VADisplay dpy,VAContextID __maybe_unused context,VABufferID __maybe_unused buffer,VABufferType __maybe_unused type,unsigned int __maybe_unused size,unsigned int __maybe_unused num_elements,void * data)1022 static void va_TraceVAPictureParameterBufferMPEG4(
1023     VADisplay dpy,
1024     VAContextID __maybe_unused context,
1025     VABufferID __maybe_unused buffer,
1026     VABufferType __maybe_unused type,
1027     unsigned int __maybe_unused size,
1028     unsigned int __maybe_unused num_elements,
1029     void *data)
1030 {
1031     int i;
1032     VAPictureParameterBufferMPEG4 *p=(VAPictureParameterBufferMPEG4 *)data;
1033 
1034     DPY2TRACECTX(dpy);
1035 
1036     va_TraceMsg(trace_ctx,"*VAPictureParameterBufferMPEG4\n");
1037     va_TraceMsg(trace_ctx,"\tvop_width = %d\n", p->vop_width);
1038     va_TraceMsg(trace_ctx,"\tvop_height = %d\n", p->vop_height);
1039     va_TraceMsg(trace_ctx,"\tforward_reference_picture = %d\n", p->forward_reference_picture);
1040     va_TraceMsg(trace_ctx,"\tbackward_reference_picture = %d\n", p->backward_reference_picture);
1041     va_TraceMsg(trace_ctx,"\tvol_fields value = %d\n", p->vol_fields.value);
1042     va_TraceMsg(trace_ctx,"\tshort_video_header= %d\n", p->vol_fields.bits.short_video_header);
1043     va_TraceMsg(trace_ctx,"\tchroma_format= %d\n", p->vol_fields.bits.chroma_format);
1044     va_TraceMsg(trace_ctx,"\tinterlaced= %d\n", p->vol_fields.bits.interlaced);
1045     va_TraceMsg(trace_ctx,"\tobmc_disable= %d\n", p->vol_fields.bits.obmc_disable);
1046     va_TraceMsg(trace_ctx,"\tsprite_enable= %d\n", p->vol_fields.bits.sprite_enable);
1047     va_TraceMsg(trace_ctx,"\tsprite_warping_accuracy= %d\n", p->vol_fields.bits.sprite_warping_accuracy);
1048     va_TraceMsg(trace_ctx,"\tquant_type= %d\n", p->vol_fields.bits.quant_type);
1049     va_TraceMsg(trace_ctx,"\tquarter_sample= %d\n", p->vol_fields.bits.quarter_sample);
1050     va_TraceMsg(trace_ctx,"\tdata_partitioned= %d\n", p->vol_fields.bits.data_partitioned);
1051     va_TraceMsg(trace_ctx,"\treversible_vlc= %d\n", p->vol_fields.bits.reversible_vlc);
1052     va_TraceMsg(trace_ctx,"\tresync_marker_disable= %d\n", p->vol_fields.bits.resync_marker_disable);
1053     va_TraceMsg(trace_ctx,"\tno_of_sprite_warping_points = %d\n", p->no_of_sprite_warping_points);
1054     va_TraceMsg(trace_ctx,"\tsprite_trajectory_du =");
1055     for(i=0;i<3;i++)
1056         va_TraceMsg(trace_ctx,"\t%d", p->sprite_trajectory_du[i]);
1057 
1058     va_TraceMsg(trace_ctx,"\n");
1059     va_TraceMsg(trace_ctx,"\tsprite_trajectory_dv =");
1060     for(i=0;i<3;i++)
1061         va_TraceMsg(trace_ctx,"\t%d", p->sprite_trajectory_dv[i]);
1062     va_TraceMsg(trace_ctx,"\n");
1063     va_TraceMsg(trace_ctx,"\tvop_fields value = %d\n", p->vop_fields.value);
1064     va_TraceMsg(trace_ctx,"\tvop_coding_type= %d\n", p->vop_fields.bits.vop_coding_type);
1065     va_TraceMsg(trace_ctx,"\tbackward_reference_vop_coding_type= %d\n", p->vop_fields.bits.backward_reference_vop_coding_type);
1066     va_TraceMsg(trace_ctx,"\tvop_rounding_type= %d\n", p->vop_fields.bits.vop_rounding_type);
1067     va_TraceMsg(trace_ctx,"\tintra_dc_vlc_thr= %d\n", p->vop_fields.bits.intra_dc_vlc_thr);
1068     va_TraceMsg(trace_ctx,"\ttop_field_first= %d\n", p->vop_fields.bits.top_field_first);
1069     va_TraceMsg(trace_ctx,"\talternate_vertical_scan_flag= %d\n", p->vop_fields.bits.alternate_vertical_scan_flag);
1070     va_TraceMsg(trace_ctx,"\tvop_fcode_forward = %d\n", p->vop_fcode_forward);
1071     va_TraceMsg(trace_ctx,"\tvop_fcode_backward = %d\n", p->vop_fcode_backward);
1072     va_TraceMsg(trace_ctx,"\tnum_gobs_in_vop = %d\n", p->num_gobs_in_vop);
1073     va_TraceMsg(trace_ctx,"\tnum_macroblocks_in_gob = %d\n", p->num_macroblocks_in_gob);
1074     va_TraceMsg(trace_ctx,"\tTRB = %d\n", p->TRB);
1075     va_TraceMsg(trace_ctx,"\tTRD = %d\n", p->TRD);
1076     va_TraceMsg(trace_ctx, NULL);
1077 
1078     return;
1079 }
1080 
1081 
va_TraceVAIQMatrixBufferMPEG4(VADisplay dpy,VAContextID __maybe_unused context,VABufferID __maybe_unused buffer,VABufferType __maybe_unused type,unsigned int __maybe_unused size,unsigned int __maybe_unused num_elements,void * data)1082 static void va_TraceVAIQMatrixBufferMPEG4(
1083     VADisplay dpy,
1084     VAContextID __maybe_unused context,
1085     VABufferID __maybe_unused buffer,
1086     VABufferType __maybe_unused type,
1087     unsigned int __maybe_unused size,
1088     unsigned int __maybe_unused num_elements,
1089     void *data)
1090 {
1091     int i;
1092     VAIQMatrixBufferMPEG4 *p=(VAIQMatrixBufferMPEG4 *)data;
1093     DPY2TRACECTX(dpy);
1094 
1095     va_TraceMsg(trace_ctx,"VAIQMatrixBufferMPEG4\n");
1096 
1097     va_TraceMsg(trace_ctx,"\tload_intra_quant_mat = %d\n", p->load_intra_quant_mat);
1098     va_TraceMsg(trace_ctx,"\tload_non_intra_quant_mat = %d\n", p->load_non_intra_quant_mat);
1099     va_TraceMsg(trace_ctx,"\tintra_quant_mat =\n");
1100     for(i=0;i<64;i++)
1101         va_TraceMsg(trace_ctx,"\t\t%d\n", p->intra_quant_mat[i]);
1102 
1103     va_TraceMsg(trace_ctx,"\tnon_intra_quant_mat =\n");
1104     for(i=0;i<64;i++)
1105         va_TraceMsg(trace_ctx,"\t\t%d\n", p->non_intra_quant_mat[i]);
1106     va_TraceMsg(trace_ctx, NULL);
1107 
1108     return;
1109 }
1110 
va_TraceVAEncSequenceParameterBufferMPEG4(VADisplay dpy,VAContextID __maybe_unused context,VABufferID __maybe_unused buffer,VABufferType __maybe_unused type,unsigned int __maybe_unused size,unsigned int __maybe_unused num_elements,void * data)1111 static void va_TraceVAEncSequenceParameterBufferMPEG4(
1112     VADisplay dpy,
1113     VAContextID __maybe_unused context,
1114     VABufferID __maybe_unused buffer,
1115     VABufferType __maybe_unused type,
1116     unsigned int __maybe_unused size,
1117     unsigned int __maybe_unused num_elements,
1118     void *data)
1119 {
1120     VAEncSequenceParameterBufferMPEG4 *p = (VAEncSequenceParameterBufferMPEG4 *)data;
1121     DPY2TRACECTX(dpy);
1122 
1123     va_TraceMsg(trace_ctx, "\t--VAEncSequenceParameterBufferMPEG4\n");
1124     va_TraceMsg(trace_ctx, "\tprofile_and_level_indication = %d\n", p->profile_and_level_indication);
1125     va_TraceMsg(trace_ctx, "\tintra_period = %d\n", p->intra_period);
1126     va_TraceMsg(trace_ctx, "\tvideo_object_layer_width = %d\n", p->video_object_layer_width);
1127     va_TraceMsg(trace_ctx, "\tvideo_object_layer_height = %d\n", p->video_object_layer_height);
1128     va_TraceMsg(trace_ctx, "\tvop_time_increment_resolution = %d\n", p->vop_time_increment_resolution);
1129     va_TraceMsg(trace_ctx, "\tfixed_vop_rate = %d\n", p->fixed_vop_rate);
1130     va_TraceMsg(trace_ctx, "\tfixed_vop_time_increment = %d\n", p->fixed_vop_time_increment);
1131     va_TraceMsg(trace_ctx, "\tbits_per_second = %d\n", p->bits_per_second);
1132     va_TraceMsg(trace_ctx, "\tframe_rate = %d\n", p->frame_rate);
1133     va_TraceMsg(trace_ctx, "\tinitial_qp = %d\n", p->initial_qp);
1134     va_TraceMsg(trace_ctx, "\tmin_qp = %d\n", p->min_qp);
1135     va_TraceMsg(trace_ctx, NULL);
1136 
1137     return;
1138 }
1139 
va_TraceVAEncPictureParameterBufferMPEG4(VADisplay dpy,VAContextID __maybe_unused context,VABufferID __maybe_unused buffer,VABufferType __maybe_unused type,unsigned int __maybe_unused size,unsigned int __maybe_unused num_elements,void * data)1140 static void va_TraceVAEncPictureParameterBufferMPEG4(
1141     VADisplay dpy,
1142     VAContextID __maybe_unused context,
1143     VABufferID __maybe_unused buffer,
1144     VABufferType __maybe_unused type,
1145     unsigned int __maybe_unused size,
1146     unsigned int __maybe_unused num_elements,
1147     void *data)
1148 {
1149     VAEncPictureParameterBufferMPEG4 *p = (VAEncPictureParameterBufferMPEG4 *)data;
1150     DPY2TRACECTX(dpy);
1151 
1152     va_TraceMsg(trace_ctx, "\t--VAEncPictureParameterBufferMPEG4\n");
1153     va_TraceMsg(trace_ctx, "\treference_picture = 0x%08x\n", p->reference_picture);
1154     va_TraceMsg(trace_ctx, "\treconstructed_picture = 0x%08x\n", p->reconstructed_picture);
1155     va_TraceMsg(trace_ctx, "\tcoded_buf = 0x%08x\n", p->coded_buf);
1156     va_TraceMsg(trace_ctx, "\tpicture_width = %d\n", p->picture_width);
1157     va_TraceMsg(trace_ctx, "\tpicture_height = %d\n", p->picture_height);
1158     va_TraceMsg(trace_ctx, "\tmodulo_time_base = %d\n", p->modulo_time_base);
1159     va_TraceMsg(trace_ctx, "\tvop_time_increment = %d\n", p->vop_time_increment);
1160     va_TraceMsg(trace_ctx, "\tpicture_type = %d\n", p->picture_type);
1161     va_TraceMsg(trace_ctx, NULL);
1162 
1163     return;
1164 }
1165 
1166 
va_TraceVASliceParameterBufferMPEG4(VADisplay dpy,VAContextID __maybe_unused context,VABufferID __maybe_unused buffer,VABufferType __maybe_unused type,unsigned int __maybe_unused size,unsigned int __maybe_unused num_elements,void * data)1167 static void va_TraceVASliceParameterBufferMPEG4(
1168     VADisplay dpy,
1169     VAContextID __maybe_unused context,
1170     VABufferID __maybe_unused buffer,
1171     VABufferType __maybe_unused type,
1172     unsigned int __maybe_unused size,
1173     unsigned int __maybe_unused num_elements,
1174     void *data)
1175 {
1176     VASliceParameterBufferMPEG4 *p=(VASliceParameterBufferMPEG4 *)data;
1177 
1178     DPY2TRACECTX(dpy);
1179 
1180     trace_ctx->trace_slice_no++;
1181 
1182     trace_ctx->trace_slice_size = p->slice_data_size;
1183 
1184     va_TraceMsg(trace_ctx,"VASliceParameterBufferMPEG4\n");
1185 
1186     va_TraceMsg(trace_ctx,"\tslice_data_size = %d\n", p->slice_data_size);
1187     va_TraceMsg(trace_ctx,"\tslice_data_offset = %d\n", p->slice_data_offset);
1188     va_TraceMsg(trace_ctx,"\tslice_data_flag = %d\n", p->slice_data_flag);
1189     va_TraceMsg(trace_ctx,"\tmacroblock_offset = %d\n", p->macroblock_offset);
1190     va_TraceMsg(trace_ctx,"\tmacroblock_number = %d\n", p->macroblock_number);
1191     va_TraceMsg(trace_ctx,"\tquant_scale = %d\n", p->quant_scale);
1192     va_TraceMsg(trace_ctx, NULL);
1193 
1194     return;
1195 }
1196 
1197 
va_TraceFlagIfNotZero(struct trace_context * trace_ctx,const char * name,unsigned int flag)1198 static inline void va_TraceFlagIfNotZero(
1199     struct trace_context *trace_ctx,
1200     const char *name,   /* in */
1201     unsigned int flag   /* in */
1202 )
1203 {
1204     if (flag != 0) {
1205         va_TraceMsg(trace_ctx, "%s = %x\n", name, flag);
1206     }
1207 }
1208 
1209 
va_TraceVAPictureParameterBufferH264(VADisplay dpy,VAContextID __maybe_unused context,VABufferID __maybe_unused buffer,VABufferType __maybe_unused type,unsigned int __maybe_unused size,unsigned int __maybe_unused num_elements,void * data)1210 static void va_TraceVAPictureParameterBufferH264(
1211     VADisplay dpy,
1212     VAContextID __maybe_unused context,
1213     VABufferID __maybe_unused buffer,
1214     VABufferType __maybe_unused type,
1215     unsigned int __maybe_unused size,
1216     unsigned int __maybe_unused num_elements,
1217     void *data)
1218 {
1219     int i;
1220     VAPictureParameterBufferH264 *p = (VAPictureParameterBufferH264*)data;
1221 
1222     DPY2TRACECTX(dpy);
1223 
1224     va_TraceMsg(trace_ctx, "\t--VAPictureParameterBufferH264\n");
1225 
1226     va_TraceMsg(trace_ctx, "\tCurrPic.picture_id = 0x%08x\n", p->CurrPic.picture_id);
1227     va_TraceMsg(trace_ctx, "\tCurrPic.frame_idx = %d\n", p->CurrPic.frame_idx);
1228     va_TraceMsg(trace_ctx, "\tCurrPic.flags = %d\n", p->CurrPic.flags);
1229     va_TraceMsg(trace_ctx, "\tCurrPic.TopFieldOrderCnt = %d\n", p->CurrPic.TopFieldOrderCnt);
1230     va_TraceMsg(trace_ctx, "\tCurrPic.BottomFieldOrderCnt = %d\n", p->CurrPic.BottomFieldOrderCnt);
1231 
1232     va_TraceMsg(trace_ctx, "\tReferenceFrames (TopFieldOrderCnt-BottomFieldOrderCnt-picture_id-frame_idx-flags:\n");
1233     for (i = 0; i < 16; i++)
1234     {
1235         if ((p->ReferenceFrames[i].picture_id != VA_INVALID_SURFACE) &&
1236             ((p->ReferenceFrames[i].flags & VA_PICTURE_H264_INVALID) == 0)) {
1237             va_TraceMsg(trace_ctx, "\t\t%08d-%08d-0x%08x-%08d-0x%08x\n",
1238                         p->ReferenceFrames[i].TopFieldOrderCnt,
1239                         p->ReferenceFrames[i].BottomFieldOrderCnt,
1240                         p->ReferenceFrames[i].picture_id,
1241                         p->ReferenceFrames[i].frame_idx,
1242                         p->ReferenceFrames[i].flags);
1243         } else
1244             break;
1245     }
1246     va_TraceMsg(trace_ctx, "\tpicture_width_in_mbs_minus1 = %d\n", p->picture_width_in_mbs_minus1);
1247     va_TraceMsg(trace_ctx, "\tpicture_height_in_mbs_minus1 = %d\n", p->picture_height_in_mbs_minus1);
1248     va_TraceMsg(trace_ctx, "\tbit_depth_luma_minus8 = %d\n", p->bit_depth_luma_minus8);
1249     va_TraceMsg(trace_ctx, "\tbit_depth_chroma_minus8 = %d\n", p->bit_depth_chroma_minus8);
1250     va_TraceMsg(trace_ctx, "\tnum_ref_frames = %d\n", p->num_ref_frames);
1251     va_TraceMsg(trace_ctx, "\tseq fields = %d\n", p->seq_fields.value);
1252     va_TraceMsg(trace_ctx, "\tchroma_format_idc = %d\n", p->seq_fields.bits.chroma_format_idc);
1253     va_TraceMsg(trace_ctx, "\tresidual_colour_transform_flag = %d\n", p->seq_fields.bits.residual_colour_transform_flag);
1254     va_TraceMsg(trace_ctx, "\tframe_mbs_only_flag = %d\n", p->seq_fields.bits.frame_mbs_only_flag);
1255     va_TraceMsg(trace_ctx, "\tmb_adaptive_frame_field_flag = %d\n", p->seq_fields.bits.mb_adaptive_frame_field_flag);
1256     va_TraceMsg(trace_ctx, "\tdirect_8x8_inference_flag = %d\n", p->seq_fields.bits.direct_8x8_inference_flag);
1257     va_TraceMsg(trace_ctx, "\tMinLumaBiPredSize8x8 = %d\n", p->seq_fields.bits.MinLumaBiPredSize8x8);
1258     va_TraceMsg(trace_ctx, "\tnum_slice_groups_minus1 = %d\n", p->num_slice_groups_minus1);
1259     va_TraceMsg(trace_ctx, "\tslice_group_map_type = %d\n", p->slice_group_map_type);
1260     va_TraceMsg(trace_ctx, "\tslice_group_change_rate_minus1 = %d\n", p->slice_group_change_rate_minus1);
1261     va_TraceMsg(trace_ctx, "\tpic_init_qp_minus26 = %d\n", p->pic_init_qp_minus26);
1262     va_TraceMsg(trace_ctx, "\tpic_init_qs_minus26 = %d\n", p->pic_init_qs_minus26);
1263     va_TraceMsg(trace_ctx, "\tchroma_qp_index_offset = %d\n", p->chroma_qp_index_offset);
1264     va_TraceMsg(trace_ctx, "\tsecond_chroma_qp_index_offset = %d\n", p->second_chroma_qp_index_offset);
1265     va_TraceMsg(trace_ctx, "\tpic_fields = 0x%03x\n", p->pic_fields.value);
1266     va_TraceFlagIfNotZero(trace_ctx, "\t\tentropy_coding_mode_flag", p->pic_fields.bits.entropy_coding_mode_flag);
1267     va_TraceFlagIfNotZero(trace_ctx, "\t\tweighted_pred_flag", p->pic_fields.bits.weighted_pred_flag);
1268     va_TraceFlagIfNotZero(trace_ctx, "\t\tweighted_bipred_idc", p->pic_fields.bits.weighted_bipred_idc);
1269     va_TraceFlagIfNotZero(trace_ctx, "\t\ttransform_8x8_mode_flag", p->pic_fields.bits.transform_8x8_mode_flag);
1270     va_TraceFlagIfNotZero(trace_ctx, "\t\tfield_pic_flag", p->pic_fields.bits.field_pic_flag);
1271     va_TraceFlagIfNotZero(trace_ctx, "\t\tconstrained_intra_pred_flag", p->pic_fields.bits.constrained_intra_pred_flag);
1272     va_TraceFlagIfNotZero(trace_ctx, "\t\tpic_order_present_flag", p->pic_fields.bits.pic_order_present_flag);
1273     va_TraceFlagIfNotZero(trace_ctx, "\t\tdeblocking_filter_control_present_flag", p->pic_fields.bits.deblocking_filter_control_present_flag);
1274     va_TraceFlagIfNotZero(trace_ctx, "\t\tredundant_pic_cnt_present_flag", p->pic_fields.bits.redundant_pic_cnt_present_flag);
1275     va_TraceFlagIfNotZero(trace_ctx, "\t\treference_pic_flag", p->pic_fields.bits.reference_pic_flag);
1276     va_TraceMsg(trace_ctx, "\tframe_num = %d\n", p->frame_num);
1277     va_TraceMsg(trace_ctx, "\tnum_ref_idx_l0_default_active_minus1 = %d\n", p->num_ref_idx_l0_default_active_minus1);
1278     va_TraceMsg(trace_ctx, "\tnum_ref_idx_l1_default_active_minus1 = %d\n", p->num_ref_idx_l1_default_active_minus1);
1279 
1280     va_TraceMsg(trace_ctx, NULL);
1281 
1282     return;
1283 }
1284 
va_TraceVASliceParameterBufferH264(VADisplay dpy,VAContextID __maybe_unused context,VABufferID __maybe_unused buffer,VABufferType __maybe_unused type,unsigned int __maybe_unused size,unsigned int __maybe_unused num_elements,void * data)1285 static void va_TraceVASliceParameterBufferH264(
1286     VADisplay dpy,
1287     VAContextID __maybe_unused context,
1288     VABufferID __maybe_unused buffer,
1289     VABufferType __maybe_unused type,
1290     unsigned int __maybe_unused size,
1291     unsigned int __maybe_unused num_elements,
1292     void *data)
1293 {
1294     int i;
1295     VASliceParameterBufferH264* p = (VASliceParameterBufferH264*)data;
1296     DPY2TRACECTX(dpy);
1297 
1298     trace_ctx->trace_slice_no++;
1299     trace_ctx->trace_slice_size = p->slice_data_size;
1300 
1301     va_TraceMsg(trace_ctx, "\t--VASliceParameterBufferH264\n");
1302     va_TraceMsg(trace_ctx, "\tslice_data_size = %d\n", p->slice_data_size);
1303     va_TraceMsg(trace_ctx, "\tslice_data_offset = %d\n", p->slice_data_offset);
1304     va_TraceMsg(trace_ctx, "\tslice_data_flag = %d\n", p->slice_data_flag);
1305     va_TraceMsg(trace_ctx, "\tslice_data_bit_offset = %d\n", p->slice_data_bit_offset);
1306     va_TraceMsg(trace_ctx, "\tfirst_mb_in_slice = %d\n", p->first_mb_in_slice);
1307     va_TraceMsg(trace_ctx, "\tslice_type = %d\n", p->slice_type);
1308     va_TraceMsg(trace_ctx, "\tdirect_spatial_mv_pred_flag = %d\n", p->direct_spatial_mv_pred_flag);
1309     va_TraceMsg(trace_ctx, "\tnum_ref_idx_l0_active_minus1 = %d\n", p->num_ref_idx_l0_active_minus1);
1310     va_TraceMsg(trace_ctx, "\tnum_ref_idx_l1_active_minus1 = %d\n", p->num_ref_idx_l1_active_minus1);
1311     va_TraceMsg(trace_ctx, "\tcabac_init_idc = %d\n", p->cabac_init_idc);
1312     va_TraceMsg(trace_ctx, "\tslice_qp_delta = %d\n", p->slice_qp_delta);
1313     va_TraceMsg(trace_ctx, "\tdisable_deblocking_filter_idc = %d\n", p->disable_deblocking_filter_idc);
1314     va_TraceMsg(trace_ctx, "\tslice_alpha_c0_offset_div2 = %d\n", p->slice_alpha_c0_offset_div2);
1315     va_TraceMsg(trace_ctx, "\tslice_beta_offset_div2 = %d\n", p->slice_beta_offset_div2);
1316 
1317     va_TraceMsg(trace_ctx, "\tRefPicList0 =\n");
1318     for (i = 0; i < 32; i++) {
1319         if ((p->RefPicList0[i].picture_id != VA_INVALID_SURFACE) &&
1320             ((p->RefPicList0[i].flags & VA_PICTURE_H264_INVALID) == 0))
1321         va_TraceMsg(trace_ctx, "%08d-%08d-0x%08x-%08d-0x%08x\n", p->RefPicList0[i].TopFieldOrderCnt, p->RefPicList0[i].BottomFieldOrderCnt, p->RefPicList0[i].picture_id, p->RefPicList0[i].frame_idx,  p->RefPicList0[i].flags);
1322         else
1323             break;
1324     }
1325     va_TraceMsg(trace_ctx, "\tRefPicList1 =\n");
1326     for (i = 0; i < 32; i++) {
1327         if ((p->RefPicList1[i].picture_id != VA_INVALID_SURFACE) &&
1328             ((p->RefPicList1[i].flags & VA_PICTURE_H264_INVALID) == 0))
1329             va_TraceMsg(trace_ctx, "%08d-%08d-0x%08x-%08d-0x%08x\n", p->RefPicList1[i].TopFieldOrderCnt, p->RefPicList1[i].BottomFieldOrderCnt, p->RefPicList1[i].picture_id, p->RefPicList1[i].frame_idx, p->RefPicList1[i].flags);
1330         else
1331             break;
1332     }
1333 
1334     va_TraceMsg(trace_ctx, "\tluma_log2_weight_denom = %d\n", p->luma_log2_weight_denom);
1335     va_TraceMsg(trace_ctx, "\tchroma_log2_weight_denom = %d\n", p->chroma_log2_weight_denom);
1336     va_TraceMsg(trace_ctx, "\tluma_weight_l0_flag = %d\n", p->luma_weight_l0_flag);
1337 
1338     for (i = 0; (i <= p->num_ref_idx_l0_active_minus1) && (i<32); i++) {
1339         va_TraceMsg(trace_ctx, "\t\t%d\t%d\n",
1340             p->luma_weight_l0[i],
1341             p->luma_offset_l0[i]);
1342     }
1343 
1344 
1345     va_TraceMsg(trace_ctx, "\tchroma_weight_l0_flag = %d\n", p->chroma_weight_l0_flag);
1346 
1347     for (i = 0; (i <= p->num_ref_idx_l0_active_minus1) && (i<32); i++) {
1348         va_TraceMsg(trace_ctx, "\t\t%d\t%d\t%d\t%d\n",
1349             p->chroma_weight_l0[i][0],
1350             p->chroma_offset_l0[i][0],
1351             p->chroma_weight_l0[i][1],
1352             p->chroma_offset_l0[i][1]);
1353     }
1354 
1355 
1356     va_TraceMsg(trace_ctx, "\tluma_weight_l1_flag = %d\n", p->luma_weight_l1_flag);
1357 
1358     for (i = 0; (i <=  p->num_ref_idx_l1_active_minus1) && (i<32); i++) {
1359         va_TraceMsg(trace_ctx, "\t\t%d\t%d\n",
1360             p->luma_weight_l1[i],
1361             p->luma_offset_l1[i]);
1362     }
1363 
1364 
1365     va_TraceMsg(trace_ctx, "\tchroma_weight_l1_flag = %d\n", p->chroma_weight_l1_flag);
1366 
1367     for (i = 0; (i <= p->num_ref_idx_l1_active_minus1) && (i<32); i++) {
1368         va_TraceMsg(trace_ctx, "\t\t%d\t%d\t%d\t%d\n",
1369             p->chroma_weight_l1[i][0],
1370             p->chroma_offset_l1[i][0],
1371             p->chroma_weight_l1[i][1],
1372             p->chroma_offset_l1[i][1]);
1373 
1374     }
1375     va_TraceMsg(trace_ctx, NULL);
1376 }
1377 
va_TraceVAIQMatrixBufferH264(VADisplay dpy,VAContextID __maybe_unused context,VABufferID __maybe_unused buffer,VABufferType __maybe_unused type,unsigned int __maybe_unused size,unsigned int __maybe_unused num_elements,void * data)1378 static void va_TraceVAIQMatrixBufferH264(
1379     VADisplay dpy,
1380     VAContextID __maybe_unused context,
1381     VABufferID __maybe_unused buffer,
1382     VABufferType __maybe_unused type,
1383     unsigned int __maybe_unused size,
1384     unsigned int __maybe_unused num_elements,
1385     void *data
1386 )
1387 {
1388     int i, j;
1389     VAIQMatrixBufferH264* p = (VAIQMatrixBufferH264* )data;
1390 
1391     DPY2TRACECTX(dpy);
1392 
1393     va_TraceMsg(trace_ctx, "\t--VAIQMatrixBufferH264\n");
1394 
1395     va_TraceMsg(trace_ctx, "\tScalingList4x4[6][16]=\n");
1396     for (i = 0; i < 6; i++) {
1397         for (j = 0; j < 16; j++) {
1398             if (trace_ctx->trace_fp_log) {
1399                 fprintf(trace_ctx->trace_fp_log, "\t%d", p->ScalingList4x4[i][j]);
1400                 if ((j + 1) % 8 == 0)
1401                     fprintf(trace_ctx->trace_fp_log, "\n");
1402             }
1403         }
1404     }
1405 
1406     va_TraceMsg(trace_ctx, "\tScalingList8x8[2][64]=\n");
1407     for (i = 0; i < 2; i++) {
1408         for (j = 0; j < 64; j++) {
1409             if (trace_ctx->trace_fp_log) {
1410                 fprintf(trace_ctx->trace_fp_log,"\t%d", p->ScalingList8x8[i][j]);
1411                 if ((j + 1) % 8 == 0)
1412                     fprintf(trace_ctx->trace_fp_log, "\n");
1413             }
1414         }
1415     }
1416 
1417     va_TraceMsg(trace_ctx, NULL);
1418 }
1419 
1420 
1421 
va_TraceVAEncSequenceParameterBufferH264(VADisplay dpy,VAContextID __maybe_unused context,VABufferID __maybe_unused buffer,VABufferType __maybe_unused type,unsigned int __maybe_unused size,unsigned int __maybe_unused num_elements,void * data)1422 static void va_TraceVAEncSequenceParameterBufferH264(
1423     VADisplay dpy,
1424     VAContextID __maybe_unused context,
1425     VABufferID __maybe_unused buffer,
1426     VABufferType __maybe_unused type,
1427     unsigned int __maybe_unused size,
1428     unsigned int __maybe_unused num_elements,
1429     void *data)
1430 {
1431     VAEncSequenceParameterBufferH264 *p = (VAEncSequenceParameterBufferH264 *)data;
1432     DPY2TRACECTX(dpy);
1433     unsigned int i;
1434 
1435     va_TraceMsg(trace_ctx, "\t--VAEncSequenceParameterBufferH264\n");
1436 
1437     va_TraceMsg(trace_ctx, "\tseq_parameter_set_id = %d\n", p->seq_parameter_set_id);
1438     va_TraceMsg(trace_ctx, "\tlevel_idc = %d\n", p->level_idc);
1439     va_TraceMsg(trace_ctx, "\tintra_period = %d\n", p->intra_period);
1440     va_TraceMsg(trace_ctx, "\tintra_idr_period = %d\n", p->intra_idr_period);
1441     va_TraceMsg(trace_ctx, "\tip_period = %d\n", p->ip_period);
1442     va_TraceMsg(trace_ctx, "\tbits_per_second = %d\n", p->bits_per_second);
1443     va_TraceMsg(trace_ctx, "\tmax_num_ref_frames = %d\n", p->max_num_ref_frames);
1444     va_TraceMsg(trace_ctx, "\tpicture_width_in_mbs = %d\n", p->picture_width_in_mbs);
1445     va_TraceMsg(trace_ctx, "\tpicture_height_in_mbs = %d\n", p->picture_height_in_mbs);
1446     va_TraceMsg(trace_ctx, "\tchroma_format_idc = %d\n", p->seq_fields.bits.chroma_format_idc);
1447     va_TraceMsg(trace_ctx, "\tframe_mbs_only_flag = %d\n", p->seq_fields.bits.frame_mbs_only_flag);
1448     va_TraceMsg(trace_ctx, "\tmb_adaptive_frame_field_flag = %d\n", p->seq_fields.bits.mb_adaptive_frame_field_flag);
1449     va_TraceMsg(trace_ctx, "\tseq_scaling_matrix_present_flag = %d\n", p->seq_fields.bits.seq_scaling_matrix_present_flag);
1450     va_TraceMsg(trace_ctx, "\tdirect_8x8_inference_flag = %d\n", p->seq_fields.bits.direct_8x8_inference_flag);
1451     va_TraceMsg(trace_ctx, "\tlog2_max_frame_num_minus4 = %d\n", p->seq_fields.bits.log2_max_frame_num_minus4);
1452     va_TraceMsg(trace_ctx, "\tpic_order_cnt_type = %d\n", p->seq_fields.bits.pic_order_cnt_type);
1453     va_TraceMsg(trace_ctx, "\tlog2_max_pic_order_cnt_lsb_minus4 = %d\n", p->seq_fields.bits.log2_max_pic_order_cnt_lsb_minus4);
1454     va_TraceMsg(trace_ctx, "\tdelta_pic_order_always_zero_flag = %d\n", p->seq_fields.bits.delta_pic_order_always_zero_flag);
1455     va_TraceMsg(trace_ctx, "\tbit_depth_luma_minus8 = %d\n", p->bit_depth_luma_minus8);
1456     va_TraceMsg(trace_ctx, "\tbit_depth_chroma_minus8 = %d\n", p->bit_depth_chroma_minus8);
1457     va_TraceMsg(trace_ctx, "\tnum_ref_frames_in_pic_order_cnt_cycle = %d\n", p->num_ref_frames_in_pic_order_cnt_cycle);
1458     va_TraceMsg(trace_ctx, "\toffset_for_non_ref_pic = %d\n", p->offset_for_non_ref_pic);
1459     va_TraceMsg(trace_ctx, "\toffset_for_top_to_bottom_field = %d\n", p->offset_for_top_to_bottom_field);
1460     for(i = 0; (i < p->max_num_ref_frames) && (i < 32); ++i)
1461         va_TraceMsg(trace_ctx, "\toffset_for_ref_frame[%d] = %d\n", i, p->offset_for_ref_frame[i]);
1462     va_TraceMsg(trace_ctx, "\tframe_cropping_flag = %d\n", p->frame_cropping_flag);
1463     va_TraceMsg(trace_ctx, "\tframe_crop_left_offset = %d\n", p->frame_crop_left_offset);
1464     va_TraceMsg(trace_ctx, "\tframe_crop_right_offset = %d\n", p->frame_crop_right_offset);
1465     va_TraceMsg(trace_ctx, "\tframe_crop_top_offset = %d\n", p->frame_crop_top_offset);
1466     va_TraceMsg(trace_ctx, "\tframe_crop_bottom_offset = %d\n", p->frame_crop_bottom_offset);
1467     va_TraceMsg(trace_ctx, "\tvui_parameters_present_flag = %d\n", p->vui_parameters_present_flag);
1468     va_TraceMsg(trace_ctx, "\taspect_ratio_info_present_flag = %d\n", p->vui_fields.bits.aspect_ratio_info_present_flag);
1469     va_TraceMsg(trace_ctx, "\ttiming_info_present_flag = %d\n", p->vui_fields.bits.timing_info_present_flag);
1470     va_TraceMsg(trace_ctx, "\tbitstream_restriction_flag = %d\n", p->vui_fields.bits.bitstream_restriction_flag);
1471     va_TraceMsg(trace_ctx, "\tlog2_max_mv_length_horizontal = %d\n", p->vui_fields.bits.log2_max_mv_length_horizontal);
1472     va_TraceMsg(trace_ctx, "\tlog2_max_mv_length_vertical = %d\n", p->vui_fields.bits.log2_max_mv_length_vertical);
1473     va_TraceMsg(trace_ctx, "\taspect_ratio_idc = %d\n", p->aspect_ratio_idc);
1474     va_TraceMsg(trace_ctx, "\tsar_width = %d\n", p->sar_width);
1475     va_TraceMsg(trace_ctx, "\tsar_height = %d\n", p->sar_height);
1476     va_TraceMsg(trace_ctx, "\tnum_units_in_tick = %d\n", p->num_units_in_tick);
1477     va_TraceMsg(trace_ctx, "\ttime_scale = %d\n", p->time_scale);
1478 
1479     va_TraceMsg(trace_ctx, NULL);
1480 
1481     return;
1482 }
1483 
1484 
va_TraceVAEncPictureParameterBufferH264(VADisplay dpy,VAContextID __maybe_unused context,VABufferID __maybe_unused buffer,VABufferType __maybe_unused type,unsigned int __maybe_unused size,unsigned int __maybe_unused num_elements,void * data)1485 static void va_TraceVAEncPictureParameterBufferH264(
1486     VADisplay dpy,
1487     VAContextID __maybe_unused context,
1488     VABufferID __maybe_unused buffer,
1489     VABufferType __maybe_unused type,
1490     unsigned int __maybe_unused size,
1491     unsigned int __maybe_unused num_elements,
1492     void *data)
1493 {
1494     VAEncPictureParameterBufferH264 *p = (VAEncPictureParameterBufferH264 *)data;
1495     DPY2TRACECTX(dpy);
1496     int i;
1497 
1498     va_TraceMsg(trace_ctx, "\t--VAEncPictureParameterBufferH264\n");
1499 
1500     va_TraceMsg(trace_ctx, "\tCurrPic.picture_id = 0x%08x\n", p->CurrPic.picture_id);
1501     va_TraceMsg(trace_ctx, "\tCurrPic.frame_idx = %d\n", p->CurrPic.frame_idx);
1502     va_TraceMsg(trace_ctx, "\tCurrPic.flags = %d\n", p->CurrPic.flags);
1503     va_TraceMsg(trace_ctx, "\tCurrPic.TopFieldOrderCnt = %d\n", p->CurrPic.TopFieldOrderCnt);
1504     va_TraceMsg(trace_ctx, "\tCurrPic.BottomFieldOrderCnt = %d\n", p->CurrPic.BottomFieldOrderCnt);
1505     va_TraceMsg(trace_ctx, "\tReferenceFrames (TopFieldOrderCnt-BottomFieldOrderCnt-picture_id-frame_idx-flags):\n");
1506     for (i = 0; i < 16; i++)
1507     {
1508         if ((p->ReferenceFrames[i].picture_id != VA_INVALID_SURFACE) &&
1509             ((p->ReferenceFrames[i].flags & VA_PICTURE_H264_INVALID) == 0)) {
1510             va_TraceMsg(trace_ctx, "\t\t%08d-%08d-0x%08x-%08d-0x%08x\n",
1511                         p->ReferenceFrames[i].TopFieldOrderCnt,
1512                         p->ReferenceFrames[i].BottomFieldOrderCnt,
1513                         p->ReferenceFrames[i].picture_id,
1514                         p->ReferenceFrames[i].frame_idx,
1515                         p->ReferenceFrames[i].flags
1516                         );
1517         } else
1518             break;
1519     }
1520     va_TraceMsg(trace_ctx, "\tcoded_buf = %08x\n", p->coded_buf);
1521     va_TraceMsg(trace_ctx, "\tpic_parameter_set_id = %d\n", p->pic_parameter_set_id);
1522     va_TraceMsg(trace_ctx, "\tseq_parameter_set_id = %d\n", p->seq_parameter_set_id);
1523     va_TraceMsg(trace_ctx, "\tlast_picture = 0x%08x\n", p->last_picture);
1524     va_TraceMsg(trace_ctx, "\tframe_num = %d\n", p->frame_num);
1525     va_TraceMsg(trace_ctx, "\tpic_init_qp = %d\n", p->pic_init_qp);
1526     va_TraceMsg(trace_ctx, "\tnum_ref_idx_l0_active_minus1 = %d\n", p->num_ref_idx_l0_active_minus1);
1527     va_TraceMsg(trace_ctx, "\tnum_ref_idx_l1_active_minus1 = %d\n", p->num_ref_idx_l1_active_minus1);
1528     va_TraceMsg(trace_ctx, "\tchroma_qp_index_offset = %d\n", p->chroma_qp_index_offset);
1529     va_TraceMsg(trace_ctx, "\tsecond_chroma_qp_index_offset = %d\n", p->second_chroma_qp_index_offset);
1530     va_TraceMsg(trace_ctx, "\tpic_fields = 0x%03x\n", p->pic_fields.value);
1531     va_TraceMsg(trace_ctx, "\tidr_pic_flag = %d\n", p->pic_fields.bits.idr_pic_flag);
1532     va_TraceMsg(trace_ctx, "\treference_pic_flag = %d\n", p->pic_fields.bits.reference_pic_flag);
1533     va_TraceMsg(trace_ctx, "\tentropy_coding_mode_flag = %d\n", p->pic_fields.bits.entropy_coding_mode_flag);
1534     va_TraceMsg(trace_ctx, "\tweighted_pred_flag = %d\n", p->pic_fields.bits.weighted_pred_flag);
1535     va_TraceMsg(trace_ctx, "\tweighted_bipred_idc = %d\n", p->pic_fields.bits.weighted_bipred_idc);
1536     va_TraceMsg(trace_ctx, "\tconstrained_intra_pred_flag = %d\n", p->pic_fields.bits.constrained_intra_pred_flag);
1537     va_TraceMsg(trace_ctx, "\ttransform_8x8_mode_flag = %d\n", p->pic_fields.bits.transform_8x8_mode_flag);
1538     va_TraceMsg(trace_ctx, "\tdeblocking_filter_control_present_flag = %d\n", p->pic_fields.bits.deblocking_filter_control_present_flag);
1539     va_TraceMsg(trace_ctx, "\tredundant_pic_cnt_present_flag = %d\n", p->pic_fields.bits.redundant_pic_cnt_present_flag);
1540     va_TraceMsg(trace_ctx, "\tpic_order_present_flag = %d\n", p->pic_fields.bits.pic_order_present_flag);
1541     va_TraceMsg(trace_ctx, "\tpic_scaling_matrix_present_flag = %d\n", p->pic_fields.bits.pic_scaling_matrix_present_flag);
1542 
1543     va_TraceMsg(trace_ctx, NULL);
1544 
1545     return;
1546 }
1547 
va_TraceVAEncSliceParameterBuffer(VADisplay dpy,VAContextID __maybe_unused context,VABufferID __maybe_unused buffer,VABufferType __maybe_unused type,unsigned int __maybe_unused size,unsigned int __maybe_unused num_elements,void * data)1548 static void va_TraceVAEncSliceParameterBuffer(
1549     VADisplay dpy,
1550     VAContextID __maybe_unused context,
1551     VABufferID __maybe_unused buffer,
1552     VABufferType __maybe_unused type,
1553     unsigned int __maybe_unused size,
1554     unsigned int __maybe_unused num_elements,
1555     void *data)
1556 {
1557     VAEncSliceParameterBuffer* p = (VAEncSliceParameterBuffer*)data;
1558     DPY2TRACECTX(dpy);
1559 
1560     va_TraceMsg(trace_ctx, "\t--VAEncSliceParameterBuffer\n");
1561 
1562     va_TraceMsg(trace_ctx, "\tstart_row_number = %d\n", p->start_row_number);
1563     va_TraceMsg(trace_ctx, "\tslice_height = %d\n", p->slice_height);
1564     va_TraceMsg(trace_ctx, "\tslice_flags.is_intra = %d\n", p->slice_flags.bits.is_intra);
1565     va_TraceMsg(trace_ctx, "\tslice_flags.disable_deblocking_filter_idc = %d\n", p->slice_flags.bits.disable_deblocking_filter_idc);
1566     va_TraceMsg(trace_ctx, "\tslice_flags.uses_long_term_ref = %d\n", p->slice_flags.bits.uses_long_term_ref);
1567     va_TraceMsg(trace_ctx, "\tslice_flags.is_long_term_ref = %d\n", p->slice_flags.bits.is_long_term_ref);
1568     va_TraceMsg(trace_ctx, NULL);
1569 
1570     return;
1571 }
1572 
va_TraceVAEncSliceParameterBufferH264(VADisplay dpy,VAContextID __maybe_unused context,VABufferID __maybe_unused buffer,VABufferType __maybe_unused type,unsigned int __maybe_unused size,unsigned int __maybe_unused num_elements,void * data)1573 static void va_TraceVAEncSliceParameterBufferH264(
1574     VADisplay dpy,
1575     VAContextID __maybe_unused context,
1576     VABufferID __maybe_unused buffer,
1577     VABufferType __maybe_unused type,
1578     unsigned int __maybe_unused size,
1579     unsigned int __maybe_unused num_elements,
1580     void *data)
1581 {
1582     VAEncSliceParameterBufferH264* p = (VAEncSliceParameterBufferH264*)data;
1583     DPY2TRACECTX(dpy);
1584     int i;
1585 
1586     if (!p)
1587         return;
1588 
1589     va_TraceMsg(trace_ctx, "\t--VAEncSliceParameterBufferH264\n");
1590     va_TraceMsg(trace_ctx, "\tmacroblock_address = %d\n", p->macroblock_address);
1591     va_TraceMsg(trace_ctx, "\tnum_macroblocks = %d\n", p->num_macroblocks);
1592     va_TraceMsg(trace_ctx, "\tmacroblock_info = %08x\n", p->macroblock_info);
1593     va_TraceMsg(trace_ctx, "\tslice_type = %d\n", p->slice_type);
1594     va_TraceMsg(trace_ctx, "\tpic_parameter_set_id = %d\n", p->pic_parameter_set_id);
1595     va_TraceMsg(trace_ctx, "\tidr_pic_id = %d\n", p->idr_pic_id);
1596     va_TraceMsg(trace_ctx, "\tpic_order_cnt_lsb = %d\n", p->pic_order_cnt_lsb);
1597     va_TraceMsg(trace_ctx, "\tdelta_pic_order_cnt_bottom = %d\n", p->delta_pic_order_cnt_bottom);
1598     va_TraceMsg(trace_ctx, "\tdelta_pic_order_cnt[0] = %d\n", p->delta_pic_order_cnt[0]);
1599     va_TraceMsg(trace_ctx, "\tdelta_pic_order_cnt[1] = %d\n", p->delta_pic_order_cnt[1]);
1600     va_TraceMsg(trace_ctx, "\tdirect_spatial_mv_pred_flag = %d\n", p->direct_spatial_mv_pred_flag);
1601     va_TraceMsg(trace_ctx, "\tnum_ref_idx_active_override_flag = %d\n", p->num_ref_idx_active_override_flag);
1602     va_TraceMsg(trace_ctx, "\tnum_ref_idx_l1_active_minus1 = %d\n", p->num_ref_idx_l1_active_minus1);
1603     va_TraceMsg(trace_ctx, "\tslice_beta_offset_div2 = %d\n", p->slice_beta_offset_div2);
1604 
1605     va_TraceMsg(trace_ctx, "\tRefPicList0 (TopFieldOrderCnt-BottomFieldOrderCnt-picture_id-frame_idx-flags):\n");
1606 
1607 
1608 
1609     for (i = 0; i < 32; i++) {
1610         if ((p->RefPicList0[i].picture_id != VA_INVALID_SURFACE) &&
1611             ((p->RefPicList0[i].flags & VA_PICTURE_H264_INVALID) == 0))
1612             va_TraceMsg(trace_ctx, "\t\t%08d-%08d-0x%08x-%08d-0x%08x\n",
1613                         p->RefPicList0[i].TopFieldOrderCnt,
1614                         p->RefPicList0[i].BottomFieldOrderCnt,
1615                         p->RefPicList0[i].picture_id,
1616                         p->RefPicList0[i].frame_idx,
1617                         p->RefPicList0[i].flags);
1618         else
1619             break;
1620     }
1621 
1622     va_TraceMsg(trace_ctx, "\tRefPicList1 (TopFieldOrderCnt-BottomFieldOrderCnt-picture_id-frame_idx-flags):\n");
1623     for (i = 0; i < 32; i++) {
1624         if ((p->RefPicList1[i].picture_id != VA_INVALID_SURFACE) &&
1625             ((p->RefPicList1[i].flags & VA_PICTURE_H264_INVALID) == 0))
1626             va_TraceMsg(trace_ctx, "\t\t%08d-%08d-0x%08x-%08d-0x%08d\n",
1627                         p->RefPicList1[i].TopFieldOrderCnt,
1628                         p->RefPicList1[i].BottomFieldOrderCnt,
1629                         p->RefPicList1[i].picture_id,
1630                         p->RefPicList1[i].frame_idx,
1631                         p->RefPicList1[i].flags
1632                         );
1633         else
1634             break;
1635     }
1636 
1637     va_TraceMsg(trace_ctx, "\tluma_log2_weight_denom = %d\n", p->luma_log2_weight_denom);
1638     va_TraceMsg(trace_ctx, "\tchroma_log2_weight_denom = %d\n", p->chroma_log2_weight_denom);
1639     va_TraceMsg(trace_ctx, "\tluma_weight_l0_flag = %d\n", p->luma_weight_l0_flag);
1640     if (p->luma_weight_l0_flag) {
1641         for (i = 0; (i <= p->num_ref_idx_l0_active_minus1) && (i<32); i++) {
1642             va_TraceMsg(trace_ctx, "\t\t%d\t%d\n",
1643                         p->luma_weight_l0[i],
1644                         p->luma_offset_l0[i]);
1645         }
1646     }
1647 
1648     va_TraceMsg(trace_ctx, "\tchroma_weight_l0_flag = %d\n", p->chroma_weight_l0_flag);
1649     if (p->chroma_weight_l0_flag) {
1650         for (i = 0; (i <= p->num_ref_idx_l0_active_minus1) && (i<32); i++) {
1651             va_TraceMsg(trace_ctx, "\t\t%d\t%d\t%d\t%d\n",
1652                         p->chroma_weight_l0[i][0],
1653                         p->chroma_offset_l0[i][0],
1654                         p->chroma_weight_l0[i][1],
1655                         p->chroma_offset_l0[i][1]);
1656         }
1657     }
1658 
1659     va_TraceMsg(trace_ctx, "\tluma_weight_l1_flag = %d\n", p->luma_weight_l1_flag);
1660     if (p->luma_weight_l1_flag) {
1661         for (i = 0; (i <= p->num_ref_idx_l1_active_minus1) && (i<32); i++) {
1662             va_TraceMsg(trace_ctx, "\t\t%d\t\t%d\n",
1663                         p->luma_weight_l1[i],
1664                         p->luma_offset_l1[i]);
1665         }
1666     }
1667 
1668     va_TraceMsg(trace_ctx, "\tchroma_weight_l1_flag = %d\n", p->chroma_weight_l1_flag);
1669     if (p->chroma_weight_l1_flag && p->num_ref_idx_l1_active_minus1 < 32) {
1670         for (i = 0; (i <= p->num_ref_idx_l1_active_minus1) && (i<32); i++) {
1671             va_TraceMsg(trace_ctx, "\t\t%d\t%d\t%d\t%d\n",
1672                         p->chroma_weight_l1[i][0],
1673                         p->chroma_offset_l1[i][0],
1674                         p->chroma_weight_l1[i][1],
1675                         p->chroma_offset_l1[i][1]);
1676         }
1677     }
1678     va_TraceMsg(trace_ctx, NULL);
1679 
1680     va_TraceMsg(trace_ctx, "\tcabac_init_idc = %d\n", p->cabac_init_idc);
1681     va_TraceMsg(trace_ctx, "\tslice_qp_delta = %d\n", p->slice_qp_delta);
1682     va_TraceMsg(trace_ctx, "\tdisable_deblocking_filter_idc = %d\n", p->disable_deblocking_filter_idc);
1683     va_TraceMsg(trace_ctx, "\tslice_alpha_c0_offset_div2 = %d\n", p->slice_alpha_c0_offset_div2);
1684     va_TraceMsg(trace_ctx, "\tslice_beta_offset_div2 = %d\n", p->slice_beta_offset_div2);
1685     va_TraceMsg(trace_ctx, NULL);
1686 
1687     return;
1688 }
1689 
1690 
va_TraceVAEncPackedHeaderParameterBufferType(VADisplay dpy,VAContextID __maybe_unused context,VABufferID __maybe_unused buffer,VABufferType __maybe_unused type,unsigned int __maybe_unused size,unsigned int __maybe_unused num_elements,void * data)1691 static void va_TraceVAEncPackedHeaderParameterBufferType(
1692     VADisplay dpy,
1693     VAContextID __maybe_unused context,
1694     VABufferID __maybe_unused buffer,
1695     VABufferType __maybe_unused type,
1696     unsigned int __maybe_unused size,
1697     unsigned int __maybe_unused num_elements,
1698     void *data)
1699 {
1700     VAEncPackedHeaderParameterBuffer* p = (VAEncPackedHeaderParameterBuffer*)data;
1701     DPY2TRACECTX(dpy);
1702 
1703     if (!p)
1704         return;
1705     va_TraceMsg(trace_ctx, "\t--VAEncPackedHeaderParameterBuffer\n");
1706     va_TraceMsg(trace_ctx, "\ttype = 0x%08x\n", p->type);
1707     va_TraceMsg(trace_ctx, "\tbit_length = %d\n", p->bit_length);
1708     va_TraceMsg(trace_ctx, "\thas_emulation_bytes = %d\n", p->has_emulation_bytes);
1709     va_TraceMsg(trace_ctx, NULL);
1710 
1711     return;
1712 }
1713 
va_TraceVAEncMiscParameterBuffer(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)1714 static void va_TraceVAEncMiscParameterBuffer(
1715     VADisplay dpy,
1716     VAContextID context,
1717     VABufferID buffer,
1718     VABufferType type,
1719     unsigned int size,
1720     unsigned int num_elements,
1721     void *data)
1722 {
1723     VAEncMiscParameterBuffer* tmp = (VAEncMiscParameterBuffer*)data;
1724     DPY2TRACECTX(dpy);
1725     uint32_t i;
1726 
1727     switch (tmp->type) {
1728     case VAEncMiscParameterTypeFrameRate:
1729     {
1730         VAEncMiscParameterFrameRate *p = (VAEncMiscParameterFrameRate *)tmp->data;
1731         va_TraceMsg(trace_ctx, "\t--VAEncMiscParameterFrameRate\n");
1732         va_TraceMsg(trace_ctx, "\tframerate = %d\n", p->framerate);
1733 
1734         break;
1735     }
1736     case VAEncMiscParameterTypeRateControl:
1737     {
1738         VAEncMiscParameterRateControl *p = (VAEncMiscParameterRateControl *)tmp->data;
1739 
1740         va_TraceMsg(trace_ctx, "\t--VAEncMiscParameterRateControl\n");
1741         va_TraceMsg(trace_ctx, "\tbits_per_second = %d\n", p->bits_per_second);
1742         va_TraceMsg(trace_ctx, "\ttarget_percentage = %d\n", p->target_percentage);
1743         va_TraceMsg(trace_ctx, "\twindow_size = %d\n", p->window_size);
1744         va_TraceMsg(trace_ctx, "\tinitial_qp = %d\n", p->initial_qp);
1745         va_TraceMsg(trace_ctx, "\tmin_qp = %d\n", p->min_qp);
1746         va_TraceMsg(trace_ctx, "\tbasic_unit_size = %d\n", p->basic_unit_size);
1747         va_TraceMsg(trace_ctx, "\trc_flags.reset = %d \n", p->rc_flags.bits.reset);
1748         va_TraceMsg(trace_ctx, "\trc_flags.disable_frame_skip = %d\n", p->rc_flags.bits.disable_frame_skip);
1749         va_TraceMsg(trace_ctx, "\trc_flags.disable_bit_stuffing = %d\n", p->rc_flags.bits.disable_bit_stuffing);
1750         break;
1751     }
1752     case VAEncMiscParameterTypeMaxSliceSize:
1753     {
1754         VAEncMiscParameterMaxSliceSize *p = (VAEncMiscParameterMaxSliceSize *)tmp->data;
1755 
1756         va_TraceMsg(trace_ctx, "\t--VAEncMiscParameterTypeMaxSliceSize\n");
1757         va_TraceMsg(trace_ctx, "\tmax_slice_size = %d\n", p->max_slice_size);
1758         break;
1759     }
1760     case VAEncMiscParameterTypeAIR:
1761     {
1762         VAEncMiscParameterAIR *p = (VAEncMiscParameterAIR *)tmp->data;
1763 
1764         va_TraceMsg(trace_ctx, "\t--VAEncMiscParameterAIR\n");
1765         va_TraceMsg(trace_ctx, "\tair_num_mbs = %d\n", p->air_num_mbs);
1766         va_TraceMsg(trace_ctx, "\tair_threshold = %d\n", p->air_threshold);
1767         va_TraceMsg(trace_ctx, "\tair_auto = %d\n", p->air_auto);
1768         break;
1769     }
1770     case VAEncMiscParameterTypeHRD:
1771     {
1772         VAEncMiscParameterHRD *p = (VAEncMiscParameterHRD *)tmp->data;
1773 
1774         va_TraceMsg(trace_ctx, "\t--VAEncMiscParameterHRD\n");
1775         va_TraceMsg(trace_ctx, "\tinitial_buffer_fullness = %d\n", p->initial_buffer_fullness);
1776         va_TraceMsg(trace_ctx, "\tbuffer_size = %d\n", p->buffer_size);
1777         break;
1778     }
1779     case VAEncMiscParameterTypeMaxFrameSize:
1780     {
1781         VAEncMiscParameterBufferMaxFrameSize *p = (VAEncMiscParameterBufferMaxFrameSize *)tmp->data;
1782 
1783         va_TraceMsg(trace_ctx, "\t--VAEncMiscParameterTypeMaxFrameSize\n");
1784         va_TraceMsg(trace_ctx, "\tmax_frame_size = %d\n", p->max_frame_size);
1785         break;
1786     }
1787     case VAEncMiscParameterTypeTemporalLayerStructure:
1788     {
1789         VAEncMiscParameterTemporalLayerStructure *p = (VAEncMiscParameterTemporalLayerStructure *)tmp->data;
1790         va_TraceMsg(trace_ctx,"\t--VAEncMiscParameterTypeTemporalLayerStructure\n");
1791         va_TraceMsg(trace_ctx,"\tnumber_of_layers = %d\n", p->number_of_layers);
1792         va_TraceMsg(trace_ctx,"\tperiodicity = %d\n", p->periodicity);
1793         for(i=0;i<p->periodicity;i++)
1794                 va_TraceMsg(trace_ctx,"\tlayer_id[%d] = %d\n", i, p->layer_id[i]);
1795         break;
1796     }
1797     default:
1798         va_TraceMsg(trace_ctx, "Unknown VAEncMiscParameterBuffer(type = %d):\n", tmp->type);
1799         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, data);
1800         break;
1801     }
1802     va_TraceMsg(trace_ctx, NULL);
1803 
1804     return;
1805 }
1806 
1807 
va_TraceVAPictureParameterBufferVC1(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)1808 static void va_TraceVAPictureParameterBufferVC1(
1809     VADisplay dpy,
1810     VAContextID context,
1811     VABufferID buffer,
1812     VABufferType type,
1813     unsigned int size,
1814     unsigned int num_elements,
1815     void *data
1816 )
1817 {
1818     VAPictureParameterBufferVC1* p = (VAPictureParameterBufferVC1*)data;
1819     DPY2TRACECTX(dpy);
1820 
1821     va_TraceMsg(trace_ctx, "\t--VAPictureParameterBufferVC1\n");
1822     va_TraceMsg(trace_ctx, "\t    context = %d, buffer = %d, type = %d, size = %d, num_elements = %d\n",
1823                 context, buffer, type, size, num_elements);
1824     va_TraceMsg(trace_ctx, "\tforward_reference_picture = 0x%08x\n", p->forward_reference_picture);
1825     va_TraceMsg(trace_ctx, "\tbackward_reference_picture = 0x%08x\n", p->backward_reference_picture);
1826     va_TraceMsg(trace_ctx, "\tinloop_decoded_picture = 0x%08x\n", p->inloop_decoded_picture);
1827 
1828     va_TraceMsg(trace_ctx, "\tpulldown = %d\n", p->sequence_fields.bits.pulldown);
1829     va_TraceMsg(trace_ctx, "\tinterlace = %d\n", p->sequence_fields.bits.interlace);
1830     va_TraceMsg(trace_ctx, "\ttfcntrflag = %d\n", p->sequence_fields.bits.tfcntrflag);
1831     va_TraceMsg(trace_ctx, "\tfinterpflag = %d\n", p->sequence_fields.bits.finterpflag);
1832     va_TraceMsg(trace_ctx, "\tpsf = %d\n", p->sequence_fields.bits.psf);
1833     va_TraceMsg(trace_ctx, "\tmultires = %d\n", p->sequence_fields.bits.multires);
1834     va_TraceMsg(trace_ctx, "\toverlap = %d\n", p->sequence_fields.bits.overlap);
1835     va_TraceMsg(trace_ctx, "\tsyncmarker = %d\n", p->sequence_fields.bits.syncmarker);
1836     va_TraceMsg(trace_ctx, "\trangered = %d\n", p->sequence_fields.bits.rangered);
1837     va_TraceMsg(trace_ctx, "\tmax_b_frames = %d\n", p->sequence_fields.bits.max_b_frames);
1838     va_TraceMsg(trace_ctx, "\tprofile = %d\n", p->sequence_fields.bits.profile);
1839     va_TraceMsg(trace_ctx, "\tcoded_width = %d\n", p->coded_width);
1840     va_TraceMsg(trace_ctx, "\tcoded_height = %d\n", p->coded_height);
1841     va_TraceMsg(trace_ctx, "\tclosed_entry = %d\n", p->entrypoint_fields.bits.closed_entry);
1842     va_TraceMsg(trace_ctx, "\tbroken_link = %d\n", p->entrypoint_fields.bits.broken_link);
1843     va_TraceMsg(trace_ctx, "\tclosed_entry = %d\n", p->entrypoint_fields.bits.closed_entry);
1844     va_TraceMsg(trace_ctx, "\tpanscan_flag = %d\n", p->entrypoint_fields.bits.panscan_flag);
1845     va_TraceMsg(trace_ctx, "\tloopfilter = %d\n", p->entrypoint_fields.bits.loopfilter);
1846     va_TraceMsg(trace_ctx, "\tconditional_overlap_flag = %d\n", p->conditional_overlap_flag);
1847     va_TraceMsg(trace_ctx, "\tfast_uvmc_flag = %d\n", p->fast_uvmc_flag);
1848     va_TraceMsg(trace_ctx, "\trange_mapping_luma_flag = %d\n", p->range_mapping_fields.bits.luma_flag);
1849     va_TraceMsg(trace_ctx, "\trange_mapping_luma = %d\n", p->range_mapping_fields.bits.luma);
1850     va_TraceMsg(trace_ctx, "\trange_mapping_chroma_flag = %d\n", p->range_mapping_fields.bits.chroma_flag);
1851     va_TraceMsg(trace_ctx, "\trange_mapping_chroma = %d\n", p->range_mapping_fields.bits.chroma);
1852     va_TraceMsg(trace_ctx, "\tb_picture_fraction = %d\n", p->b_picture_fraction);
1853     va_TraceMsg(trace_ctx, "\tcbp_table = %d\n", p->cbp_table);
1854     va_TraceMsg(trace_ctx, "\tmb_mode_table = %d\n", p->mb_mode_table);
1855     va_TraceMsg(trace_ctx, "\trange_reduction_frame = %d\n", p->range_reduction_frame);
1856     va_TraceMsg(trace_ctx, "\trounding_control = %d\n", p->rounding_control);
1857     va_TraceMsg(trace_ctx, "\tpost_processing = %d\n", p->post_processing);
1858     va_TraceMsg(trace_ctx, "\tpicture_resolution_index = %d\n", p->picture_resolution_index);
1859     va_TraceMsg(trace_ctx, "\tluma_scale = %d\n", p->luma_scale);
1860     va_TraceMsg(trace_ctx, "\tluma_shift = %d\n", p->luma_shift);
1861     va_TraceMsg(trace_ctx, "\tpicture_type = %d\n", p->picture_fields.bits.picture_type);
1862     va_TraceMsg(trace_ctx, "\tframe_coding_mode = %d\n", p->picture_fields.bits.frame_coding_mode);
1863     va_TraceMsg(trace_ctx, "\ttop_field_first = %d\n", p->picture_fields.bits.top_field_first);
1864     va_TraceMsg(trace_ctx, "\tis_first_field = %d\n", p->picture_fields.bits.is_first_field);
1865     va_TraceMsg(trace_ctx, "\tintensity_compensation = %d\n", p->picture_fields.bits.intensity_compensation);
1866     va_TraceMsg(trace_ctx, "\tmv_type_mb = %d\n", p->raw_coding.flags.mv_type_mb);
1867     va_TraceMsg(trace_ctx, "\tdirect_mb = %d\n", p->raw_coding.flags.direct_mb);
1868     va_TraceMsg(trace_ctx, "\tskip_mb = %d\n", p->raw_coding.flags.skip_mb);
1869     va_TraceMsg(trace_ctx, "\tfield_tx = %d\n", p->raw_coding.flags.field_tx);
1870     va_TraceMsg(trace_ctx, "\tforward_mb = %d\n", p->raw_coding.flags.forward_mb);
1871     va_TraceMsg(trace_ctx, "\tac_pred = %d\n", p->raw_coding.flags.ac_pred);
1872     va_TraceMsg(trace_ctx, "\toverflags = %d\n", p->raw_coding.flags.overflags);
1873     va_TraceMsg(trace_ctx, "\tbp_mv_type_mb = %d\n", p->bitplane_present.flags.bp_mv_type_mb);
1874     va_TraceMsg(trace_ctx, "\tbp_direct_mb = %d\n", p->bitplane_present.flags.bp_direct_mb);
1875     va_TraceMsg(trace_ctx, "\tbp_skip_mb = %d\n", p->bitplane_present.flags.bp_skip_mb);
1876     va_TraceMsg(trace_ctx, "\tbp_field_tx = %d\n", p->bitplane_present.flags.bp_field_tx);
1877     va_TraceMsg(trace_ctx, "\tbp_forward_mb = %d\n", p->bitplane_present.flags.bp_forward_mb);
1878     va_TraceMsg(trace_ctx, "\tbp_ac_pred = %d\n", p->bitplane_present.flags.bp_ac_pred);
1879     va_TraceMsg(trace_ctx, "\tbp_overflags = %d\n", p->bitplane_present.flags.bp_overflags);
1880     va_TraceMsg(trace_ctx, "\treference_distance_flag = %d\n", p->reference_fields.bits.reference_distance_flag);
1881     va_TraceMsg(trace_ctx, "\treference_distance = %d\n", p->reference_fields.bits.reference_distance);
1882     va_TraceMsg(trace_ctx, "\tnum_reference_pictures = %d\n", p->reference_fields.bits.num_reference_pictures);
1883     va_TraceMsg(trace_ctx, "\treference_field_pic_indicator = %d\n", p->reference_fields.bits.reference_field_pic_indicator);
1884     va_TraceMsg(trace_ctx, "\tmv_mode = %d\n", p->mv_fields.bits.mv_mode);
1885     va_TraceMsg(trace_ctx, "\tmv_mode2 = %d\n", p->mv_fields.bits.mv_mode2);
1886     va_TraceMsg(trace_ctx, "\tmv_table = %d\n", p->mv_fields.bits.mv_table);
1887     va_TraceMsg(trace_ctx, "\ttwo_mv_block_pattern_table = %d\n", p->mv_fields.bits.two_mv_block_pattern_table);
1888     va_TraceMsg(trace_ctx, "\tfour_mv_switch = %d\n", p->mv_fields.bits.four_mv_switch);
1889     va_TraceMsg(trace_ctx, "\tfour_mv_block_pattern_table = %d\n", p->mv_fields.bits.four_mv_block_pattern_table);
1890     va_TraceMsg(trace_ctx, "\textended_mv_flag = %d\n", p->mv_fields.bits.extended_mv_flag);
1891     va_TraceMsg(trace_ctx, "\textended_mv_range = %d\n", p->mv_fields.bits.extended_mv_range);
1892     va_TraceMsg(trace_ctx, "\textended_dmv_flag = %d\n", p->mv_fields.bits.extended_dmv_flag);
1893     va_TraceMsg(trace_ctx, "\textended_dmv_range = %d\n", p->mv_fields.bits.extended_dmv_range);
1894     va_TraceMsg(trace_ctx, "\tdquant = %d\n", p->pic_quantizer_fields.bits.dquant);
1895     va_TraceMsg(trace_ctx, "\tquantizer = %d\n", p->pic_quantizer_fields.bits.quantizer);
1896     va_TraceMsg(trace_ctx, "\thalf_qp = %d\n", p->pic_quantizer_fields.bits.half_qp);
1897     va_TraceMsg(trace_ctx, "\tpic_quantizer_scale = %d\n", p->pic_quantizer_fields.bits.pic_quantizer_scale);
1898     va_TraceMsg(trace_ctx, "\tpic_quantizer_type = %d\n", p->pic_quantizer_fields.bits.pic_quantizer_type);
1899     va_TraceMsg(trace_ctx, "\tdq_frame = %d\n", p->pic_quantizer_fields.bits.dq_frame);
1900     va_TraceMsg(trace_ctx, "\tdq_profile = %d\n", p->pic_quantizer_fields.bits.dq_profile);
1901     va_TraceMsg(trace_ctx, "\tdq_sb_edge = %d\n", p->pic_quantizer_fields.bits.dq_sb_edge);
1902     va_TraceMsg(trace_ctx, "\tdq_db_edge = %d\n", p->pic_quantizer_fields.bits.dq_db_edge);
1903     va_TraceMsg(trace_ctx, "\tdq_binary_level = %d\n", p->pic_quantizer_fields.bits.dq_binary_level);
1904     va_TraceMsg(trace_ctx, "\talt_pic_quantizer = %d\n", p->pic_quantizer_fields.bits.alt_pic_quantizer);
1905     va_TraceMsg(trace_ctx, "\tvariable_sized_transform_flag = %d\n", p->transform_fields.bits.variable_sized_transform_flag);
1906     va_TraceMsg(trace_ctx, "\tmb_level_transform_type_flag = %d\n", p->transform_fields.bits.mb_level_transform_type_flag);
1907     va_TraceMsg(trace_ctx, "\tframe_level_transform_type = %d\n", p->transform_fields.bits.frame_level_transform_type);
1908     va_TraceMsg(trace_ctx, "\ttransform_ac_codingset_idx1 = %d\n", p->transform_fields.bits.transform_ac_codingset_idx1);
1909     va_TraceMsg(trace_ctx, "\ttransform_ac_codingset_idx2 = %d\n", p->transform_fields.bits.transform_ac_codingset_idx2);
1910     va_TraceMsg(trace_ctx, "\tintra_transform_dc_table = %d\n", p->transform_fields.bits.intra_transform_dc_table);
1911     va_TraceMsg(trace_ctx, NULL);
1912 }
1913 
va_TraceVASliceParameterBufferVC1(VADisplay dpy,VAContextID __maybe_unused context,VABufferID __maybe_unused buffer,VABufferType __maybe_unused type,unsigned int __maybe_unused size,unsigned int __maybe_unused num_elements,void * data)1914 static void va_TraceVASliceParameterBufferVC1(
1915     VADisplay dpy,
1916     VAContextID __maybe_unused context,
1917     VABufferID __maybe_unused buffer,
1918     VABufferType __maybe_unused type,
1919     unsigned int __maybe_unused size,
1920     unsigned int __maybe_unused num_elements,
1921     void* data
1922 )
1923 {
1924     VASliceParameterBufferVC1 *p = (VASliceParameterBufferVC1*)data;
1925     DPY2TRACECTX(dpy);
1926 
1927     trace_ctx->trace_slice_no++;
1928     trace_ctx->trace_slice_size = p->slice_data_size;
1929 
1930     va_TraceMsg(trace_ctx, "\t--VASliceParameterBufferVC1\n");
1931     va_TraceMsg(trace_ctx, "\tslice_data_size = %d\n", p->slice_data_size);
1932     va_TraceMsg(trace_ctx, "\tslice_data_offset = %d\n", p->slice_data_offset);
1933     va_TraceMsg(trace_ctx, "\tslice_data_flag = %d\n", p->slice_data_flag);
1934     va_TraceMsg(trace_ctx, "\tmacroblock_offset = %d\n", p->macroblock_offset);
1935     va_TraceMsg(trace_ctx, "\tslice_vertical_position = %d\n", p->slice_vertical_position);
1936     va_TraceMsg(trace_ctx, NULL);
1937 }
1938 
va_TraceVAEncSequenceParameterBufferVP8(VADisplay dpy,VAContextID __maybe_unused context,VABufferID __maybe_unused buffer,VABufferType __maybe_unused type,unsigned int __maybe_unused size,unsigned int __maybe_unused num_elements,void * data)1939 static void va_TraceVAEncSequenceParameterBufferVP8(
1940     VADisplay dpy,
1941     VAContextID __maybe_unused context,
1942     VABufferID __maybe_unused buffer,
1943     VABufferType __maybe_unused type,
1944     unsigned int __maybe_unused size,
1945     unsigned int __maybe_unused num_elements,
1946     void *data)
1947 {
1948     VAEncSequenceParameterBufferVP8 *p = (VAEncSequenceParameterBufferVP8 *)data;
1949     DPY2TRACECTX(dpy);
1950     int i;
1951 
1952     va_TraceMsg(trace_ctx, "\t--VAEncSequenceParameterBufferVP8\n");
1953 
1954     va_TraceMsg(trace_ctx, "\tbits_per_second = %d\n", p->bits_per_second);
1955     va_TraceMsg(trace_ctx, "\terror_resilient = %d\n", p->error_resilient);
1956     va_TraceMsg(trace_ctx, "\tframe_height = %d\n", p->frame_height);
1957     va_TraceMsg(trace_ctx, "\tframe_width = %d\n", p->frame_width);
1958     va_TraceMsg(trace_ctx, "\tframe_height_scale = %d\n", p->frame_height_scale);
1959     va_TraceMsg(trace_ctx, "\tframe_width_scale = %d\n", p->frame_width_scale);
1960     va_TraceMsg(trace_ctx, "\tkf_auto = %d\n", p->kf_auto);
1961     va_TraceMsg(trace_ctx, "\tkf_max_dist = %d\n", p->kf_max_dist);
1962     va_TraceMsg(trace_ctx, "\tkf_min_dist = %d\n", p->kf_min_dist);
1963     va_TraceMsg(trace_ctx, "\tintra_period = %d\n", p->intra_period);
1964 
1965     for(i = 0; i<4; ++i)
1966         va_TraceMsg(trace_ctx, "\treference_frames[%d] = 0x%08x\n", i, p->reference_frames[i]);
1967 
1968     va_TraceMsg(trace_ctx, NULL);
1969 
1970     return;
1971 }
1972 
va_TraceVAEncPictureParameterBufferVP8(VADisplay dpy,VAContextID __maybe_unused context,VABufferID __maybe_unused uffer,VABufferType __maybe_unused type,unsigned int __maybe_unused size,unsigned int __maybe_unused num_elements,void * data)1973 static void va_TraceVAEncPictureParameterBufferVP8(
1974     VADisplay dpy,
1975     VAContextID __maybe_unused context,
1976     VABufferID __maybe_unused uffer,
1977     VABufferType __maybe_unused type,
1978     unsigned int __maybe_unused size,
1979     unsigned int __maybe_unused num_elements,
1980     void *data)
1981 {
1982     VAEncPictureParameterBufferVP8 *p = (VAEncPictureParameterBufferVP8 *)data;
1983     DPY2TRACECTX(dpy);
1984     int i;
1985 
1986     va_TraceMsg(trace_ctx, "\t--VAEncPictureParameterBufferVP8\n");
1987 
1988     va_TraceMsg(trace_ctx, "\treconstructed_frame = 0x%08x\n", p->reconstructed_frame);
1989     va_TraceMsg(trace_ctx, "\tref_last_frame = 0x%08x\n", p->ref_last_frame);
1990     va_TraceMsg(trace_ctx, "\tref_gf_frame = 0x%08x\n", p->ref_gf_frame);
1991     va_TraceMsg(trace_ctx, "\tref_arf_frame = 0x%08x\n", p->ref_arf_frame);
1992     va_TraceMsg(trace_ctx, "\tcoded_buf = 0x%08x\n", p->coded_buf);
1993 
1994     va_TraceMsg(trace_ctx, "\tref_flags.bits.force_kf = %d\n", p->ref_flags.bits.force_kf);
1995     va_TraceMsg(trace_ctx, "\tref_flags.bits.no_ref_last = %d\n", p->ref_flags.bits.no_ref_last);
1996     va_TraceMsg(trace_ctx, "\tref_flags.bits.no_ref_gf = %d\n", p->ref_flags.bits.no_ref_gf);
1997     va_TraceMsg(trace_ctx, "\tref_flags.bits.no_ref_arf = %d\n", p->ref_flags.bits.no_ref_arf);
1998     va_TraceMsg(trace_ctx, "\tref_flags.bits.reserved = 0x%08x\n", p->ref_flags.bits.reserved);
1999 
2000     va_TraceMsg(trace_ctx, "\tpic_flags.bits.frame_type = %d\n", p->pic_flags.bits.frame_type);
2001     va_TraceMsg(trace_ctx, "\tpic_flags.bits.version = %d\n", p->pic_flags.bits.version);
2002     va_TraceMsg(trace_ctx, "\tpic_flags.bits.show_frame = %d\n", p->pic_flags.bits.show_frame);
2003     va_TraceMsg(trace_ctx, "\tpic_flags.bits.color_space = %d\n", p->pic_flags.bits.color_space);
2004     va_TraceMsg(trace_ctx, "\tpic_flags.bits.recon_filter_type = %d\n", p->pic_flags.bits.recon_filter_type);
2005     va_TraceMsg(trace_ctx, "\tpic_flags.bits.loop_filter_type = %d\n", p->pic_flags.bits.loop_filter_type);
2006     va_TraceMsg(trace_ctx, "\tpic_flags.bits.auto_partitions = %d\n", p->pic_flags.bits.auto_partitions);
2007     va_TraceMsg(trace_ctx, "\tpic_flags.bits.num_token_partitions = %d\n", p->pic_flags.bits.num_token_partitions);
2008     va_TraceMsg(trace_ctx, "\tpic_flags.bits.clamping_type = %d\n", p->pic_flags.bits.clamping_type);
2009     va_TraceMsg(trace_ctx, "\tpic_flags.bits.segmentation_enabled = %d\n", p->pic_flags.bits.segmentation_enabled);
2010     va_TraceMsg(trace_ctx, "\tpic_flags.bits.update_mb_segmentation_map = %d\n", p->pic_flags.bits.update_mb_segmentation_map);
2011     va_TraceMsg(trace_ctx, "\tpic_flags.bits.update_segment_feature_data = %d\n", p->pic_flags.bits.update_segment_feature_data);
2012     va_TraceMsg(trace_ctx, "\tpic_flags.bits.loop_filter_adj_enable = %d\n", p->pic_flags.bits.loop_filter_adj_enable);
2013     va_TraceMsg(trace_ctx, "\tpic_flags.bits.refresh_entropy_probs = %d\n", p->pic_flags.bits.refresh_entropy_probs);
2014     va_TraceMsg(trace_ctx, "\tpic_flags.bits.refresh_golden_frame = %d\n", p->pic_flags.bits.refresh_golden_frame);
2015     va_TraceMsg(trace_ctx, "\tpic_flags.bits.refresh_alternate_frame = %d\n", p->pic_flags.bits.refresh_alternate_frame);
2016     va_TraceMsg(trace_ctx, "\tpic_flags.bits.refresh_last = %d\n", p->pic_flags.bits.refresh_last);
2017     va_TraceMsg(trace_ctx, "\tpic_flags.bits.copy_buffer_to_golden = %d\n", p->pic_flags.bits.copy_buffer_to_golden);
2018     va_TraceMsg(trace_ctx, "\tpic_flags.bits.copy_buffer_to_alternate = %d\n", p->pic_flags.bits.copy_buffer_to_alternate);
2019 
2020     va_TraceMsg(trace_ctx, "\tpic_flags.bits.sign_bias_golden = %d\n", p->pic_flags.bits.sign_bias_golden);
2021     va_TraceMsg(trace_ctx, "\tpic_flags.bits.sign_bias_alternate = %d\n", p->pic_flags.bits.sign_bias_alternate);
2022     va_TraceMsg(trace_ctx, "\tpic_flags.bits.mb_no_coeff_skip = %d\n", p->pic_flags.bits.mb_no_coeff_skip);
2023     va_TraceMsg(trace_ctx, "\tpic_flags.bits.forced_lf_adjustment = %d\n", p->pic_flags.bits.forced_lf_adjustment);
2024     va_TraceMsg(trace_ctx, "\tpic_flags.bits.reserved = %d\n", p->pic_flags.bits.reserved);
2025 
2026 
2027     for(i=0;i<4;i++)
2028        va_TraceMsg(trace_ctx, "\tloop_filter_level[%d] = %d\n", i, p->loop_filter_level[i]);
2029     for(i=0;i<4;i++)
2030        va_TraceMsg(trace_ctx, "\tref_lf_delta[%d] = %d\n", i, p->ref_lf_delta[i]);
2031     for(i=0;i<4;i++)
2032        va_TraceMsg(trace_ctx, "\tmode_lf_delta[%d] = %d\n", i, p->mode_lf_delta[i]);
2033 
2034     va_TraceMsg(trace_ctx, "\tsharpness_level = %d\n", p->sharpness_level);
2035     va_TraceMsg(trace_ctx, "\tclamp_qindex_high = %d\n", p->clamp_qindex_high);
2036     va_TraceMsg(trace_ctx, "\tclamp_qindex_low = %d\n", p->clamp_qindex_low);
2037 
2038     va_TraceMsg(trace_ctx, NULL);
2039 
2040     return;
2041 }
2042 
va_TraceVAPictureParameterBufferVP8(VADisplay dpy,VAContextID __maybe_unused context,VABufferID __maybe_unused buffer,VABufferType __maybe_unused type,unsigned int __maybe_unused size,unsigned int __maybe_unused num_elements,void * data)2043 static void va_TraceVAPictureParameterBufferVP8(
2044     VADisplay dpy,
2045     VAContextID __maybe_unused context,
2046     VABufferID __maybe_unused buffer,
2047     VABufferType __maybe_unused type,
2048     unsigned int __maybe_unused size,
2049     unsigned int __maybe_unused num_elements,
2050     void *data)
2051 {
2052     char tmp[1024];
2053     VAPictureParameterBufferVP8 *p = (VAPictureParameterBufferVP8 *)data;
2054     DPY2TRACECTX(dpy);
2055     int i,j;
2056 
2057     va_TraceMsg(trace_ctx, "\t--VAPictureParameterBufferVP8\n");
2058 
2059     va_TraceMsg(trace_ctx, "\tframe_width = %d\n", p->frame_width);
2060     va_TraceMsg(trace_ctx, "\tframe_height = %d\n", p->frame_height);
2061     va_TraceMsg(trace_ctx, "\tlast_ref_frame = %x\n", p->last_ref_frame);
2062     va_TraceMsg(trace_ctx, "\tgolden_ref_frame = %x\n", p->golden_ref_frame);
2063     va_TraceMsg(trace_ctx, "\talt_ref_frame = %x\n", p->alt_ref_frame);
2064     va_TraceMsg(trace_ctx, "\tout_of_loop_frame = %x\n", p->out_of_loop_frame);
2065 
2066     va_TraceMsg(trace_ctx, "\tkey_frame = %d\n", p->pic_fields.bits.key_frame);
2067     va_TraceMsg(trace_ctx, "\tversion = %d\n", p->pic_fields.bits.version);
2068     va_TraceMsg(trace_ctx, "\tsegmentation_enabled = %d\n", p->pic_fields.bits.segmentation_enabled);
2069     va_TraceMsg(trace_ctx, "\tupdate_mb_segmentation_map = %d\n", p->pic_fields.bits.update_mb_segmentation_map);
2070     va_TraceMsg(trace_ctx, "\tupdate_segment_feature_data = %d\n", p->pic_fields.bits.update_segment_feature_data);
2071     va_TraceMsg(trace_ctx, "\tfilter_type = %d\n", p->pic_fields.bits.filter_type);
2072     va_TraceMsg(trace_ctx, "\tsharpness_level = %d\n", p->pic_fields.bits.sharpness_level);
2073     va_TraceMsg(trace_ctx, "\tloop_filter_adj_enable = %d\n", p->pic_fields.bits.loop_filter_adj_enable);
2074     va_TraceMsg(trace_ctx, "\tmode_ref_lf_delta_update = %d\n", p->pic_fields.bits.mode_ref_lf_delta_update);
2075     va_TraceMsg(trace_ctx, "\tsign_bias_golden = %d\n", p->pic_fields.bits.sign_bias_golden);
2076     va_TraceMsg(trace_ctx, "\tsign_bias_alternate = %d\n", p->pic_fields.bits.sign_bias_alternate);
2077     va_TraceMsg(trace_ctx, "\tmb_no_coeff_skip = %d\n", p->pic_fields.bits.mb_no_coeff_skip);
2078     va_TraceMsg(trace_ctx, "\tloop_filter_disable = %d\n", p->pic_fields.bits.loop_filter_disable);
2079 
2080     va_TraceMsg(trace_ctx, "\tmb_segment_tree_probs: 0x%2x, 0x%2x, 0x%2x\n",
2081         p->mb_segment_tree_probs[0], p->mb_segment_tree_probs[1], p->mb_segment_tree_probs[2]);
2082 
2083     va_TraceMsg(trace_ctx, "\tloop_filter_level: %d, %d, %d, %d\n",
2084         p->loop_filter_level[0], p->loop_filter_level[1], p->loop_filter_level[2], p->loop_filter_level[3]);
2085 
2086     va_TraceMsg(trace_ctx, "\tloop_filter_deltas_ref_frame: %d, %d, %d, %d\n",
2087         p->loop_filter_deltas_ref_frame[0], p->loop_filter_deltas_ref_frame[1], p->loop_filter_deltas_ref_frame[2], p->loop_filter_deltas_ref_frame[3]);
2088 
2089     va_TraceMsg(trace_ctx, "\tloop_filter_deltas_mode: %d, %d, %d, %d\n",
2090         p->loop_filter_deltas_mode[0], p->loop_filter_deltas_mode[1], p->loop_filter_deltas_mode[2], p->loop_filter_deltas_mode[3]);
2091 
2092     va_TraceMsg(trace_ctx, "\tprob_skip_false = %2x\n", p->prob_skip_false);
2093     va_TraceMsg(trace_ctx, "\tprob_intra = %2x\n", p->prob_intra);
2094     va_TraceMsg(trace_ctx, "\tprob_last = %2x\n", p->prob_last);
2095     va_TraceMsg(trace_ctx, "\tprob_gf = %2x\n", p->prob_gf);
2096 
2097     va_TraceMsg(trace_ctx, "\ty_mode_probs: 0x%2x, 0x%2x, 0x%2x, 0x%2x\n",
2098         p->y_mode_probs[0], p->y_mode_probs[1], p->y_mode_probs[2], p->y_mode_probs[3]);
2099 
2100     va_TraceMsg(trace_ctx, "\tuv_mode_probs: 0x%2x, 0x%2x, 0x%2x\n",
2101         p->uv_mode_probs[0], p->uv_mode_probs[1], p->uv_mode_probs[2]);
2102 
2103     va_TraceMsg(trace_ctx, "\tmv_probs[2][19]:\n");
2104     for(i = 0; i<2; ++i) {
2105         memset(tmp, 0, sizeof tmp);
2106         for (j=0; j<19; j++)
2107             sprintf(tmp + strlen(tmp), "%2x ", p->mv_probs[i][j]);
2108         va_TraceMsg(trace_ctx,"\t\t[%d] = %s\n", i, tmp);
2109     }
2110 
2111     va_TraceMsg(trace_ctx, "\tbool_coder_ctx: range = %02x, value = %02x, count = %d\n",
2112         p->bool_coder_ctx.range, p->bool_coder_ctx.value, p->bool_coder_ctx.count);
2113 
2114     va_TraceMsg(trace_ctx, NULL);
2115 
2116     return;
2117 }
2118 
va_TraceVASliceParameterBufferVP8(VADisplay dpy,VAContextID __maybe_unused context,VABufferID __maybe_unused buffer,VABufferType __maybe_unused type,unsigned int __maybe_unused size,unsigned int __maybe_unused num_elements,void * data)2119 static void va_TraceVASliceParameterBufferVP8(
2120     VADisplay dpy,
2121     VAContextID __maybe_unused context,
2122     VABufferID __maybe_unused buffer,
2123     VABufferType __maybe_unused type,
2124     unsigned int __maybe_unused size,
2125     unsigned int __maybe_unused num_elements,
2126     void *data)
2127 {
2128     VASliceParameterBufferVP8 *p = (VASliceParameterBufferVP8 *)data;
2129     DPY2TRACECTX(dpy);
2130     int i;
2131 
2132     va_TraceMsg(trace_ctx, "\t--VASliceParameterBufferVP8\n");
2133 
2134     va_TraceMsg(trace_ctx, "\tslice_data_size = %d\n", p->slice_data_size);
2135     va_TraceMsg(trace_ctx, "\tslice_data_offset = %d\n", p->slice_data_offset);
2136     va_TraceMsg(trace_ctx, "\tslice_data_flag = %d\n", p->slice_data_flag);
2137     va_TraceMsg(trace_ctx, "\tmacroblock_offset = %d\n", p->macroblock_offset);
2138     va_TraceMsg(trace_ctx, "\tnum_of_partitions = %d\n", p->num_of_partitions);
2139 
2140     for(i = 0; i<9; ++i)
2141         va_TraceMsg(trace_ctx, "\tpartition_size[%d] = %d\n", i, p->partition_size[i]);
2142 
2143     va_TraceMsg(trace_ctx, NULL);
2144 
2145     return;
2146 }
2147 
va_TraceVAIQMatrixBufferVP8(VADisplay dpy,VAContextID __maybe_unused context,VABufferID __maybe_unused buffer,VABufferType __maybe_unused type,unsigned int __maybe_unused size,unsigned int __maybe_unused num_elements,void * data)2148 static void va_TraceVAIQMatrixBufferVP8(
2149     VADisplay dpy,
2150     VAContextID __maybe_unused context,
2151     VABufferID __maybe_unused buffer,
2152     VABufferType __maybe_unused type,
2153     unsigned int __maybe_unused size,
2154     unsigned int __maybe_unused num_elements,
2155     void *data)
2156 {
2157     char tmp[1024];
2158     VAIQMatrixBufferVP8 *p = (VAIQMatrixBufferVP8 *)data;
2159     DPY2TRACECTX(dpy);
2160     int i,j;
2161 
2162     va_TraceMsg(trace_ctx, "\t--VAIQMatrixBufferVP8\n");
2163 
2164     va_TraceMsg(trace_ctx, "\tquantization_index[4][6]=\n");
2165     for (i = 0; i < 4; i++) {
2166         memset(tmp, 0, sizeof tmp);
2167         for (j = 0; j < 6; j++)
2168             sprintf(tmp + strlen(tmp), "%4x, ", p->quantization_index[i][j]);
2169         va_TraceMsg(trace_ctx,"\t\t[%d] = %s\n", i, tmp);
2170     }
2171 
2172     va_TraceMsg(trace_ctx, NULL);
2173 
2174     return;
2175 }
va_TraceVAProbabilityBufferVP8(VADisplay dpy,VAContextID __maybe_unused context,VABufferID __maybe_unused buffer,VABufferType __maybe_unused type,unsigned int __maybe_unused size,unsigned int __maybe_unused num_elements,void * data)2176 static void va_TraceVAProbabilityBufferVP8(
2177     VADisplay dpy,
2178     VAContextID __maybe_unused context,
2179     VABufferID __maybe_unused buffer,
2180     VABufferType __maybe_unused type,
2181     unsigned int __maybe_unused size,
2182     unsigned int __maybe_unused num_elements,
2183     void *data)
2184 {
2185     char tmp[1024];
2186     VAProbabilityDataBufferVP8 *p = (VAProbabilityDataBufferVP8 *)data;
2187     DPY2TRACECTX(dpy);
2188     int i,j,k,l;
2189 
2190     va_TraceMsg(trace_ctx, "\t--VAProbabilityDataBufferVP8\n");
2191 
2192     for (i = 0; i < 4; i++)
2193         for (j = 0; j < 8; j++) {
2194             memset(tmp, 0, sizeof tmp);
2195             for (k=0; k<3; k++)
2196                 for (l=0; l<11; l++)
2197                     sprintf(tmp + strlen(tmp), "%2x, ", p->dct_coeff_probs[i][j][k][l]);
2198             va_TraceMsg(trace_ctx,"\t\t[%d, %d] = %s\n", i, j, tmp);
2199         }
2200 
2201     va_TraceMsg(trace_ctx, NULL);
2202 
2203     return;
2204 }
2205 
va_TraceBeginPicture(VADisplay dpy,VAContextID __maybe_unused context,VASurfaceID render_target)2206 void va_TraceBeginPicture(
2207     VADisplay dpy,
2208     VAContextID __maybe_unused context,
2209     VASurfaceID render_target
2210 )
2211 {
2212     DPY2TRACECTX(dpy);
2213 
2214     TRACE_FUNCNAME(idx);
2215 
2216     va_TraceMsg(trace_ctx, "\trender_targets = 0x%08x\n", render_target);
2217     va_TraceMsg(trace_ctx, "\tframe_count  = #%d\n", trace_ctx->trace_frame_no);
2218     va_TraceMsg(trace_ctx, NULL);
2219 
2220     trace_ctx->trace_rendertarget = render_target; /* for surface data dump after vaEndPicture */
2221 
2222     trace_ctx->trace_frame_no++;
2223     trace_ctx->trace_slice_no = 0;
2224 }
2225 
va_TraceMPEG2Buf(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * pbuf)2226 static void va_TraceMPEG2Buf(
2227     VADisplay dpy,
2228     VAContextID context,
2229     VABufferID buffer,
2230     VABufferType type,
2231     unsigned int size,
2232     unsigned int num_elements,
2233     void *pbuf
2234 )
2235 {
2236     switch (type) {
2237     case VAPictureParameterBufferType:
2238         va_TraceVAPictureParameterBufferMPEG2(dpy, context, buffer, type, size, num_elements, pbuf);
2239         break;
2240     case VAIQMatrixBufferType:
2241         va_TraceVAIQMatrixBufferMPEG2(dpy, context, buffer, type, size, num_elements, pbuf);
2242         break;
2243     case VABitPlaneBufferType:
2244         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
2245         break;
2246     case VASliceGroupMapBufferType:
2247         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
2248         break;
2249     case VASliceParameterBufferType:
2250         va_TraceVASliceParameterBufferMPEG2(dpy, context, buffer, type, size, num_elements, pbuf);
2251         break;
2252     case VASliceDataBufferType:
2253         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
2254         break;
2255     case VAMacroblockParameterBufferType:
2256         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
2257         break;
2258     case VAResidualDataBufferType:
2259         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
2260         break;
2261     case VADeblockingParameterBufferType:
2262         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
2263         break;
2264     case VAImageBufferType:
2265         break;
2266     case VAProtectedSliceDataBufferType:
2267         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
2268         break;
2269     case VAEncCodedBufferType:
2270         break;
2271     case VAEncSequenceParameterBufferType:
2272         break;
2273     case VAEncPictureParameterBufferType:
2274         break;
2275     case VAEncSliceParameterBufferType:
2276         break;
2277     default:
2278         break;
2279     }
2280 }
2281 
va_TraceVAEncSequenceParameterBufferH263(VADisplay dpy,VAContextID __maybe_unused context,VABufferID __maybe_unused buffer,VABufferType __maybe_unused type,unsigned int __maybe_unused size,unsigned int __maybe_unused num_elements,void * data)2282 static void va_TraceVAEncSequenceParameterBufferH263(
2283     VADisplay dpy,
2284     VAContextID __maybe_unused context,
2285     VABufferID __maybe_unused buffer,
2286     VABufferType __maybe_unused type,
2287     unsigned int __maybe_unused size,
2288     unsigned int __maybe_unused num_elements,
2289     void *data)
2290 {
2291     VAEncSequenceParameterBufferH263 *p = (VAEncSequenceParameterBufferH263 *)data;
2292     DPY2TRACECTX(dpy);
2293 
2294     va_TraceMsg(trace_ctx, "\t--VAEncSequenceParameterBufferH263\n");
2295 
2296     va_TraceMsg(trace_ctx, "\tintra_period = %d\n", p->intra_period);
2297     va_TraceMsg(trace_ctx, "\tbits_per_second = %d\n", p->bits_per_second);
2298     va_TraceMsg(trace_ctx, "\tframe_rate = %d\n", p->frame_rate);
2299     va_TraceMsg(trace_ctx, "\tinitial_qp = %d\n", p->initial_qp);
2300     va_TraceMsg(trace_ctx, "\tmin_qp = %d\n", p->min_qp);
2301     va_TraceMsg(trace_ctx, NULL);
2302 
2303     return;
2304 }
2305 
2306 
va_TraceVAEncPictureParameterBufferH263(VADisplay dpy,VAContextID __maybe_unused context,VABufferID __maybe_unused buffer,VABufferType __maybe_unused type,unsigned int __maybe_unused size,unsigned int __maybe_unused num_elements,void * data)2307 static void va_TraceVAEncPictureParameterBufferH263(
2308     VADisplay dpy,
2309     VAContextID __maybe_unused context,
2310     VABufferID __maybe_unused buffer,
2311     VABufferType __maybe_unused type,
2312     unsigned int __maybe_unused size,
2313     unsigned int __maybe_unused num_elements,
2314     void *data)
2315 {
2316     VAEncPictureParameterBufferH263 *p = (VAEncPictureParameterBufferH263 *)data;
2317     DPY2TRACECTX(dpy);
2318 
2319     va_TraceMsg(trace_ctx, "\t--VAEncPictureParameterBufferH263\n");
2320     va_TraceMsg(trace_ctx, "\treference_picture = 0x%08x\n", p->reference_picture);
2321     va_TraceMsg(trace_ctx, "\treconstructed_picture = 0x%08x\n", p->reconstructed_picture);
2322     va_TraceMsg(trace_ctx, "\tcoded_buf = %08x\n", p->coded_buf);
2323     va_TraceMsg(trace_ctx, "\tpicture_width = %d\n", p->picture_width);
2324     va_TraceMsg(trace_ctx, "\tpicture_height = %d\n", p->picture_height);
2325     va_TraceMsg(trace_ctx, "\tpicture_type = 0x%08x\n", p->picture_type);
2326     va_TraceMsg(trace_ctx, NULL);
2327 
2328     return;
2329 }
2330 
va_TraceVAEncPictureParameterBufferJPEG(VADisplay dpy,VAContextID __maybe_unused context,VABufferID __maybe_unused buffer,VABufferType __maybe_unused type,unsigned int __maybe_unused size,unsigned int __maybe_unused num_elements,void * data)2331 static void va_TraceVAEncPictureParameterBufferJPEG(
2332     VADisplay dpy,
2333     VAContextID __maybe_unused context,
2334     VABufferID __maybe_unused buffer,
2335     VABufferType __maybe_unused type,
2336     unsigned int __maybe_unused size,
2337     unsigned int __maybe_unused num_elements,
2338     void *data)
2339 {
2340     VAEncPictureParameterBufferJPEG *p = (VAEncPictureParameterBufferJPEG *)data;
2341     int i;
2342 
2343     DPY2TRACECTX(dpy);
2344 
2345     va_TraceMsg(trace_ctx, "\t--VAEncPictureParameterBufferJPEG\n");
2346     va_TraceMsg(trace_ctx, "\treconstructed_picture = 0x%08x\n", p->reconstructed_picture);
2347     va_TraceMsg(trace_ctx, "\tcoded_buf = %08x\n", p->coded_buf);
2348     va_TraceMsg(trace_ctx, "\tpicture_width = %d\n", p->picture_width);
2349     va_TraceMsg(trace_ctx, "\tpicture_height = %d\n", p->picture_height);
2350     va_TraceMsg(trace_ctx, "\tpic_flags.bits.profile = %d\n", p->pic_flags.bits.profile);
2351     va_TraceMsg(trace_ctx, "\tpic_flags.bits.progressive = %d\n", p->pic_flags.bits.profile);
2352     va_TraceMsg(trace_ctx, "\tpic_flags.bits.huffman = %d\n", p->pic_flags.bits.huffman);
2353     va_TraceMsg(trace_ctx, "\tpic_flags.bits.interleaved = %d\n", p->pic_flags.bits.interleaved);
2354     va_TraceMsg(trace_ctx, "\tpic_flags.bits.differential = %d\n", p->pic_flags.bits.differential);
2355     va_TraceMsg(trace_ctx, "\tsample_bit_depth = %d\n", p->sample_bit_depth);
2356     va_TraceMsg(trace_ctx, "\tnum_scan = %d\n", p->num_scan);
2357     va_TraceMsg(trace_ctx, "\tnum_components = %d\n", p->num_components);
2358     for (i=0; i<p->num_components; i++)
2359         va_TraceMsg(trace_ctx, "\tcomponent_id[%d] = %d\n", i, p->component_id[i]);
2360 
2361     if (p->quality > 0)
2362         va_TraceMsg(trace_ctx, "\tquality = %d\n", p->quality);
2363     else
2364         va_TraceMsg(trace_ctx, "\tquantiser_table_selector[] = %d %d %d %d\n",
2365                     p->quantiser_table_selector[0],
2366                     p->quantiser_table_selector[1],
2367                     p->quantiser_table_selector[2],
2368                     p->quantiser_table_selector[3]);
2369 
2370     va_TraceMsg(trace_ctx, NULL);
2371 
2372     return;
2373 }
2374 
va_TraceVAEncQMatrixBufferJPEG(VADisplay dpy,VAContextID __maybe_unused context,VABufferID __maybe_unused buffer,VABufferType __maybe_unused type,unsigned int __maybe_unused size,unsigned int __maybe_unused num_elements,void * data)2375 static void va_TraceVAEncQMatrixBufferJPEG(
2376     VADisplay dpy,
2377     VAContextID __maybe_unused context,
2378     VABufferID __maybe_unused buffer,
2379     VABufferType __maybe_unused type,
2380     unsigned int __maybe_unused size,
2381     unsigned int __maybe_unused num_elements,
2382     void *data)
2383 {
2384     VAQMatrixBufferJPEG *p = (VAQMatrixBufferJPEG *)data;
2385     DPY2TRACECTX(dpy);
2386 
2387     va_TraceMsg(trace_ctx, "\t--VAQMatrixBufferJPEG\n");
2388     va_TraceMsg(trace_ctx, "\tload_lum_quantiser_matrix = %d\n", p->load_lum_quantiser_matrix);
2389     if (p->load_lum_quantiser_matrix) {
2390         int i;
2391         for (i = 0; i < 8; i++) {
2392             va_TraceMsg(trace_ctx,
2393                         "\t\t0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x\n",
2394                         p->lum_quantiser_matrix[i*8],
2395                         p->lum_quantiser_matrix[i*8 + 1],
2396                         p->lum_quantiser_matrix[i*8 + 2],
2397                         p->lum_quantiser_matrix[i*8 + 3],
2398                         p->lum_quantiser_matrix[i*8 + 4],
2399                         p->lum_quantiser_matrix[i*8 + 5],
2400                         p->lum_quantiser_matrix[i*8 + 6],
2401                         p->lum_quantiser_matrix[i*8 + 7]);
2402         }
2403     }
2404 
2405     va_TraceMsg(trace_ctx, "\tload_chroma_quantiser_matrix = %d\n", p->load_chroma_quantiser_matrix);
2406     if (p->load_chroma_quantiser_matrix) {
2407         int i;
2408         for (i = 0; i < 8; i++) {
2409             va_TraceMsg(trace_ctx,
2410                         "\t\t0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x\n",
2411                         p->chroma_quantiser_matrix[i*8],
2412                         p->chroma_quantiser_matrix[i*8 + 1],
2413                         p->chroma_quantiser_matrix[i*8 + 2],
2414                         p->chroma_quantiser_matrix[i*8 + 3],
2415                         p->chroma_quantiser_matrix[i*8 + 4],
2416                         p->chroma_quantiser_matrix[i*8 + 5],
2417                         p->chroma_quantiser_matrix[i*8 + 6],
2418                         p->chroma_quantiser_matrix[i*8 + 7]);
2419         }
2420     }
2421 
2422     va_TraceMsg(trace_ctx, NULL);
2423 
2424     return;
2425 }
2426 
2427 
va_TraceH263Buf(VADisplay dpy,VAContextID __maybe_unused context,VABufferID __maybe_unused buffer,VABufferType __maybe_unused type,unsigned int __maybe_unused size,unsigned int __maybe_unused num_elements,void * pbuf)2428 static void va_TraceH263Buf(
2429     VADisplay dpy,
2430     VAContextID __maybe_unused context,
2431     VABufferID __maybe_unused buffer,
2432     VABufferType __maybe_unused type,
2433     unsigned int __maybe_unused size,
2434     unsigned int __maybe_unused num_elements,
2435     void *pbuf
2436 )
2437 {
2438     DPY2TRACECTX(dpy);
2439 
2440     switch (type) {
2441     case VAPictureParameterBufferType:/* print MPEG4 buffer */
2442         va_TraceVAPictureParameterBufferMPEG4(dpy, context, buffer, type, size, num_elements, pbuf);
2443         break;
2444     case VAIQMatrixBufferType:/* print MPEG4 buffer */
2445         va_TraceVAIQMatrixBufferMPEG4(dpy, context, buffer, type, size, num_elements, pbuf);
2446         break;
2447     case VABitPlaneBufferType:/* print MPEG4 buffer */
2448         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
2449         break;
2450     case VASliceGroupMapBufferType:
2451         break;
2452     case VASliceParameterBufferType:/* print MPEG4 buffer */
2453         va_TraceVASliceParameterBufferMPEG4(dpy, context, buffer, type, size, num_elements, pbuf);
2454         break;
2455     case VASliceDataBufferType:
2456         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
2457         break;
2458     case VAMacroblockParameterBufferType:
2459         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
2460         break;
2461     case VAResidualDataBufferType:
2462         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
2463         break;
2464     case VADeblockingParameterBufferType:
2465         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
2466         break;
2467     case VAImageBufferType:
2468         break;
2469     case VAProtectedSliceDataBufferType:
2470         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
2471         break;
2472     case VAEncCodedBufferType:
2473         break;
2474     case VAEncSequenceParameterBufferType:
2475         va_TraceVAEncSequenceParameterBufferH263(dpy, context, buffer, type, size, num_elements, pbuf);
2476         break;
2477     case VAEncPictureParameterBufferType:
2478         va_TraceVAEncPictureParameterBufferH263(dpy, context, buffer, type, size, num_elements, pbuf);
2479         break;
2480     case VAEncSliceParameterBufferType:
2481         va_TraceVAEncSliceParameterBuffer(dpy, context, buffer, type, size, num_elements, pbuf);
2482         break;
2483     case VAEncPackedHeaderParameterBufferType:
2484         va_TraceVAEncPackedHeaderParameterBufferType(dpy, context, buffer, type, size, num_elements, pbuf);
2485         break;
2486     default:
2487         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
2488         break;
2489     }
2490 }
2491 
2492 
va_TraceJPEGBuf(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * pbuf)2493 static void va_TraceJPEGBuf(
2494     VADisplay dpy,
2495     VAContextID context,
2496     VABufferID buffer,
2497     VABufferType type,
2498     unsigned int size,
2499     unsigned int num_elements,
2500     void *pbuf
2501 )
2502 {
2503     switch (type) {
2504     case VABitPlaneBufferType:
2505     case VASliceGroupMapBufferType:
2506     case VASliceDataBufferType:
2507     case VAMacroblockParameterBufferType:
2508     case VAResidualDataBufferType:
2509     case VADeblockingParameterBufferType:
2510     case VAImageBufferType:
2511     case VAProtectedSliceDataBufferType:
2512     case VAEncCodedBufferType:
2513     case VAEncSequenceParameterBufferType:
2514         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
2515         break;
2516     case VAEncSliceParameterBufferType:
2517         va_TraceVAEncPictureParameterBufferJPEG(dpy, context, buffer, type, size, num_elements, pbuf);
2518         break;
2519     case VAPictureParameterBufferType:
2520         va_TraceVAPictureParameterBufferJPEG(dpy, context, buffer, type, size, num_elements, pbuf);
2521         break;
2522     case VAIQMatrixBufferType:
2523         va_TraceVAIQMatrixBufferJPEG(dpy, context, buffer, type, size, num_elements, pbuf);
2524         break;
2525     case VASliceParameterBufferType:
2526         va_TraceVASliceParameterBufferJPEG(dpy, context, buffer, type, size, num_elements, pbuf);
2527         break;
2528     case VAHuffmanTableBufferType:
2529         va_TraceVAHuffmanTableBufferJPEG(dpy, context, buffer, type, size, num_elements, pbuf);
2530         break;
2531     case VAEncPictureParameterBufferType:
2532         va_TraceVAEncPictureParameterBufferJPEG(dpy, context, buffer, type, size, num_elements, pbuf);
2533         break;
2534     case VAQMatrixBufferType:
2535         va_TraceVAEncQMatrixBufferJPEG(dpy, context, buffer, type, size, num_elements, pbuf);
2536         break;
2537     default:
2538         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
2539         break;
2540     }
2541 }
2542 
va_TraceMPEG4Buf(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * pbuf)2543 static void va_TraceMPEG4Buf(
2544     VADisplay dpy,
2545     VAContextID context,
2546     VABufferID buffer,
2547     VABufferType type,
2548     unsigned int size,
2549     unsigned int num_elements,
2550     void *pbuf
2551 )
2552 {
2553     switch (type) {
2554     case VAPictureParameterBufferType:
2555         va_TraceVAPictureParameterBufferMPEG4(dpy, context, buffer, type, size, num_elements, pbuf);
2556         break;
2557     case VAIQMatrixBufferType:
2558         va_TraceVAIQMatrixBufferMPEG4(dpy, context, buffer, type, size, num_elements, pbuf);
2559         break;
2560     case VABitPlaneBufferType:
2561         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
2562         break;
2563     case VASliceGroupMapBufferType:
2564         break;
2565     case VASliceParameterBufferType:
2566         va_TraceVASliceParameterBufferMPEG4(dpy, context, buffer, type, size, num_elements, pbuf);
2567         break;
2568     case VASliceDataBufferType:
2569         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
2570         break;
2571     case VAMacroblockParameterBufferType:
2572         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
2573         break;
2574     case VAResidualDataBufferType:
2575         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
2576         break;
2577     case VADeblockingParameterBufferType:
2578         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
2579         break;
2580     case VAImageBufferType:
2581         break;
2582     case VAProtectedSliceDataBufferType:
2583         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
2584         break;
2585     case VAEncCodedBufferType:
2586         break;
2587     case VAEncSequenceParameterBufferType:
2588         va_TraceVAEncSequenceParameterBufferMPEG4(dpy, context, buffer, type, size, num_elements, pbuf);
2589         break;
2590     case VAEncPictureParameterBufferType:
2591         va_TraceVAEncPictureParameterBufferMPEG4(dpy, context, buffer, type, size, num_elements, pbuf);
2592         break;
2593     case VAEncSliceParameterBufferType:
2594         va_TraceVAEncSliceParameterBuffer(dpy, context, buffer, type, size, num_elements, pbuf);
2595         break;
2596     default:
2597         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
2598         break;
2599     }
2600 }
2601 
2602 
va_TraceH264Buf(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * pbuf)2603 static void va_TraceH264Buf(
2604     VADisplay dpy,
2605     VAContextID context,
2606     VABufferID buffer,
2607     VABufferType type,
2608     unsigned int size,
2609     unsigned int num_elements,
2610     void *pbuf
2611 )
2612 {
2613     DPY2TRACECTX(dpy);
2614 
2615     switch (type) {
2616     case VAPictureParameterBufferType:
2617         va_TraceVAPictureParameterBufferH264(dpy, context, buffer, type, size, num_elements, pbuf);
2618         break;
2619     case VAIQMatrixBufferType:
2620         va_TraceVAIQMatrixBufferH264(dpy, context, buffer, type, size, num_elements, pbuf);
2621         break;
2622     case VABitPlaneBufferType:
2623         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
2624         break;
2625     case VASliceGroupMapBufferType:
2626         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
2627         break;
2628     case VASliceParameterBufferType:
2629         va_TraceVASliceParameterBufferH264(dpy, context, buffer, type, size, num_elements, pbuf);
2630         break;
2631     case VASliceDataBufferType:
2632         va_TraceVABuffers(dpy, context, buffer, type, trace_ctx->trace_slice_size, num_elements, pbuf);
2633         break;
2634     case VAMacroblockParameterBufferType:
2635         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
2636         break;
2637     case VAResidualDataBufferType:
2638         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
2639         break;
2640     case VADeblockingParameterBufferType:
2641         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
2642         break;
2643     case VAImageBufferType:
2644         break;
2645     case VAProtectedSliceDataBufferType:
2646         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
2647         break;
2648     case VAEncCodedBufferType:
2649         break;
2650     case VAEncSequenceParameterBufferType:
2651         va_TraceVAEncSequenceParameterBufferH264(dpy, context, buffer, type, size, num_elements, pbuf);
2652         break;
2653     case VAEncPictureParameterBufferType:
2654         va_TraceVAEncPictureParameterBufferH264(dpy, context, buffer, type, size, num_elements, pbuf);
2655         break;
2656     case VAEncSliceParameterBufferType:
2657         if (size == sizeof(VAEncSliceParameterBuffer))
2658             va_TraceVAEncSliceParameterBuffer(dpy, context, buffer, type, size, num_elements, pbuf);
2659         else
2660             va_TraceVAEncSliceParameterBufferH264(dpy, context, buffer, type, size, num_elements, pbuf);
2661         break;
2662     case VAEncPackedHeaderParameterBufferType:
2663         va_TraceVAEncPackedHeaderParameterBufferType(dpy, context, buffer, type, size, num_elements, pbuf);
2664         break;
2665 
2666     case VAEncMiscParameterBufferType:
2667         va_TraceVAEncMiscParameterBuffer(dpy, context, buffer, type, size, num_elements, pbuf);
2668         break;
2669     default:
2670         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
2671         break;
2672     }
2673 }
2674 
va_TraceVP8Buf(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * pbuf)2675 static void va_TraceVP8Buf(
2676     VADisplay dpy,
2677     VAContextID context,
2678     VABufferID buffer,
2679     VABufferType type,
2680     unsigned int size,
2681     unsigned int num_elements,
2682     void *pbuf
2683 )
2684 {
2685     DPY2TRACECTX(dpy);
2686 
2687     switch (type) {
2688     case VAPictureParameterBufferType:
2689         va_TraceVAPictureParameterBufferVP8(dpy, context, buffer, type, size, num_elements, pbuf);
2690         break;
2691     case VAIQMatrixBufferType:
2692         va_TraceVAIQMatrixBufferVP8(dpy, context, buffer, type, size, num_elements, pbuf);
2693         break;
2694     case VABitPlaneBufferType:
2695         break;
2696     case VASliceGroupMapBufferType:
2697         break;
2698     case VASliceParameterBufferType:
2699         va_TraceVASliceParameterBufferVP8(dpy, context, buffer, type, size, num_elements, pbuf);
2700         break;
2701     case VASliceDataBufferType:
2702         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
2703         break;
2704     case VAProbabilityBufferType:
2705         va_TraceVAProbabilityBufferVP8(dpy, context, buffer, type, size, num_elements, pbuf);
2706         break;
2707     case VAMacroblockParameterBufferType:
2708         break;
2709     case VAResidualDataBufferType:
2710         break;
2711     case VADeblockingParameterBufferType:
2712         break;
2713     case VAImageBufferType:
2714         break;
2715     case VAProtectedSliceDataBufferType:
2716         break;
2717     case VAEncCodedBufferType:
2718         break;
2719     case VAEncSequenceParameterBufferType:
2720         va_TraceVAEncSequenceParameterBufferVP8(dpy, context, buffer, type, size, num_elements, pbuf);
2721         break;
2722     case VAEncPictureParameterBufferType:
2723         va_TraceVAEncPictureParameterBufferVP8(dpy, context, buffer, type, size, num_elements, pbuf);
2724         break;
2725     case VAEncSliceParameterBufferType:
2726         break;
2727     case VAEncPackedHeaderParameterBufferType:
2728         break;
2729     case VAEncMiscParameterBufferType:
2730         va_TraceVAEncMiscParameterBuffer(dpy, context, buffer, type, size, num_elements, pbuf);
2731         break;
2732     default:
2733         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
2734         break;
2735     }
2736 }
2737 
2738 
va_TraceVC1Buf(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * pbuf)2739 static void va_TraceVC1Buf(
2740     VADisplay dpy,
2741     VAContextID context,
2742     VABufferID buffer,
2743     VABufferType type,
2744     unsigned int size,
2745     unsigned int num_elements,
2746     void *pbuf
2747 )
2748 {
2749     DPY2TRACECTX(dpy);
2750 
2751     switch (type) {
2752     case VAPictureParameterBufferType:
2753         va_TraceVAPictureParameterBufferVC1(dpy, context, buffer, type, size, num_elements, pbuf);
2754         break;
2755     case VAIQMatrixBufferType:
2756         break;
2757     case VABitPlaneBufferType:
2758         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
2759         break;
2760     case VASliceGroupMapBufferType:
2761         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
2762         break;
2763     case VASliceParameterBufferType:
2764         va_TraceVASliceParameterBufferVC1(dpy, context, buffer, type, size, num_elements, pbuf);
2765         break;
2766     case VASliceDataBufferType:
2767         va_TraceVABuffers(dpy, context, buffer, type, trace_ctx->trace_slice_size, num_elements, pbuf);
2768         break;
2769     case VAMacroblockParameterBufferType:
2770         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
2771         break;
2772     case VAResidualDataBufferType:
2773         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
2774         break;
2775     case VADeblockingParameterBufferType:
2776         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
2777         break;
2778     case VAImageBufferType:
2779         break;
2780     case VAProtectedSliceDataBufferType:
2781         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
2782         break;
2783     case VAEncCodedBufferType:
2784         break;
2785     case VAEncSequenceParameterBufferType:
2786         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
2787         break;
2788     case VAEncPictureParameterBufferType:
2789         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
2790         break;
2791     case VAEncSliceParameterBufferType:
2792         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
2793         break;
2794     default:
2795         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
2796         break;
2797     }
2798 }
2799 
2800 static void
va_TraceProcFilterParameterBufferDeinterlacing(VADisplay dpy,VAContextID __maybe_unused context,VAProcFilterParameterBufferBase * base)2801 va_TraceProcFilterParameterBufferDeinterlacing(
2802     VADisplay dpy,
2803     VAContextID __maybe_unused context,
2804     VAProcFilterParameterBufferBase *base
2805 )
2806 {
2807     VAProcFilterParameterBufferDeinterlacing *deint = (VAProcFilterParameterBufferDeinterlacing *)base;
2808 
2809     DPY2TRACECTX(dpy);
2810 
2811     va_TraceMsg(trace_ctx, "\t    type = %d\n", deint->type);
2812     va_TraceMsg(trace_ctx, "\t    algorithm = %d\n", deint->algorithm);
2813     va_TraceMsg(trace_ctx, "\t    flags = %d\n", deint->flags);
2814 }
2815 
2816 static void
va_TraceProcFilterParameterBufferColorBalance(VADisplay dpy,VAContextID __maybe_unused context,VAProcFilterParameterBufferBase * base)2817 va_TraceProcFilterParameterBufferColorBalance(
2818     VADisplay dpy,
2819     VAContextID __maybe_unused context,
2820     VAProcFilterParameterBufferBase *base
2821 )
2822 {
2823     VAProcFilterParameterBufferColorBalance *color_balance = (VAProcFilterParameterBufferColorBalance *)base;
2824 
2825     DPY2TRACECTX(dpy);
2826 
2827     va_TraceMsg(trace_ctx, "\t    type = %d\n", color_balance->type);
2828     va_TraceMsg(trace_ctx, "\t    attrib = %d\n", color_balance->attrib);
2829     va_TraceMsg(trace_ctx, "\t    value = %f\n", color_balance->value);
2830 }
2831 
2832 static void
va_TraceProcFilterParameterBufferBase(VADisplay dpy,VAContextID context,VAProcFilterParameterBufferBase * base)2833 va_TraceProcFilterParameterBufferBase(
2834     VADisplay dpy,
2835     VAContextID context,
2836     VAProcFilterParameterBufferBase *base
2837 )
2838 {
2839     DPY2TRACECTX(dpy);
2840 
2841     va_TraceMsg(trace_ctx, "\t    type = %d, context = %d\n", base->type, context);
2842 }
2843 
2844 static void
va_TraceProcFilterParameterBuffer(VADisplay dpy,VAContextID context,VABufferID * filters,unsigned int num_filters)2845 va_TraceProcFilterParameterBuffer(
2846     VADisplay dpy,
2847     VAContextID context,
2848     VABufferID *filters,
2849     unsigned int num_filters
2850 )
2851 {
2852     VABufferType type;
2853     unsigned int size;
2854     unsigned int num_elements;
2855     VAProcFilterParameterBufferBase *base_filter = NULL;
2856     unsigned int i;
2857 
2858     DPY2TRACECTX(dpy);
2859 
2860     if (num_filters == 0 || filters == NULL) {
2861         va_TraceMsg(trace_ctx, "\t  num_filters = %d\n", num_filters);
2862         va_TraceMsg(trace_ctx, "\t  filters = %p\n", filters);
2863         return;
2864     }
2865 
2866     va_TraceMsg(trace_ctx, "\t  num_filters = %d\n", num_filters);
2867 
2868     /* get buffer type information */
2869     for (i = 0; i < num_filters; i++) {
2870         vaBufferInfo(dpy, context, filters[i], &type, &size, &num_elements);
2871 
2872         if (type != VAProcFilterParameterBufferType) {
2873             va_TraceMsg(trace_ctx, "\t  filters[%d] = 0x%08x (INVALID)\n", i, filters[i]);
2874             return;
2875         } else {
2876             va_TraceMsg(trace_ctx, "\t  filters[%d] = 0x%08x\n", i, filters[i]);
2877         }
2878 
2879         base_filter = NULL;
2880         vaMapBuffer(dpy, filters[i], (void **)&base_filter);
2881 
2882         if (base_filter == NULL) {
2883             vaUnmapBuffer(dpy, filters[i]);
2884             return;
2885         }
2886 
2887         switch (base_filter->type) {
2888         case VAProcFilterDeinterlacing:
2889             va_TraceProcFilterParameterBufferDeinterlacing(dpy,
2890                                                            context,
2891                                                            base_filter);
2892             break;
2893         case VAProcFilterColorBalance:
2894             va_TraceProcFilterParameterBufferColorBalance(dpy,
2895                                                           context,
2896                                                           base_filter);
2897             break;
2898         default:
2899             va_TraceProcFilterParameterBufferBase(dpy,
2900                                                   context,
2901                                                   base_filter);
2902             break;
2903         }
2904 
2905         vaUnmapBuffer(dpy, filters[i]);
2906     }
2907 }
2908 
2909 static void
va_TraceVAProcPipelineParameterBuffer(VADisplay dpy,VAContextID context,VABufferID __maybe_unused buffer,VABufferType __maybe_unused type,unsigned int __maybe_unused size,unsigned int __maybe_unused num_elements,void * data)2910 va_TraceVAProcPipelineParameterBuffer(
2911     VADisplay dpy,
2912     VAContextID context,
2913     VABufferID __maybe_unused buffer,
2914     VABufferType __maybe_unused type,
2915     unsigned int __maybe_unused size,
2916     unsigned int __maybe_unused num_elements,
2917     void *data
2918 )
2919 {
2920     VAProcPipelineParameterBuffer *p = (VAProcPipelineParameterBuffer *)data;
2921     unsigned int i;
2922 
2923     DPY2TRACECTX(dpy);
2924 
2925     va_TraceMsg(trace_ctx, "\t--VAProcPipelineParameterBuffer\n");
2926 
2927     va_TraceMsg(trace_ctx, "\t  surface = 0x%08x\n", p->surface);
2928 
2929     if (p->surface_region) {
2930         va_TraceMsg(trace_ctx, "\t  surface_region\n");
2931         va_TraceMsg(trace_ctx, "\t    x = %d\n", p->surface_region->x);
2932         va_TraceMsg(trace_ctx, "\t    y = %d\n", p->surface_region->y);
2933         va_TraceMsg(trace_ctx, "\t    width = %d\n", p->surface_region->width);
2934         va_TraceMsg(trace_ctx, "\t    height = %d\n", p->surface_region->height);
2935     } else {
2936         va_TraceMsg(trace_ctx, "\t  surface_region = (NULL)\n");
2937     }
2938 
2939     va_TraceMsg(trace_ctx, "\t  surface_color_standard = %d\n", p->surface_color_standard);
2940 
2941     if (p->output_region) {
2942         va_TraceMsg(trace_ctx, "\t  output_region\n");
2943         va_TraceMsg(trace_ctx, "\t    x = %d\n", p->output_region->x);
2944         va_TraceMsg(trace_ctx, "\t    y = %d\n", p->output_region->y);
2945         va_TraceMsg(trace_ctx, "\t    width = %d\n", p->output_region->width);
2946         va_TraceMsg(trace_ctx, "\t    height = %d\n", p->output_region->height);
2947     } else {
2948         va_TraceMsg(trace_ctx, "\t  output_region = (NULL)\n");
2949     }
2950 
2951     va_TraceMsg(trace_ctx, "\t  output_background_color = 0x%08x\n", p->output_background_color);
2952     va_TraceMsg(trace_ctx, "\t  output_color_standard = %d\n", p->output_color_standard);
2953     va_TraceMsg(trace_ctx, "\t  pipeline_flags = 0x%08x\n", p->pipeline_flags);
2954     va_TraceMsg(trace_ctx, "\t  filter_flags = 0x%08x\n", p->filter_flags);
2955 
2956     va_TraceProcFilterParameterBuffer(dpy, context, p->filters, p->num_filters);
2957 
2958     va_TraceMsg(trace_ctx, "\t  num_forward_references = 0x%08x\n", p->num_forward_references);
2959 
2960     if (p->num_forward_references) {
2961         va_TraceMsg(trace_ctx, "\t  forward_references\n");
2962 
2963         if (p->forward_references) {
2964             /* only dump the first 5 forward references */
2965             for (i = 0; i < p->num_forward_references && i < 5; i++) {
2966                 va_TraceMsg(trace_ctx, "\t    forward_references[%d] = 0x%08x\n", i, p->forward_references[i]);
2967             }
2968         } else {
2969             for (i = 0; i < p->num_forward_references && i < 5; i++) {
2970                 va_TraceMsg(trace_ctx, "\t    forward_references[%d] = (NULL)\n", i);
2971             }
2972         }
2973     }
2974 
2975     va_TraceMsg(trace_ctx, "\t  num_backward_references = 0x%08x\n", p->num_backward_references);
2976 
2977     if (p->num_backward_references) {
2978         va_TraceMsg(trace_ctx, "\t  backward_references\n");
2979 
2980         if (p->backward_references) {
2981             /* only dump the first 5 backward references */
2982             for (i = 0; i < p->num_backward_references && i < 5; i++) {
2983                 va_TraceMsg(trace_ctx, "\t    backward_references[%d] = 0x%08x\n", i, p->backward_references[i]);
2984             }
2985         } else {
2986             for (i = 0; i < p->num_backward_references && i < 5; i++) {
2987                 va_TraceMsg(trace_ctx, "\t    backward_references[%d] = (NULL)\n", i);
2988             }
2989         }
2990     }
2991 
2992     /* FIXME: add other info later */
2993 
2994     va_TraceMsg(trace_ctx, NULL);
2995 }
2996 
2997 static void
va_TraceNoneBuf(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * pbuf)2998 va_TraceNoneBuf(
2999     VADisplay dpy,
3000     VAContextID context,
3001     VABufferID buffer,
3002     VABufferType type,
3003     unsigned int size,
3004     unsigned int num_elements,
3005     void *pbuf
3006 )
3007 {
3008     DPY2TRACECTX(dpy);
3009 
3010     switch (type) {
3011     case VAProcPipelineParameterBufferType:
3012         va_TraceVAProcPipelineParameterBuffer(dpy, context, buffer, type, size, num_elements, pbuf);
3013         break;
3014     default:
3015         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
3016         break;
3017     }
3018 }
3019 
va_TraceRenderPicture(VADisplay dpy,VAContextID __maybe_unused context,VABufferID * buffers,int num_buffers)3020 void va_TraceRenderPicture(
3021     VADisplay dpy,
3022     VAContextID __maybe_unused context,
3023     VABufferID *buffers,
3024     int num_buffers
3025 )
3026 {
3027     VABufferType type;
3028     unsigned int size;
3029     unsigned int num_elements;
3030     int i;
3031     DPY2TRACECTX(dpy);
3032 
3033     TRACE_FUNCNAME(idx);
3034 
3035     va_TraceMsg(trace_ctx, "\tnum_buffers = %d\n", num_buffers);
3036     if (buffers == NULL)
3037         return;
3038 
3039     for (i = 0; i < num_buffers; i++) {
3040         unsigned char *pbuf = NULL;
3041         unsigned int j;
3042 
3043         /* get buffer type information */
3044         vaBufferInfo(dpy, context, buffers[i], &type, &size, &num_elements);
3045 
3046         va_TraceMsg(trace_ctx, "\t---------------------------\n");
3047         va_TraceMsg(trace_ctx, "\tbuffers[%d] = 0x%08x\n", i, buffers[i]);
3048         va_TraceMsg(trace_ctx, "\t  type = %s\n", buffer_type_to_string(type));
3049         va_TraceMsg(trace_ctx, "\t  size = %d\n", size);
3050         va_TraceMsg(trace_ctx, "\t  num_elements = %d\n", num_elements);
3051 
3052         vaMapBuffer(dpy, buffers[i], (void **)&pbuf);
3053         if (pbuf == NULL)
3054             continue;
3055 
3056         switch (trace_ctx->trace_profile) {
3057         case VAProfileMPEG2Simple:
3058         case VAProfileMPEG2Main:
3059             for (j=0; j<num_elements; j++) {
3060                 va_TraceMsg(trace_ctx, "\telement[%d] =\n", j);
3061                 va_TraceMPEG2Buf(dpy, context, buffers[i], type, size, num_elements, pbuf + size*j);
3062             }
3063             break;
3064         case VAProfileMPEG4Simple:
3065         case VAProfileMPEG4AdvancedSimple:
3066         case VAProfileMPEG4Main:
3067             for (j=0; j<num_elements; j++) {
3068                 va_TraceMsg(trace_ctx, "\telement[%d] =\n", j);
3069                 va_TraceMPEG4Buf(dpy, context, buffers[i], type, size, num_elements, pbuf + size*j);
3070             }
3071             break;
3072         case VAProfileH264Baseline:
3073         case VAProfileH264Main:
3074         case VAProfileH264High:
3075         case VAProfileH264ConstrainedBaseline:
3076             for (j=0; j<num_elements; j++) {
3077                 va_TraceMsg(trace_ctx, "\telement[%d] =\n", j);
3078 
3079                 va_TraceH264Buf(dpy, context, buffers[i], type, size, num_elements, pbuf + size*j);
3080             }
3081             break;
3082         case VAProfileVC1Simple:
3083         case VAProfileVC1Main:
3084         case VAProfileVC1Advanced:
3085             for (j=0; j<num_elements; j++) {
3086                 va_TraceMsg(trace_ctx, "\telement[%d] =\n", j);
3087 
3088                 va_TraceVC1Buf(dpy, context, buffers[i], type, size, num_elements, pbuf + size*j);
3089             }
3090             break;
3091         case VAProfileH263Baseline:
3092             for (j=0; j<num_elements; j++) {
3093                 va_TraceMsg(trace_ctx, "\telement[%d] =\n", j);
3094 
3095                 va_TraceH263Buf(dpy, context, buffers[i], type, size, num_elements, pbuf + size*j);
3096             }
3097             break;
3098         case VAProfileJPEGBaseline:
3099             for (j=0; j<num_elements; j++) {
3100                 va_TraceMsg(trace_ctx, "\telement[%d] =\n", j);
3101 
3102                 va_TraceJPEGBuf (dpy, context, buffers[i], type, size, num_elements, pbuf + size*j);
3103             }
3104             break;
3105         case VAProfileVP8Version0_3:
3106             for (j=0; j<num_elements; j++) {
3107                 va_TraceMsg(trace_ctx, "\telement[%d] =\n", j);
3108 
3109                 va_TraceVP8Buf(dpy, context, buffers[i], type, size, num_elements, pbuf + size*j);
3110             }
3111             break;
3112         case VAProfileNone:
3113             for (j=0; j<num_elements; j++) {
3114                 va_TraceMsg(trace_ctx, "\telement[%d] =\n", j);
3115 
3116                 va_TraceNoneBuf(dpy, context, buffers[i], type, size, num_elements, pbuf + size*j);
3117             }
3118             break;
3119         default:
3120             break;
3121         }
3122 
3123         vaUnmapBuffer(dpy, buffers[i]);
3124     }
3125 
3126     va_TraceMsg(trace_ctx, NULL);
3127 }
3128 
va_TraceEndPicture(VADisplay dpy,VAContextID __maybe_unused context,int __maybe_unused endpic_done)3129 void va_TraceEndPicture(
3130     VADisplay dpy,
3131     VAContextID __maybe_unused context,
3132     int __maybe_unused endpic_done
3133 )
3134 {
3135     int encode, decode, jpeg;
3136     DPY2TRACECTX(dpy);
3137 
3138     TRACE_FUNCNAME(idx);
3139 
3140     va_TraceMsg(trace_ctx, "\trender_targets = 0x%08x\n", trace_ctx->trace_rendertarget);
3141 
3142     /* avoid to create so many empty files */
3143     encode = (trace_ctx->trace_entrypoint == VAEntrypointEncSlice);
3144     decode = (trace_ctx->trace_entrypoint == VAEntrypointVLD);
3145     jpeg = (trace_ctx->trace_entrypoint == VAEntrypointEncPicture);
3146 
3147     /* trace encode source surface, can do it before HW completes rendering */
3148     if ((encode && (trace_flag & VA_TRACE_FLAG_SURFACE_ENCODE))||
3149         (jpeg && (trace_flag & VA_TRACE_FLAG_SURFACE_JPEG)))
3150         va_TraceSurface(dpy);
3151 
3152     /* trace decoded surface, do it after HW completes rendering */
3153     if (decode && ((trace_flag & VA_TRACE_FLAG_SURFACE_DECODE))) {
3154         vaSyncSurface(dpy, trace_ctx->trace_rendertarget);
3155         va_TraceSurface(dpy);
3156     }
3157 
3158     va_TraceMsg(trace_ctx, NULL);
3159 }
3160 
3161 
va_TraceSyncSurface(VADisplay dpy,VASurfaceID __maybe_unused render_target)3162 void va_TraceSyncSurface(
3163     VADisplay dpy,
3164     VASurfaceID __maybe_unused render_target
3165 )
3166 {
3167     DPY2TRACECTX(dpy);
3168 
3169     TRACE_FUNCNAME(idx);
3170 
3171     va_TraceMsg(trace_ctx, NULL);
3172 }
3173 
va_TraceQuerySurfaceAttributes(VADisplay dpy,VAConfigID __maybe_unused config,VASurfaceAttrib * attrib_list,unsigned int * num_attribs)3174 void va_TraceQuerySurfaceAttributes(
3175     VADisplay           dpy,
3176     VAConfigID          __maybe_unused config,
3177     VASurfaceAttrib    *attrib_list,
3178     unsigned int       *num_attribs
3179 )
3180 {
3181     DPY2TRACECTX(dpy);
3182 
3183     TRACE_FUNCNAME(idx);
3184     va_TraceSurfaceAttributes(trace_ctx, attrib_list, num_attribs);
3185 
3186     va_TraceMsg(trace_ctx, NULL);
3187 
3188 }
3189 
3190 
va_TraceQuerySurfaceStatus(VADisplay dpy,VASurfaceID __maybe_unused render_target,VASurfaceStatus * status)3191 void va_TraceQuerySurfaceStatus(
3192     VADisplay dpy,
3193     VASurfaceID __maybe_unused render_target,
3194     VASurfaceStatus *status    /* out */
3195 )
3196 {
3197     DPY2TRACECTX(dpy);
3198 
3199     TRACE_FUNCNAME(idx);
3200 
3201     if (status)
3202         va_TraceMsg(trace_ctx, "\tstatus = 0x%08x\n", *status);
3203     va_TraceMsg(trace_ctx, NULL);
3204 }
3205 
3206 
va_TraceQuerySurfaceError(VADisplay dpy,VASurfaceID surface,VAStatus error_status,void ** error_info)3207 void va_TraceQuerySurfaceError(
3208     VADisplay dpy,
3209     VASurfaceID surface,
3210     VAStatus error_status,
3211     void **error_info       /*out*/
3212 )
3213 {
3214     DPY2TRACECTX(dpy);
3215 
3216     TRACE_FUNCNAME(idx);
3217     va_TraceMsg(trace_ctx, "\tsurface = 0x%08x\n", surface);
3218     va_TraceMsg(trace_ctx, "\terror_status = 0x%08x\n", error_status);
3219     if (error_info && (error_status == VA_STATUS_ERROR_DECODING_ERROR)) {
3220         VASurfaceDecodeMBErrors *p = *error_info;
3221         while (p && (p->status != -1)) {
3222             va_TraceMsg(trace_ctx, "\t\tstatus = %d\n", p->status);
3223             va_TraceMsg(trace_ctx, "\t\tstart_mb = %d\n", p->start_mb);
3224             va_TraceMsg(trace_ctx, "\t\tend_mb = %d\n", p->end_mb);
3225             p++; /* next error record */
3226         }
3227     }
3228     va_TraceMsg(trace_ctx, NULL);
3229 }
3230 
va_TraceMaxNumDisplayAttributes(VADisplay dpy,int number)3231 void va_TraceMaxNumDisplayAttributes (
3232     VADisplay dpy,
3233     int number
3234 )
3235 {
3236     DPY2TRACECTX(dpy);
3237 
3238     TRACE_FUNCNAME(idx);
3239 
3240     va_TraceMsg(trace_ctx, "\tmax_display_attributes = %d\n", number);
3241     va_TraceMsg(trace_ctx, NULL);
3242 }
3243 
va_TraceQueryDisplayAttributes(VADisplay dpy,VADisplayAttribute * attr_list,int * num_attributes)3244 void va_TraceQueryDisplayAttributes (
3245     VADisplay dpy,
3246     VADisplayAttribute *attr_list,    /* out */
3247     int *num_attributes               /* out */
3248 )
3249 {
3250     int i;
3251 
3252     DPY2TRACECTX(dpy);
3253 
3254     if (attr_list == NULL || num_attributes == NULL)
3255         return;
3256 
3257     va_TraceMsg(trace_ctx, "\tnum_attributes = %d\n", *num_attributes);
3258 
3259     for (i=0; i<*num_attributes; i++) {
3260         va_TraceMsg(trace_ctx, "\tattr_list[%d] =\n");
3261         va_TraceMsg(trace_ctx, "\t  typ = 0x%08x\n", attr_list[i].type);
3262         va_TraceMsg(trace_ctx, "\t  min_value = %d\n", attr_list[i].min_value);
3263         va_TraceMsg(trace_ctx, "\t  max_value = %d\n", attr_list[i].max_value);
3264         va_TraceMsg(trace_ctx, "\t  value = %d\n", attr_list[i].value);
3265         va_TraceMsg(trace_ctx, "\t  flags = %d\n", attr_list[i].flags);
3266     }
3267     va_TraceMsg(trace_ctx, NULL);
3268 }
3269 
3270 
va_TraceDisplayAttributes(VADisplay dpy,VADisplayAttribute * attr_list,int __maybe_unused num_attributes)3271 static void va_TraceDisplayAttributes (
3272     VADisplay dpy,
3273     VADisplayAttribute *attr_list,
3274     int __maybe_unused num_attributes
3275 )
3276 {
3277     int i;
3278 
3279     DPY2TRACECTX(dpy);
3280 
3281     if (attr_list == NULL)
3282         return;
3283 
3284     for (i=0; i<num_attributes; i++) {
3285         va_TraceMsg(trace_ctx, "\tattr_list[%d] =\n");
3286         va_TraceMsg(trace_ctx, "\t  typ = 0x%08x\n", attr_list[i].type);
3287         va_TraceMsg(trace_ctx, "\t  min_value = %d\n", attr_list[i].min_value);
3288         va_TraceMsg(trace_ctx, "\t  max_value = %d\n", attr_list[i].max_value);
3289         va_TraceMsg(trace_ctx, "\t  value = %d\n", attr_list[i].value);
3290         va_TraceMsg(trace_ctx, "\t  flags = %d\n", attr_list[i].flags);
3291     }
3292     va_TraceMsg(trace_ctx, NULL);
3293 }
3294 
3295 
va_TraceGetDisplayAttributes(VADisplay dpy,VADisplayAttribute * attr_list,int num_attributes)3296 void va_TraceGetDisplayAttributes (
3297     VADisplay dpy,
3298     VADisplayAttribute *attr_list,
3299     int num_attributes
3300 )
3301 {
3302     DPY2TRACECTX(dpy);
3303 
3304     TRACE_FUNCNAME(idx);
3305 
3306     va_TraceDisplayAttributes (dpy, attr_list, num_attributes);
3307 }
3308 
va_TraceSetDisplayAttributes(VADisplay dpy,VADisplayAttribute * attr_list,int num_attributes)3309 void va_TraceSetDisplayAttributes (
3310     VADisplay dpy,
3311     VADisplayAttribute *attr_list,
3312     int num_attributes
3313 )
3314 {
3315     DPY2TRACECTX(dpy);
3316 
3317     TRACE_FUNCNAME(idx);
3318 
3319     va_TraceDisplayAttributes (dpy, attr_list, num_attributes);
3320 }
3321 
3322 
va_TracePutSurface(VADisplay dpy,VASurfaceID surface,void * draw,short srcx,short srcy,unsigned short srcw,unsigned short srch,short destx,short desty,unsigned short destw,unsigned short desth,VARectangle * cliprects,unsigned int number_cliprects,unsigned int flags)3323 void va_TracePutSurface (
3324     VADisplay dpy,
3325     VASurfaceID surface,
3326     void *draw, /* the target Drawable */
3327     short srcx,
3328     short srcy,
3329     unsigned short srcw,
3330     unsigned short srch,
3331     short destx,
3332     short desty,
3333     unsigned short destw,
3334     unsigned short desth,
3335     VARectangle *cliprects, /* client supplied clip list */
3336     unsigned int number_cliprects, /* number of clip rects in the clip list */
3337     unsigned int flags /* de-interlacing flags */
3338 )
3339 {
3340     DPY2TRACECTX(dpy);
3341 
3342     TRACE_FUNCNAME(idx);
3343 
3344     va_TraceMsg(trace_ctx, "\tsurface = 0x%08x\n", surface);
3345     va_TraceMsg(trace_ctx, "\tdraw = 0x%08x\n", draw);
3346     va_TraceMsg(trace_ctx, "\tsrcx = %d\n", srcx);
3347     va_TraceMsg(trace_ctx, "\tsrcy = %d\n", srcy);
3348     va_TraceMsg(trace_ctx, "\tsrcw = %d\n", srcw);
3349     va_TraceMsg(trace_ctx, "\tsrch = %d\n", srch);
3350     va_TraceMsg(trace_ctx, "\tdestx = %d\n", destx);
3351     va_TraceMsg(trace_ctx, "\tdesty = %d\n", desty);
3352     va_TraceMsg(trace_ctx, "\tdestw = %d\n", destw);
3353     va_TraceMsg(trace_ctx, "\tdesth = %d\n", desth);
3354     va_TraceMsg(trace_ctx, "\tcliprects = 0x%08x\n", cliprects);
3355     va_TraceMsg(trace_ctx, "\tnumber_cliprects = %d\n", number_cliprects);
3356     va_TraceMsg(trace_ctx, "\tflags = 0x%08x\n", flags);
3357     va_TraceMsg(trace_ctx, NULL);
3358 }
3359