1
2 /*
3 * Copyright (c) 2009-2024 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 "sysdeps.h"
28 #include "va.h"
29 #include "va_enc_h264.h"
30 #include "va_backend.h"
31 #include "va_internal.h"
32 #include "va_trace.h"
33 #include "va_enc_h264.h"
34 #include "va_enc_jpeg.h"
35 #include "va_enc_vp8.h"
36 #include "va_dec_jpeg.h"
37 #include "va_dec_vp8.h"
38 #include "va_dec_vp9.h"
39 #include "va_dec_hevc.h"
40 #include "va_dec_vvc.h"
41 #include "va_str.h"
42 #include "va_vpp.h"
43 #include <assert.h>
44 #include <stdarg.h>
45 #include <stdlib.h>
46 #include <stdio.h>
47 #include <string.h>
48 #include <fcntl.h>
49 #include "va_drmcommon.h"
50 #if defined(_WIN32)
51 #include "win32/va_win32.h"
52 #include "compat_win32.h"
53 #else
54 #include <dlfcn.h>
55 #include <unistd.h>
56 #include <sys/types.h>
57 #include <sys/stat.h>
58 #include <pthread.h>
59 #include <sys/time.h>
60 #include <errno.h>
61 #endif
62
63 #if defined(__linux__)
64 #include <sys/syscall.h>
65 #elif defined(__DragonFly__) || defined(__FreeBSD__)
66 #include <pthread_np.h>
67 #elif defined(__NetBSD__)
68 #include <lwp.h>
69 #elif defined(__sun)
70 #include <thread.h>
71 #endif
72
73 /* bionic, glibc >= 2.30, musl >= 1.3 have gettid(), so add va_ prefix */
va_gettid()74 static pid_t va_gettid()
75 {
76 #if defined(_WIN32)
77 return GetCurrentThreadId();
78 #elif defined(__linux__)
79 return syscall(__NR_gettid);
80 #elif defined(__DragonFly__) || defined(__FreeBSD__)
81 return pthread_getthreadid_np();
82 #elif defined(__NetBSD__)
83 return _lwp_self();
84 #elif defined(__OpenBSD__)
85 return getthrid();
86 #elif defined(__sun)
87 return thr_self();
88 #else
89 #warning "Cannot get kernel thread identifier on this platform."
90 return (intptr_t)pthread_self();
91 #endif
92 }
93
94 /*
95 * Env. to debug some issue, e.g. the decode/encode issue in a video conference scenerio:
96 * .LIBVA_TRACE=log_file: general VA parameters saved into log_file
97 * .LIBVA_TRACE=FTRACE: trace general VA parameters into linux ftrace framework, use trace-cmd to capture and parse by tracetool in libva-utils
98 * .LIBVA_TRACE_BUFDATA: dump all VA data buffer into log_file
99 * when LIBVA_TRACE in FTRACE mode, all data are redirected to linux ftrace, finally parsed by tracetool
100 * .LIBVA_TRACE_CODEDBUF=coded_clip_file: save the coded clip into file coded_clip_file
101 * .LIBVA_TRACE_SURFACE=yuv_file: save surface YUV into file yuv_file. Use file name to determine
102 * decode/encode or jpeg surfaces
103 * .LIBVA_TRACE_SURFACE_GEOMETRY=WIDTHxHEIGHT+XOFF+YOFF: only save part of surface context into file
104 * due to storage bandwidth limitation
105 */
106
107 /* global settings */
108
109 /* LIBVA_TRACE */
110 int va_trace_flag = 0;
111
112 #define MAX_TRACE_CTX_NUM 64
113 #define TRACE_CTX_ID_MASK (MAX_TRACE_CTX_NUM - 1)
114
115 #define MAX_TRACE_THREAD_NUM 64
116
117 #define MAX_TRACE_BUF_INFO_HASH_SIZE 1024 // 1<<10
118 #define MAX_TRACE_BUF_INFO_HASH_LEVEL 3
119 #define TRACE_BUF_INFO_HASH_ID_MASK (MAX_TRACE_BUF_INFO_HASH_SIZE - 1)
120
121 struct trace_buf_info {
122 int valid;
123
124 VABufferID buf_id;
125 VAContextID ctx_id;
126 };
127
128 struct trace_buf_manager {
129 struct trace_buf_info *pbuf_info[MAX_TRACE_BUF_INFO_HASH_LEVEL];
130 };
131
132 struct trace_log_file {
133 pid_t thread_id;
134 int used;
135
136 char *fn_log;
137 FILE *fp_log;
138 };
139
140 struct trace_log_files_manager {
141 struct trace_log_file log_file[MAX_TRACE_THREAD_NUM];
142 };
143
144 /* per context settings */
145 struct trace_context {
146 struct trace_log_file *plog_file;
147 struct trace_log_file *plog_file_list[MAX_TRACE_THREAD_NUM];
148
149 /* LIBVA_TRACE_CODEDBUF */
150 FILE *trace_fp_codedbuf; /* save the encode result into a file */
151 char *trace_codedbuf_fn; /* file name */
152
153 /* LIBVA_TRACE_SURFACE */
154 FILE *trace_fp_surface; /* save the surface YUV into a file */
155 char *trace_surface_fn; /* file name */
156
157 VAContextID trace_context; /* current context */
158
159 VASurfaceID trace_rendertarget; /* current render target */
160 VAProfile trace_profile; /* current profile for buffers */
161 VAEntrypoint trace_entrypoint; /* current entrypoint */
162
163 unsigned int trace_frame_no; /* current frame NO */
164 unsigned int trace_slice_no; /* current slice NO */
165 unsigned int trace_slice_size; /* current slice buffer size */
166
167 unsigned int trace_surface_width; /* surface dumping geometry */
168 unsigned int trace_surface_height;
169 unsigned int trace_surface_xoff;
170 unsigned int trace_surface_yoff;
171
172 unsigned int trace_frame_width; /* current frame width */
173 unsigned int trace_frame_height; /* current frame height */
174
175 unsigned int pts; /* IVF header information */
176
177 pid_t created_thd_id;
178 };
179
180 struct trace_config_info {
181 int valid;
182 VAConfigID config_id;
183
184 VAProfile trace_profile;
185 VAEntrypoint trace_entrypoint;
186
187 pid_t created_thd_id;
188 };
189
190 struct va_trace {
191 struct trace_context *ptra_ctx[MAX_TRACE_CTX_NUM + 1];
192 int context_num;
193 struct trace_buf_manager buf_manager;
194 struct trace_log_files_manager log_files_manager;
195 struct trace_config_info config_info[MAX_TRACE_CTX_NUM];
196
197 char *fn_log_env;
198 char *fn_codedbuf_env;
199 char *fn_surface_env;
200 pthread_mutex_t resource_mutex;
201 pthread_mutex_t context_mutex;
202 VADisplay dpy;
203 int ftrace_fd;
204 };
205
206 #define LOCK_RESOURCE(pva_trace) \
207 if(pva_trace) \
208 pthread_mutex_lock(&pva_trace->resource_mutex)
209
210 #define UNLOCK_RESOURCE(pva_trace) \
211 if(pva_trace) \
212 pthread_mutex_unlock(&pva_trace->resource_mutex)
213
214 #define LOCK_CONTEXT(pva_trace) \
215 if(pva_trace) \
216 pthread_mutex_lock(&pva_trace->context_mutex)
217
218 #define UNLOCK_CONTEXT(pva_trace) \
219 if(pva_trace) \
220 pthread_mutex_unlock(&pva_trace->context_mutex)
221
222 #define DPY2TRACECTX(dpy, context, buf_id) \
223 struct va_trace *pva_trace = NULL; \
224 struct trace_context *trace_ctx = NULL; \
225 VAContextID ctx_id = context; \
226 \
227 pva_trace = (struct va_trace *)(((VADisplayContextP)dpy)->vatrace); \
228 if(!pva_trace) \
229 return; \
230 \
231 if(ctx_id == VA_INVALID_ID) { \
232 if(buf_id != VA_INVALID_ID) \
233 ctx_id = get_ctx_by_buf(pva_trace, buf_id); \
234 else \
235 return; \
236 } \
237 \
238 if (ctx_id != VA_INVALID_ID) { \
239 int temp_idx = get_valid_ctx_idx(pva_trace, ctx_id); \
240 if(temp_idx < MAX_TRACE_CTX_NUM) \
241 trace_ctx = pva_trace->ptra_ctx[temp_idx]; \
242 } \
243 \
244 if(!trace_ctx \
245 || trace_ctx->trace_context != context) { \
246 return; \
247 } \
248 refresh_log_file(pva_trace, trace_ctx)
249
250 #define DPY2TRACE_VIRCTX(dpy) \
251 struct va_trace *pva_trace = NULL; \
252 struct trace_context *trace_ctx = NULL; \
253 \
254 pva_trace = (struct va_trace *)(((VADisplayContextP)dpy)->vatrace); \
255 if(!pva_trace) \
256 return; \
257 \
258 LOCK_CONTEXT(pva_trace); \
259 trace_ctx = pva_trace->ptra_ctx[MAX_TRACE_CTX_NUM]; \
260 if(!trace_ctx) { \
261 UNLOCK_CONTEXT(pva_trace); \
262 return; \
263 } \
264 refresh_log_file(pva_trace, trace_ctx)
265
266 #define DPY2TRACE_VIRCTX_EXIT(pva_trace) \
267 UNLOCK_CONTEXT(pva_trace)
268
269 #define TRACE_FUNCNAME(idx) va_TraceMsg(trace_ctx, "==========%s\n", __func__);
270
271 #define TRACE_NEWLINE() do { \
272 va_TracePrint(trace_ctx, "\n"); \
273 va_TraceMsg(trace_ctx, "") ; \
274 } while (0)
275
276
277 #define VA_TRACE_MAX_SIZE (1024)
278 #define VA_TRACE_HEADER_SIZE (sizeof(uint32_t)*3)
279 #define VA_TRACE_ID (0x45544156) // VATraceEvent in little endian
280 #define FTRACE_ENTRY "/sys/kernel/debug/tracing/trace_marker_raw"
281
282 VAStatus vaBufferInfo(
283 VADisplay dpy,
284 VAContextID context, /* in */
285 VABufferID buf_id, /* in */
286 VABufferType *type, /* out */
287 unsigned int *size, /* out */
288 unsigned int *num_elements /* out */
289 );
290
291 VAStatus vaLockSurface(VADisplay dpy,
292 VASurfaceID surface,
293 unsigned int *fourcc, /* following are output argument */
294 unsigned int *luma_stride,
295 unsigned int *chroma_u_stride,
296 unsigned int *chroma_v_stride,
297 unsigned int *luma_offset,
298 unsigned int *chroma_u_offset,
299 unsigned int *chroma_v_offset,
300 unsigned int *buffer_name,
301 void **buffer
302 );
303
304 VAStatus vaUnlockSurface(VADisplay dpy,
305 VASurfaceID surface
306 );
307
get_valid_config_idx(struct va_trace * pva_trace,VAConfigID config_id)308 static int get_valid_config_idx(
309 struct va_trace *pva_trace,
310 VAConfigID config_id)
311 {
312 int idx = MAX_TRACE_CTX_NUM;
313
314 LOCK_RESOURCE(pva_trace);
315
316 for (idx = 0; idx < MAX_TRACE_CTX_NUM; idx++) {
317 if (pva_trace->config_info[idx].valid &&
318 pva_trace->config_info[idx].config_id == config_id)
319 break;
320 }
321
322 UNLOCK_RESOURCE(pva_trace);
323
324 return idx;
325 }
326
add_trace_config_info(struct va_trace * pva_trace,VAConfigID config_id,VAProfile profile,VAEntrypoint entrypoint)327 static void add_trace_config_info(
328 struct va_trace *pva_trace,
329 VAConfigID config_id,
330 VAProfile profile,
331 VAEntrypoint entrypoint)
332 {
333 struct trace_config_info *pconfig_info;
334 int idx = 0;
335 pid_t thd_id = va_gettid();
336
337 LOCK_RESOURCE(pva_trace);
338
339 for (idx = 0; idx < MAX_TRACE_CTX_NUM; idx++) {
340 if (!pva_trace->config_info[idx].valid ||
341 pva_trace->config_info[idx].config_id == config_id)
342 break;
343 }
344
345 if (idx < MAX_TRACE_CTX_NUM) {
346 pconfig_info = &pva_trace->config_info[idx];
347
348 pconfig_info->valid = 1;
349 pconfig_info->config_id = config_id;
350 pconfig_info->trace_profile = profile;
351 pconfig_info->trace_entrypoint = entrypoint;
352 pconfig_info->created_thd_id = thd_id;
353 }
354
355 UNLOCK_RESOURCE(pva_trace);
356 }
357
delete_trace_config_info(struct va_trace * pva_trace,VAConfigID config_id)358 static void delete_trace_config_info(
359 struct va_trace *pva_trace,
360 VAConfigID config_id)
361 {
362 struct trace_config_info *pconfig_info;
363 int idx = 0;
364
365 LOCK_RESOURCE(pva_trace);
366
367 for (idx = 0; idx < MAX_TRACE_CTX_NUM; idx++) {
368 if (pva_trace->config_info[idx].valid &&
369 pva_trace->config_info[idx].config_id == config_id)
370 break;
371 }
372
373 if (idx < MAX_TRACE_CTX_NUM) {
374 pconfig_info = &pva_trace->config_info[idx];
375
376 pconfig_info->valid = 0;
377 pconfig_info->config_id = -1;
378 }
379
380 UNLOCK_RESOURCE(pva_trace);
381 }
382
get_ctx_by_buf(struct va_trace * pva_trace,VABufferID buf_id)383 static VAContextID get_ctx_by_buf(
384 struct va_trace *pva_trace,
385 VABufferID buf_id)
386 {
387 struct trace_buf_manager *pbuf_mgr = &pva_trace->buf_manager;
388 struct trace_buf_info *pbuf_info = pbuf_mgr->pbuf_info[0];
389 VAContextID context = VA_INVALID_ID;
390 int i = 0, idx = 0;
391
392 LOCK_RESOURCE(pva_trace);
393
394 idx = buf_id & TRACE_BUF_INFO_HASH_ID_MASK;
395 for (i = 0; i < MAX_TRACE_BUF_INFO_HASH_LEVEL; i++) {
396 pbuf_info = pbuf_mgr->pbuf_info[i];
397 if (!pbuf_info)
398 break;
399
400 if (pbuf_info[idx].valid
401 && pbuf_info[idx].buf_id == buf_id) {
402 context = pbuf_info[idx].ctx_id;
403 break;
404 }
405 }
406
407 UNLOCK_RESOURCE(pva_trace);
408
409 return context;
410 }
411
add_trace_buf_info(struct va_trace * pva_trace,VAContextID context,VABufferID buf_id)412 static void add_trace_buf_info(
413 struct va_trace *pva_trace,
414 VAContextID context,
415 VABufferID buf_id)
416 {
417 struct trace_buf_manager *pbuf_mgr = &pva_trace->buf_manager;
418 struct trace_buf_info *pbuf_info = NULL;
419 int i = 0, idx = 0;
420
421 LOCK_RESOURCE(pva_trace);
422
423 idx = buf_id & TRACE_BUF_INFO_HASH_ID_MASK;
424 for (i = 0; i < MAX_TRACE_BUF_INFO_HASH_LEVEL; i++) {
425 pbuf_info = pbuf_mgr->pbuf_info[i];
426 if (!pbuf_info) {
427 pbuf_info = (struct trace_buf_info *)calloc(
428 sizeof(struct trace_buf_info) * MAX_TRACE_BUF_INFO_HASH_SIZE,
429 1);
430 if (!pbuf_info)
431 break;
432
433 pbuf_mgr->pbuf_info[i] = pbuf_info;
434 }
435
436 if (pbuf_info[idx].valid
437 && pbuf_info[idx].buf_id != buf_id)
438 continue;
439
440 pbuf_info[idx].buf_id = buf_id;
441 pbuf_info[idx].ctx_id = context;
442 pbuf_info[idx].valid = 1;
443 break;
444 }
445
446 if (i >= MAX_TRACE_BUF_INFO_HASH_LEVEL)
447 va_errorMessage(pva_trace->dpy, "Add buf info failed\n");
448
449 UNLOCK_RESOURCE(pva_trace);
450 }
451
delete_trace_buf_info(struct va_trace * pva_trace,VABufferID buf_id)452 static void delete_trace_buf_info(
453 struct va_trace *pva_trace,
454 VABufferID buf_id)
455 {
456 struct trace_buf_manager *pbuf_mgr = &pva_trace->buf_manager;
457 struct trace_buf_info *pbuf_info = NULL;
458 int i = 0, idx = 0;
459
460 LOCK_RESOURCE(pva_trace);
461
462 idx = buf_id & TRACE_BUF_INFO_HASH_ID_MASK;
463 for (i = 0; i < MAX_TRACE_BUF_INFO_HASH_LEVEL; i++) {
464 pbuf_info = pbuf_mgr->pbuf_info[i];
465 if (!pbuf_info)
466 break;
467
468 if (pbuf_info[idx].valid
469 && pbuf_info[idx].buf_id == buf_id) {
470 pbuf_info[idx].valid = 0;
471 break;
472 }
473 }
474
475 UNLOCK_RESOURCE(pva_trace);
476 }
477
478 /*
479 static void delete_trace_all_context_buf(
480 struct va_trace *pva_trace,
481 VAContextID context)
482 {
483 struct trace_buf_manager *pbuf_mgr = &pva_trace->buf_manager;
484 struct trace_buf_info *pbuf_info = NULL;
485 int i = 0, j = 0;
486
487 LOCK_RESOURCE(pva_trace);
488
489 for(i = 0;i < MAX_TRACE_BUF_INFO_HASH_LEVEL;i++) {
490 pbuf_info = pbuf_mgr->pbuf_info[i];
491 if(!pbuf_info)
492 break;
493
494 for(j = 0;j < MAX_TRACE_BUF_INFO_HASH_SIZE;j++)
495 if(pbuf_info[j].valid
496 && pbuf_info[j].ctx_id == context)
497 pbuf_info[j].valid = 0;
498 }
499
500 UNLOCK_RESOURCE(pva_trace);
501 }
502 */
503
get_free_ctx_idx(struct va_trace * pva_trace,VAContextID context)504 static int get_free_ctx_idx(
505 struct va_trace *pva_trace,
506 VAContextID context)
507 {
508 int idx;
509
510 LOCK_RESOURCE(pva_trace);
511
512 for (idx = 0; idx < MAX_TRACE_CTX_NUM; idx++)
513 if (!pva_trace->ptra_ctx[idx] ||
514 pva_trace->ptra_ctx[idx]->trace_context == context)
515 break;
516
517 UNLOCK_RESOURCE(pva_trace);
518
519 return idx;
520 }
521
get_valid_ctx_idx(struct va_trace * pva_trace,VAContextID context)522 static int get_valid_ctx_idx(
523 struct va_trace *pva_trace,
524 VAContextID context)
525 {
526 int idx;
527
528 LOCK_RESOURCE(pva_trace);
529
530 for (idx = 0; idx < MAX_TRACE_CTX_NUM; idx++)
531 if (pva_trace->ptra_ctx[idx] &&
532 pva_trace->ptra_ctx[idx]->trace_context == context)
533 break;
534
535 UNLOCK_RESOURCE(pva_trace);
536
537 return idx;
538 }
539
FILE_NAME_SUFFIX(char * env_value,int max_size,char * suffix_str,unsigned int suffix_handle)540 static void FILE_NAME_SUFFIX(
541 char *env_value,
542 int max_size,
543 char *suffix_str,
544 unsigned int suffix_handle)
545 {
546 int tmp = strnlen(env_value, max_size);
547 int left = max_size - tmp;
548 struct timeval tv;
549 int size = 0;
550
551 if (suffix_str)
552 size = strlen(suffix_str);
553
554 if (left < (size + 8 + 10))
555 return;
556
557 if (gettimeofday(&tv, NULL) == 0) {
558 sprintf(env_value + tmp,
559 ".%02d%02d%02d.",
560 (unsigned int)(tv.tv_sec / 3600) % 24,
561 (unsigned int)(tv.tv_sec / 60) % 60,
562 (unsigned int)tv.tv_sec % 60);
563
564 tmp += 8;
565 left -= 8;
566 }
567
568 if (suffix_str) {
569 strcat(env_value + tmp,
570 suffix_str);
571
572 tmp += size;
573 left -= size;
574 }
575
576 if (suffix_handle) {
577 sprintf(env_value + tmp,
578 "0x%08x",
579 suffix_handle);
580 }
581 }
582
open_tracing_specil_file(struct va_trace * pva_trace,struct trace_context * ptra_ctx,int type)583 static int open_tracing_specil_file(
584 struct va_trace *pva_trace,
585 struct trace_context *ptra_ctx,
586 int type) // 0: codedbuf, 1: surface
587 {
588 char *fn_env = type == 0 ?
589 pva_trace->fn_codedbuf_env : pva_trace->fn_surface_env;
590 char env_value[1024];
591 FILE *fp = NULL;
592
593 strncpy(env_value, fn_env, 1024);
594 env_value[1023] = '\0';
595 FILE_NAME_SUFFIX(env_value, 1024,
596 "ctx-", (unsigned int)ptra_ctx->trace_context);
597
598 fn_env = strdup(env_value);
599 if (!fn_env)
600 return -1;
601
602 fp = fopen(fn_env, "w");
603 if (!fp) {
604 free(fn_env);
605
606 return -1;
607 }
608
609 if (type == 0) {
610 ptra_ctx->trace_codedbuf_fn = fn_env;
611 ptra_ctx->trace_fp_codedbuf = fp;
612 va_infoMessage(pva_trace->dpy, "LIBVA_TRACE_CODEDBUF is on, save codedbuf into %s\n",
613 fn_env);
614 } else {
615 ptra_ctx->trace_surface_fn = fn_env;
616 ptra_ctx->trace_fp_surface = fp;
617 va_infoMessage(pva_trace->dpy, "LIBVA_TRACE_SURFACE is on, save surface into %s\n",
618 fn_env);
619 }
620
621 return 0;
622 }
623
open_tracing_log_file(struct va_trace * pva_trace,struct trace_log_file * plog_file,pid_t thd_id)624 static int open_tracing_log_file(
625 struct va_trace *pva_trace,
626 struct trace_log_file *plog_file,
627 pid_t thd_id)
628 {
629 FILE *pfp = NULL;
630 int new_fn_flag = 0;
631
632 if (plog_file->used && plog_file->thread_id != thd_id) {
633 va_errorMessage(pva_trace->dpy, "Try to open a busy log file occupied by other thread\n");
634
635 return -1;
636 }
637
638 if (plog_file->thread_id != thd_id) {
639 char env_value[1024];
640
641 strncpy(env_value, pva_trace->fn_log_env, 1024);
642 env_value[1023] = '\0';
643 FILE_NAME_SUFFIX(env_value, 1024,
644 "thd-", (unsigned int)thd_id);
645
646 if (plog_file->fn_log)
647 free(plog_file->fn_log);
648
649 plog_file->fn_log = strdup(env_value);
650 if (!plog_file->fn_log)
651 goto FAIL;
652
653 new_fn_flag = 1;
654 }
655
656 if (!plog_file->used) {
657 if (new_fn_flag)
658 pfp = fopen(plog_file->fn_log, "w");
659 else
660 pfp = fopen(plog_file->fn_log, "a");
661
662 if (!pfp)
663 goto FAIL;
664
665 va_infoMessage(pva_trace->dpy, "%s %s for the thread 0x%08x\n",
666 new_fn_flag ? "Open new log file" : "Append to log file",
667 plog_file->fn_log, thd_id);
668
669 plog_file->fp_log = pfp;
670 plog_file->thread_id = thd_id;
671 }
672
673 plog_file->used++;
674 return 0;
675
676 FAIL:
677 if (plog_file->fn_log) {
678 free(plog_file->fn_log);
679 plog_file->fn_log = NULL;
680 }
681
682 return -1;
683 }
684
get_log_file_idx_by_thd(struct trace_log_files_manager * plog_files_mgr,pid_t thd_id)685 static int get_log_file_idx_by_thd(
686 struct trace_log_files_manager *plog_files_mgr,
687 pid_t thd_id)
688 {
689 struct trace_log_file *plog_file = plog_files_mgr->log_file;
690 int first_free_idx = MAX_TRACE_THREAD_NUM;
691 int i = 0;
692
693 for (i = 0; i < MAX_TRACE_THREAD_NUM; i++) {
694 if (plog_file[i].thread_id == thd_id)
695 break;
696 else if (!plog_file[i].used &&
697 first_free_idx >= MAX_TRACE_THREAD_NUM)
698 first_free_idx = i;
699 }
700
701 if (i >= MAX_TRACE_THREAD_NUM)
702 i = first_free_idx;
703
704 return i;
705 }
706
start_tracing2log_file(struct va_trace * pva_trace)707 static struct trace_log_file *start_tracing2log_file(
708 struct va_trace *pva_trace)
709 {
710 struct trace_log_files_manager *plog_files_mgr = NULL;
711 struct trace_log_file *plog_file = NULL;
712 pid_t thd_id = va_gettid();
713 int i = 0;
714
715 LOCK_RESOURCE(pva_trace);
716
717 plog_files_mgr = &pva_trace->log_files_manager;
718 i = get_log_file_idx_by_thd(plog_files_mgr, thd_id);
719 if (i < MAX_TRACE_THREAD_NUM) {
720 plog_file = &plog_files_mgr->log_file[i];
721 if (open_tracing_log_file(pva_trace, plog_file, thd_id) < 0) {
722 plog_file = NULL;
723 }
724 }
725
726 UNLOCK_RESOURCE(pva_trace);
727 return plog_file;
728 }
729
stop_tracing2log_file(struct va_trace * pva_trace,struct trace_log_file * plog_file)730 static void stop_tracing2log_file(
731 struct va_trace *pva_trace,
732 struct trace_log_file *plog_file)
733 {
734 LOCK_RESOURCE(pva_trace);
735
736 if (--plog_file->used <= 0) {
737 if (plog_file->fp_log) {
738 fclose(plog_file->fp_log);
739 plog_file->fp_log = NULL;
740 }
741 }
742
743 UNLOCK_RESOURCE(pva_trace);
744 }
745
refresh_log_file(struct va_trace * pva_trace,struct trace_context * ptra_ctx)746 static void refresh_log_file(
747 struct va_trace *pva_trace,
748 struct trace_context *ptra_ctx)
749 {
750 struct trace_log_file *plog_file = NULL;
751 pid_t thd_id = va_gettid();
752 int i = 0;
753
754 plog_file = ptra_ctx->plog_file;
755 if (plog_file && plog_file->thread_id != thd_id) {
756 plog_file = start_tracing2log_file(pva_trace);
757 if (plog_file) {
758 int first_free_idx = -1;
759
760 ptra_ctx->plog_file = plog_file;
761
762 for (i = 0; i < MAX_TRACE_THREAD_NUM; i++) {
763 if (!ptra_ctx->plog_file_list[i]) {
764 if (first_free_idx < 0)
765 first_free_idx = i;
766 } else if (ptra_ctx->plog_file_list[i]->thread_id == thd_id)
767 break;
768 }
769
770 if (i > MAX_TRACE_THREAD_NUM
771 && first_free_idx >= 0)
772 ptra_ctx->plog_file_list[first_free_idx] = plog_file;
773 }
774 }
775 }
776
va_TraceInit(VADisplay dpy)777 void va_TraceInit(VADisplay dpy)
778 {
779 char env_value[1024];
780 struct va_trace *pva_trace = calloc(sizeof(struct va_trace), 1);
781 struct trace_context *trace_ctx = calloc(sizeof(struct trace_context), 1);
782
783 if (pva_trace == NULL || trace_ctx == NULL) {
784 free(pva_trace);
785 free(trace_ctx);
786
787 return;
788 }
789
790 pva_trace->dpy = dpy;
791 pva_trace->ftrace_fd = -1;
792
793 pthread_mutex_init(&pva_trace->resource_mutex, NULL);
794 pthread_mutex_init(&pva_trace->context_mutex, NULL);
795
796
797 if (va_parseConfig("LIBVA_TRACE", &env_value[0]) == 0) {
798 pva_trace->fn_log_env = strdup(env_value);
799 if (strcmp(env_value, "FTRACE") == 0) {
800 pva_trace->ftrace_fd = open(FTRACE_ENTRY, O_WRONLY);
801 if (pva_trace->ftrace_fd >= 0) {
802 va_trace_flag = VA_TRACE_FLAG_FTRACE;
803 va_infoMessage(dpy, "LIBVA_TRACE is active in ftrace mode, use trace-cmd to capture\n");
804 } else {
805 va_errorMessage(dpy, "Open ftrace entry failed (%s)\n", strerror(errno));
806 }
807 } else {
808 trace_ctx->plog_file = start_tracing2log_file(pva_trace);
809 if (trace_ctx->plog_file) {
810 trace_ctx->plog_file_list[0] = trace_ctx->plog_file;
811 va_trace_flag = VA_TRACE_FLAG_LOG;
812
813 va_infoMessage(dpy, "LIBVA_TRACE is on, save log into %s\n",
814 trace_ctx->plog_file->fn_log);
815 } else {
816 va_errorMessage(dpy, "Open file %s failed (%s)\n", env_value, strerror(errno));
817 }
818 }
819 }
820
821 /* may re-get the global settings for multiple context */
822 if ((va_trace_flag & (VA_TRACE_FLAG_LOG | VA_TRACE_FLAG_FTRACE)) && (va_parseConfig("LIBVA_TRACE_BUFDATA", NULL) == 0)) {
823 va_trace_flag |= VA_TRACE_FLAG_BUFDATA;
824
825 va_infoMessage(dpy, "LIBVA_TRACE_BUFDATA is on, dump buffer into log file\n");
826 }
827
828 /* per-context setting */
829 if (va_parseConfig("LIBVA_TRACE_CODEDBUF", &env_value[0]) == 0) {
830 pva_trace->fn_codedbuf_env = strdup(env_value);
831 va_trace_flag |= VA_TRACE_FLAG_CODEDBUF;
832 }
833
834 if (va_parseConfig("LIBVA_TRACE_SURFACE", &env_value[0]) == 0) {
835 pva_trace->fn_surface_env = strdup(env_value);
836
837 /* for surface data dump, it is time-consume, and may
838 * cause some side-effect, so only trace the needed surfaces
839 * to trace encode surface, set the trace file name to sth like *enc*
840 * to trace decode surface, set the trace file name to sth like *dec*
841 * if no dec/enc in file name, set both
842 */
843 if (strstr(env_value, "dec"))
844 va_trace_flag |= VA_TRACE_FLAG_SURFACE_DECODE;
845 if (strstr(env_value, "enc"))
846 va_trace_flag |= VA_TRACE_FLAG_SURFACE_ENCODE;
847 if (strstr(env_value, "jpeg") || strstr(env_value, "jpg"))
848 va_trace_flag |= VA_TRACE_FLAG_SURFACE_JPEG;
849
850 if (va_parseConfig("LIBVA_TRACE_SURFACE_GEOMETRY", &env_value[0]) == 0) {
851 char *p = env_value, *q;
852
853 trace_ctx->trace_surface_width = (unsigned int) strtod(p, &q);
854 p = q + 1; /* skip "x" */
855 trace_ctx->trace_surface_height = (unsigned int) strtod(p, &q);
856 p = q + 1; /* skip "+" */
857 trace_ctx->trace_surface_xoff = (unsigned int) strtod(p, &q);
858 p = q + 1; /* skip "+" */
859 trace_ctx->trace_surface_yoff = (unsigned int) strtod(p, &q);
860
861 va_infoMessage(dpy, "LIBVA_TRACE_SURFACE_GEOMETRY is on, only dump surface %dx%d+%d+%d content\n",
862 trace_ctx->trace_surface_width,
863 trace_ctx->trace_surface_height,
864 trace_ctx->trace_surface_xoff,
865 trace_ctx->trace_surface_yoff);
866 }
867 }
868
869 trace_ctx->trace_context = VA_INVALID_ID;
870 pva_trace->ptra_ctx[MAX_TRACE_CTX_NUM] = trace_ctx;
871
872 ((VADisplayContextP)dpy)->vatrace = (void *)pva_trace;
873
874 if (!va_trace_flag)
875 va_TraceEnd(dpy);
876 }
877
va_TraceEnd(VADisplay dpy)878 void va_TraceEnd(VADisplay dpy)
879 {
880 struct va_trace *pva_trace = NULL;
881 int i = 0;
882
883 pva_trace = (struct va_trace *)(((VADisplayContextP)dpy)->vatrace);
884 if (!pva_trace)
885 return;
886
887 if (pva_trace->fn_log_env)
888 free(pva_trace->fn_log_env);
889
890 if (pva_trace->fn_codedbuf_env)
891 free(pva_trace->fn_codedbuf_env);
892
893 if (pva_trace->fn_surface_env)
894 free(pva_trace->fn_surface_env);
895
896 for (i = 0; i < MAX_TRACE_BUF_INFO_HASH_LEVEL; i++)
897 if (pva_trace->buf_manager.pbuf_info[i])
898 free(pva_trace->buf_manager.pbuf_info[i]);
899
900 for (i = 0; i < MAX_TRACE_THREAD_NUM; i++) {
901 struct trace_log_file *plog_file = NULL;
902
903 plog_file = &pva_trace->log_files_manager.log_file[i];
904 if (plog_file) {
905 if (plog_file->fn_log)
906 free(plog_file->fn_log);
907
908 if (plog_file->fp_log)
909 fclose(plog_file->fp_log);
910 }
911 }
912
913 for (i = 0; i < MAX_TRACE_CTX_NUM; i++) {
914 struct trace_context *trace_ctx = NULL;
915
916 if (pva_trace->context_num <= 0)
917 break;
918
919 trace_ctx = pva_trace->ptra_ctx[i];
920 if (trace_ctx) {
921 if (trace_ctx->trace_codedbuf_fn)
922 free(trace_ctx->trace_codedbuf_fn);
923
924 if (trace_ctx->trace_fp_codedbuf)
925 fclose(trace_ctx->trace_fp_codedbuf);
926
927 if (trace_ctx->trace_surface_fn)
928 free(trace_ctx->trace_surface_fn);
929
930 if (trace_ctx->trace_fp_surface)
931 fclose(trace_ctx->trace_fp_surface);
932
933 free(pva_trace->ptra_ctx[i]);
934 pva_trace->context_num--;
935 }
936 }
937 free(pva_trace->ptra_ctx[MAX_TRACE_CTX_NUM]);
938 // close ftrace file if have
939 if (pva_trace->ftrace_fd >= 0) {
940 close(pva_trace->ftrace_fd);
941 }
942
943 pva_trace->dpy = NULL;
944 pthread_mutex_destroy(&pva_trace->resource_mutex);
945 pthread_mutex_destroy(&pva_trace->context_mutex);
946 free(pva_trace);
947 ((VADisplayContextP)dpy)->vatrace = NULL;
948 }
949
va_TraceVPrint(struct trace_context * trace_ctx,const char * msg,va_list args)950 static void va_TraceVPrint(struct trace_context *trace_ctx, const char *msg, va_list args)
951 {
952 FILE *fp = NULL;
953
954 if (!(va_trace_flag & VA_TRACE_FLAG_LOG)
955 || !trace_ctx->plog_file)
956 return;
957
958 fp = trace_ctx->plog_file->fp_log;
959 if (msg) {
960 vfprintf(fp, msg, args);
961 } else
962 fflush(fp);
963 }
964
va_TracePrint(struct trace_context * trace_ctx,const char * msg,...)965 static void va_TracePrint(struct trace_context *trace_ctx, const char *msg, ...)
966 {
967 va_list args;
968 va_start(args, msg);
969 va_TraceVPrint(trace_ctx, msg, args);
970 va_end(args);
971 }
972
va_TraceMsg(struct trace_context * trace_ctx,const char * msg,...)973 static void va_TraceMsg(struct trace_context *trace_ctx, const char *msg, ...)
974 {
975 va_list args;
976 struct timeval tv;
977
978 if (!msg) {
979 va_TracePrint(trace_ctx, msg);
980 return;
981 }
982
983 if (gettimeofday(&tv, NULL) == 0)
984 va_TracePrint(trace_ctx, "[%04d.%06d]",
985 (unsigned int)tv.tv_sec & 0xffff, (unsigned int)tv.tv_usec);
986
987 if (trace_ctx->trace_context != VA_INVALID_ID)
988 va_TracePrint(trace_ctx,
989 "[ctx 0x%08x]", trace_ctx->trace_context);
990 else
991 va_TracePrint(trace_ctx, "[ctx none]");
992
993 va_start(args, msg);
994 va_TraceVPrint(trace_ctx, msg, args);
995 va_end(args);
996 }
997
va_TraceSurface(VADisplay dpy,VAContextID context)998 static void va_TraceSurface(VADisplay dpy, VAContextID context)
999 {
1000 unsigned int i;
1001 unsigned int fourcc; /* following are output argument */
1002 unsigned int luma_stride;
1003 unsigned int chroma_u_stride;
1004 unsigned int chroma_v_stride;
1005 unsigned int luma_offset;
1006 unsigned int chroma_u_offset;
1007 unsigned int chroma_v_offset;
1008 unsigned int buffer_name;
1009 void *buffer = NULL;
1010 unsigned char *Y_data, *UV_data, *tmp;
1011 unsigned int pixel_byte;
1012 VAStatus va_status;
1013 DPY2TRACECTX(dpy, context, VA_INVALID_ID);
1014
1015 if (!trace_ctx->trace_fp_surface)
1016 return;
1017
1018 va_TraceMsg(trace_ctx, "==========dump surface data in file %s\n", trace_ctx->trace_surface_fn);
1019
1020 va_TraceMsg(trace_ctx, NULL);
1021
1022 va_status = vaLockSurface(
1023 dpy,
1024 trace_ctx->trace_rendertarget,
1025 &fourcc,
1026 &luma_stride, &chroma_u_stride, &chroma_v_stride,
1027 &luma_offset, &chroma_u_offset, &chroma_v_offset,
1028 &buffer_name, &buffer);
1029
1030 if (va_status != VA_STATUS_SUCCESS) {
1031 va_TraceMsg(trace_ctx, "Error:vaLockSurface failed\n");
1032 return;
1033 }
1034
1035 va_TraceMsg(trace_ctx, "\tfourcc = 0x%08x\n", fourcc);
1036 va_TraceMsg(trace_ctx, "\twidth = %d\n", trace_ctx->trace_frame_width);
1037 va_TraceMsg(trace_ctx, "\theight = %d\n", trace_ctx->trace_frame_height);
1038 va_TraceMsg(trace_ctx, "\tluma_stride = %d\n", luma_stride);
1039 va_TraceMsg(trace_ctx, "\tchroma_u_stride = %d\n", chroma_u_stride);
1040 va_TraceMsg(trace_ctx, "\tchroma_v_stride = %d\n", chroma_v_stride);
1041 va_TraceMsg(trace_ctx, "\tluma_offset = %d\n", luma_offset);
1042 va_TraceMsg(trace_ctx, "\tchroma_u_offset = %d\n", chroma_u_offset);
1043 va_TraceMsg(trace_ctx, "\tchroma_v_offset = %d\n", chroma_v_offset);
1044
1045 if (buffer == NULL) {
1046 va_TraceMsg(trace_ctx, "Error:vaLockSurface return NULL buffer\n");
1047 va_TraceMsg(trace_ctx, NULL);
1048
1049 vaUnlockSurface(dpy, trace_ctx->trace_rendertarget);
1050 return;
1051 }
1052 va_TraceMsg(trace_ctx, "\tbuffer location = 0x%p\n", buffer);
1053 va_TraceMsg(trace_ctx, NULL);
1054
1055 Y_data = (unsigned char*)buffer;
1056 UV_data = (unsigned char*)buffer + chroma_u_offset;
1057
1058 if (fourcc == VA_FOURCC_P010)
1059 pixel_byte = 2;
1060 else
1061 pixel_byte = 1;
1062
1063 tmp = Y_data + luma_stride * trace_ctx->trace_surface_yoff;
1064
1065 for (i = 0; i < trace_ctx->trace_surface_height; i++) {
1066 fwrite(tmp + trace_ctx->trace_surface_xoff,
1067 trace_ctx->trace_surface_width,
1068 pixel_byte, trace_ctx->trace_fp_surface);
1069
1070 tmp += luma_stride;
1071 }
1072
1073 tmp = UV_data + chroma_u_stride * trace_ctx->trace_surface_yoff / 2;
1074 if (fourcc == VA_FOURCC_NV12 || fourcc == VA_FOURCC_P010) {
1075 for (i = 0; i < trace_ctx->trace_surface_height / 2; i++) {
1076 fwrite(tmp + trace_ctx->trace_surface_xoff,
1077 trace_ctx->trace_surface_width,
1078 pixel_byte, trace_ctx->trace_fp_surface);
1079
1080 tmp += chroma_u_stride;
1081 }
1082 }
1083
1084 fflush(trace_ctx->trace_fp_surface);
1085
1086 vaUnlockSurface(dpy, trace_ctx->trace_rendertarget);
1087
1088 va_TraceMsg(trace_ctx, NULL);
1089 }
1090
1091
va_TraceInitialize(VADisplay dpy,int * major_version,int * minor_version)1092 void va_TraceInitialize(
1093 VADisplay dpy,
1094 int *major_version, /* out */
1095 int *minor_version /* out */
1096 )
1097 {
1098 DPY2TRACE_VIRCTX(dpy);
1099 TRACE_FUNCNAME(idx);
1100
1101 const char* vendor_string = vaQueryVendorString(dpy);
1102 if (vendor_string)
1103 va_TraceMsg(trace_ctx, "==========\tVA-API vendor string: %s\n", vendor_string);
1104
1105 DPY2TRACE_VIRCTX_EXIT(pva_trace);
1106 }
1107
va_TraceTerminate(VADisplay dpy)1108 void va_TraceTerminate(
1109 VADisplay dpy
1110 )
1111 {
1112 DPY2TRACE_VIRCTX(dpy);
1113 TRACE_FUNCNAME(idx);
1114 va_TraceMsg(trace_ctx, NULL);
1115 DPY2TRACE_VIRCTX_EXIT(pva_trace);
1116 }
1117
1118
va_TraceCreateConfig(VADisplay dpy,VAProfile profile,VAEntrypoint entrypoint,VAConfigAttrib * attrib_list,int num_attribs,VAConfigID * config_id)1119 void va_TraceCreateConfig(
1120 VADisplay dpy,
1121 VAProfile profile,
1122 VAEntrypoint entrypoint,
1123 VAConfigAttrib *attrib_list,
1124 int num_attribs,
1125 VAConfigID *config_id /* out */
1126 )
1127 {
1128 int i;
1129
1130 DPY2TRACE_VIRCTX(dpy);
1131
1132 TRACE_FUNCNAME(idx);
1133
1134 va_TraceMsg(trace_ctx, "\tprofile = %d, %s\n", profile, vaProfileStr(profile));
1135 va_TraceMsg(trace_ctx, "\tentrypoint = %d, %s\n", entrypoint, vaEntrypointStr(entrypoint));
1136 va_TraceMsg(trace_ctx, "\tnum_attribs = %d\n", num_attribs);
1137 if (attrib_list) {
1138 for (i = 0; i < num_attribs; i++) {
1139 va_TraceMsg(trace_ctx, "\t\tattrib_list[%d].type = 0x%08x, %s\n", i, attrib_list[i].type, vaConfigAttribTypeStr(attrib_list[i].type));
1140 va_TraceMsg(trace_ctx, "\t\tattrib_list[%d].value = 0x%08x\n", i, attrib_list[i].value);
1141 }
1142 }
1143 va_TraceMsg(trace_ctx, NULL);
1144
1145 add_trace_config_info(pva_trace, *config_id, profile, entrypoint);
1146
1147 DPY2TRACE_VIRCTX_EXIT(pva_trace);
1148 }
1149
va_TraceDestroyConfig(VADisplay dpy,VAConfigID config_id)1150 void va_TraceDestroyConfig(
1151 VADisplay dpy,
1152 VAConfigID config_id
1153 )
1154 {
1155 DPY2TRACE_VIRCTX(dpy);
1156
1157 TRACE_FUNCNAME(idx);
1158
1159 va_TraceMsg(trace_ctx, "\tconfig = 0x%08x\n", config_id);
1160 va_TraceMsg(trace_ctx, NULL);
1161
1162 delete_trace_config_info(pva_trace, config_id);
1163
1164 DPY2TRACE_VIRCTX_EXIT(pva_trace);
1165 }
1166
va_TraceSurfaceAttributes(struct trace_context * trace_ctx,VASurfaceAttrib * attrib_list,unsigned int * num_attribs,unsigned int num_surfaces)1167 static void va_TraceSurfaceAttributes(
1168 struct trace_context *trace_ctx,
1169 VASurfaceAttrib *attrib_list,
1170 unsigned int *num_attribs,
1171 unsigned int num_surfaces
1172 )
1173 {
1174 int i, num;
1175 VASurfaceAttrib *p;
1176
1177 if (!attrib_list || !num_attribs)
1178 return;
1179
1180 /* Try to detect VASurfaceAttribMemoryType here, so it's available in case it is
1181 sent in attrib_list after the VASurfaceAttribExternalBufferDescriptor */
1182 int32_t memtype = 0;
1183 for (i = 0; i < *num_attribs; i++) {
1184 if (attrib_list[i].type == VASurfaceAttribMemoryType) {
1185 memtype = attrib_list[i].value.value.i;
1186 break;
1187 }
1188 }
1189
1190 p = attrib_list;
1191 num = *num_attribs;
1192 if (num > VASurfaceAttribCount)
1193 num = VASurfaceAttribCount;
1194
1195 for (i = 0; i < num; i++) {
1196 int type = p->value.type;
1197
1198 va_TraceMsg(trace_ctx, "\tattrib_list[%i] =\n", i);
1199
1200 va_TraceMsg(trace_ctx, "\t\ttype = %d\n", p->type);
1201 va_TraceMsg(trace_ctx, "\t\tflags = %d\n", p->flags);
1202 va_TraceMsg(trace_ctx, "\t\tvalue.type = %d\n", type);
1203 switch (type) {
1204 case VAGenericValueTypeInteger:
1205 va_TraceMsg(trace_ctx, "\t\tvalue.value.i = 0x%08x\n", p->value.value.i);
1206 break;
1207 case VAGenericValueTypeFloat:
1208 va_TraceMsg(trace_ctx, "\t\tvalue.value.f = %f\n", p->value.value.f);
1209 break;
1210 case VAGenericValueTypePointer:
1211 va_TraceMsg(trace_ctx, "\t\tvalue.value.p = %p\n", p->value.value.p);
1212 if ((p->type == VASurfaceAttribExternalBufferDescriptor) && p->value.value.p) {
1213 /* Use memtype to distinguish type as specified in VASurfaceAttribExternalBufferDescriptor docs */
1214 /* If not otherwise stated, the common VASurfaceAttribExternalBuffers should be used. */
1215 if (memtype == 0 /* unspecified in attrib_list */ || memtype == VA_SURFACE_ATTRIB_MEM_TYPE_DRM_PRIME) {
1216 VASurfaceAttribExternalBuffers *tmp = (VASurfaceAttribExternalBuffers *) p->value.value.p;
1217 uint32_t j;
1218
1219 va_TraceMsg(trace_ctx, "\t\t--VASurfaceAttribExternalBufferDescriptor\n");
1220 va_TraceMsg(trace_ctx, "\t\t pixel_format=0x%08x\n", tmp->pixel_format);
1221 va_TraceMsg(trace_ctx, "\t\t width=%d\n", tmp->width);
1222 va_TraceMsg(trace_ctx, "\t\t height=%d\n", tmp->height);
1223 va_TraceMsg(trace_ctx, "\t\t data_size=%d\n", tmp->data_size);
1224 va_TraceMsg(trace_ctx, "\t\t num_planes=%d\n", tmp->num_planes);
1225 va_TraceMsg(trace_ctx, "\t\t pitches[4]=%d %d %d %d\n",
1226 tmp->pitches[0], tmp->pitches[1], tmp->pitches[2], tmp->pitches[3]);
1227 va_TraceMsg(trace_ctx, "\t\t offsets[4]=%d %d %d %d\n",
1228 tmp->offsets[0], tmp->offsets[1], tmp->offsets[2], tmp->offsets[3]);
1229 va_TraceMsg(trace_ctx, "\t\t flags=0x%08x\n", tmp->flags);
1230 va_TraceMsg(trace_ctx, "\t\t num_buffers=0x%08x\n", tmp->num_buffers);
1231 va_TraceMsg(trace_ctx, "\t\t buffers=%p\n", tmp->buffers);
1232 for (j = 0; j < tmp->num_buffers; j++) {
1233 va_TraceMsg(trace_ctx, "\t\t\tbuffers[%d]=%p\n", j, tmp->buffers[j]);
1234 }
1235 } else if (memtype == VA_SURFACE_ATTRIB_MEM_TYPE_DRM_PRIME_2) {
1236 VADRMPRIMESurfaceDescriptor *tmp = (VADRMPRIMESurfaceDescriptor *) p->value.value.p;
1237 uint32_t j, k;
1238
1239 va_TraceMsg(trace_ctx, "\t\t--VADRMPRIMESurfaceDescriptor\n");
1240 va_TraceMsg(trace_ctx, "\t\t pixel_format=0x%08x\n", tmp->fourcc);
1241 va_TraceMsg(trace_ctx, "\t\t width=%d\n", tmp->width);
1242 va_TraceMsg(trace_ctx, "\t\t height=%d\n", tmp->height);
1243 va_TraceMsg(trace_ctx, "\t\t num_objects=0x%08x\n", tmp->num_objects);
1244 for (j = 0; j < tmp->num_objects && tmp->num_objects <= 4; j++) {
1245 va_TraceMsg(trace_ctx, "\t\t\tobjects[%d].fd=%d\n", j, tmp->objects[j].fd);
1246 va_TraceMsg(trace_ctx, "\t\t\tobjects[%d].size=%d\n", j, tmp->objects[j].size);
1247 va_TraceMsg(trace_ctx, "\t\t\tobjects[%d].drm_format_modifier=%llx\n", j, tmp->objects[j].drm_format_modifier);
1248 }
1249 va_TraceMsg(trace_ctx, "\t\t num_layers=%d\n", tmp->num_layers);
1250 for (j = 0; j < tmp->num_layers && tmp->num_layers <= 4; j++) {
1251 va_TraceMsg(trace_ctx, "\t\t\tlayers[%d].drm_format=0x%08x\n", j, tmp->layers[j].drm_format);
1252 va_TraceMsg(trace_ctx, "\t\t\tlayers[%d].num_planes=0x%d\n", j, tmp->layers[j].num_planes);
1253 for (k = 0; k < 4; k++) {
1254 va_TraceMsg(trace_ctx, "\t\t\t\tlayers[%d].object_index[%d]=0x%d\n", j, k, tmp->layers[j].object_index[k]);
1255 va_TraceMsg(trace_ctx, "\t\t\t\tlayers[%d].offset[%d]=0x%d\n", j, k, tmp->layers[j].offset[k]);
1256 va_TraceMsg(trace_ctx, "\t\t\t\tlayers[%d].pitch[%d]=0x%d\n", j, k, tmp->layers[j].pitch[k]);
1257 }
1258 }
1259 } else if (memtype == VA_SURFACE_ATTRIB_MEM_TYPE_DRM_PRIME_3) {
1260 VADRMPRIME3SurfaceDescriptor *tmp = (VADRMPRIME3SurfaceDescriptor *) p->value.value.p;
1261 uint32_t j, k;
1262
1263 va_TraceMsg(trace_ctx, "\t\t--VADRMPRIME3SurfaceDescriptor\n");
1264 va_TraceMsg(trace_ctx, "\t\t pixel_format=0x%08x\n", tmp->fourcc);
1265 va_TraceMsg(trace_ctx, "\t\t width=%d\n", tmp->width);
1266 va_TraceMsg(trace_ctx, "\t\t height=%d\n", tmp->height);
1267 va_TraceMsg(trace_ctx, "\t\t num_objects=0x%08x\n", tmp->num_objects);
1268 va_TraceMsg(trace_ctx, "\t\t flags=0x%08x\n", tmp->flags);
1269 for (j = 0; j < tmp->num_objects && tmp->num_objects <= 4; j++) {
1270 va_TraceMsg(trace_ctx, "\t\t\tobjects[%d].fd=%d\n", j, tmp->objects[j].fd);
1271 va_TraceMsg(trace_ctx, "\t\t\tobjects[%d].size=%d\n", j, tmp->objects[j].size);
1272 va_TraceMsg(trace_ctx, "\t\t\tobjects[%d].drm_format_modifier=%llx\n", j, tmp->objects[j].drm_format_modifier);
1273 }
1274 va_TraceMsg(trace_ctx, "\t\t num_layers=%d\n", tmp->num_layers);
1275 for (j = 0; j < tmp->num_layers && tmp->num_layers <= 4; j++) {
1276 va_TraceMsg(trace_ctx, "\t\t\tlayers[%d].drm_format=0x%08x\n", j, tmp->layers[j].drm_format);
1277 va_TraceMsg(trace_ctx, "\t\t\tlayers[%d].num_planes=0x%d\n", j, tmp->layers[j].num_planes);
1278 for (k = 0; k < 4; k++) {
1279 va_TraceMsg(trace_ctx, "\t\t\t\tlayers[%d].object_index[%d]=0x%d\n", j, k, tmp->layers[j].object_index[k]);
1280 va_TraceMsg(trace_ctx, "\t\t\t\tlayers[%d].offset[%d]=0x%d\n", j, k, tmp->layers[j].offset[k]);
1281 va_TraceMsg(trace_ctx, "\t\t\t\tlayers[%d].pitch[%d]=0x%d\n", j, k, tmp->layers[j].pitch[k]);
1282 }
1283 }
1284 #if defined(_WIN32)
1285 } else if (memtype == VA_SURFACE_ATTRIB_MEM_TYPE_NTHANDLE) {
1286 va_TraceMsg(trace_ctx, "\t\t--Win32 %d surfaces\n", num_surfaces);
1287 HANDLE* surfaces = (HANDLE *) p->value.value.p;
1288 for (uint32_t j = 0; j < num_surfaces; j++) {
1289 va_TraceMsg(trace_ctx, "\t\t\tSurface[%d]: 0x%p (type: HANDLE)\n", j, surfaces[j]);
1290 }
1291 } else if (memtype == VA_SURFACE_ATTRIB_MEM_TYPE_D3D12_RESOURCE) {
1292 va_TraceMsg(trace_ctx, "\t\t--Win32 %d surfaces\n", num_surfaces);
1293 void** surfaces = (void**) p->value.value.p;
1294 for (uint32_t j = 0; j < num_surfaces; j++) {
1295 va_TraceMsg(trace_ctx, "\t\t\tSurface[%d]: 0x%p (type: ID3D12Resource*)\n", j, surfaces[j]);
1296 }
1297 #endif
1298 }
1299 }
1300 break;
1301 case VAGenericValueTypeFunc:
1302 va_TraceMsg(trace_ctx, "\t\tvalue.value.fn = %p\n", p->value.value.fn);
1303 break;
1304 default:
1305 break;
1306 }
1307
1308 p++;
1309 }
1310 }
1311
va_TraceCreateSurfaces(VADisplay dpy,int width,int height,int format,int num_surfaces,VASurfaceID * surfaces,VASurfaceAttrib * attrib_list,unsigned int num_attribs)1312 void va_TraceCreateSurfaces(
1313 VADisplay dpy,
1314 int width,
1315 int height,
1316 int format,
1317 int num_surfaces,
1318 VASurfaceID *surfaces, /* out */
1319 VASurfaceAttrib *attrib_list,
1320 unsigned int num_attribs
1321 )
1322 {
1323 int i;
1324 DPY2TRACE_VIRCTX(dpy);
1325
1326 TRACE_FUNCNAME(idx);
1327
1328 va_TraceMsg(trace_ctx, "\twidth = %d\n", width);
1329 va_TraceMsg(trace_ctx, "\theight = %d\n", height);
1330 va_TraceMsg(trace_ctx, "\tformat = %d\n", format);
1331 va_TraceMsg(trace_ctx, "\tnum_surfaces = %d\n", num_surfaces);
1332
1333 if (surfaces) {
1334 for (i = 0; i < num_surfaces; i++)
1335 va_TraceMsg(trace_ctx, "\t\tsurfaces[%d] = 0x%08x\n", i, surfaces[i]);
1336 }
1337
1338 va_TraceSurfaceAttributes(trace_ctx, attrib_list, &num_attribs, num_surfaces);
1339
1340 va_TraceMsg(trace_ctx, NULL);
1341
1342 DPY2TRACE_VIRCTX_EXIT(pva_trace);
1343 }
1344
va_TraceDestroySurfaces(VADisplay dpy,VASurfaceID * surface_list,int num_surfaces)1345 void va_TraceDestroySurfaces(
1346 VADisplay dpy,
1347 VASurfaceID *surface_list,
1348 int num_surfaces
1349 )
1350 {
1351 int i;
1352 DPY2TRACE_VIRCTX(dpy);
1353
1354 TRACE_FUNCNAME(idx);
1355
1356 if (surface_list) {
1357 for (i = 0; i < num_surfaces; i++)
1358 va_TraceMsg(trace_ctx, "\t\tsurfaces[%d] = 0x%08x\n", i, surface_list[i]);
1359 }
1360
1361 va_TraceMsg(trace_ctx, NULL);
1362
1363 DPY2TRACE_VIRCTX_EXIT(pva_trace);
1364 }
1365
1366
internal_TraceUpdateContext(struct va_trace * pva_trace,int tra_ctx_idx,struct trace_context * new_trace_ctx,VAContextID context,int destroy_flag)1367 static void internal_TraceUpdateContext(
1368 struct va_trace *pva_trace,
1369 int tra_ctx_idx,
1370 struct trace_context *new_trace_ctx,
1371 VAContextID context,
1372 int destroy_flag
1373 )
1374 {
1375 struct trace_context *trace_ctx = NULL;
1376 int i = 0, delete = 1;
1377 pid_t thd_id = va_gettid();
1378
1379 if (tra_ctx_idx >= MAX_TRACE_CTX_NUM)
1380 return;
1381
1382 LOCK_RESOURCE(pva_trace);
1383
1384 trace_ctx = pva_trace->ptra_ctx[tra_ctx_idx];
1385 if (trace_ctx) {
1386 if (!new_trace_ctx &&
1387 trace_ctx->created_thd_id != thd_id
1388 && !destroy_flag) {
1389 delete = 0;
1390 } else {
1391 pva_trace->context_num--;
1392 pva_trace->ptra_ctx[tra_ctx_idx] = NULL;
1393 }
1394 }
1395
1396 if (new_trace_ctx) {
1397 new_trace_ctx->created_thd_id = thd_id;
1398 pva_trace->ptra_ctx[tra_ctx_idx] = new_trace_ctx;
1399 pva_trace->context_num++;
1400 }
1401
1402 UNLOCK_RESOURCE(pva_trace);
1403
1404 if (trace_ctx && delete) {
1405 for (i = 0; i < MAX_TRACE_THREAD_NUM; i++)
1406 if (trace_ctx->plog_file_list[i])
1407 stop_tracing2log_file(pva_trace, trace_ctx->plog_file_list[i]);
1408
1409 if (trace_ctx->trace_codedbuf_fn)
1410 free(trace_ctx->trace_codedbuf_fn);
1411
1412 if (trace_ctx->trace_fp_codedbuf)
1413 fclose(trace_ctx->trace_fp_codedbuf);
1414
1415 if (trace_ctx->trace_surface_fn)
1416 free(trace_ctx->trace_surface_fn);
1417
1418 if (trace_ctx->trace_fp_surface)
1419 fclose(trace_ctx->trace_fp_surface);
1420
1421 //delete_trace_all_context_buf(pva_trace, context);
1422
1423 free(trace_ctx);
1424 }
1425 }
1426
va_TraceCreateContext(VADisplay dpy,VAConfigID config_id,int picture_width,int picture_height,int flag,VASurfaceID * render_targets,int num_render_targets,VAContextID * context)1427 void va_TraceCreateContext(
1428 VADisplay dpy,
1429 VAConfigID config_id,
1430 int picture_width,
1431 int picture_height,
1432 int flag,
1433 VASurfaceID *render_targets,
1434 int num_render_targets,
1435 VAContextID *context /* out */
1436 )
1437 {
1438 struct va_trace *pva_trace = NULL;
1439 struct trace_context *trace_ctx = NULL;
1440 int tra_ctx_id = 0;
1441 int encode = 0, decode = 0, jpeg = 0;
1442 int i;
1443
1444 pva_trace = (struct va_trace *)(((VADisplayContextP)dpy)->vatrace);
1445 if (!context
1446 || *context == VA_INVALID_ID
1447 || !pva_trace) {
1448 va_errorMessage(dpy, "Invalid context id 0x%08x\n",
1449 context == NULL ? 0 : (int)*context);
1450 return;
1451 }
1452
1453 LOCK_CONTEXT(pva_trace);
1454
1455 tra_ctx_id = get_free_ctx_idx(pva_trace, *context);
1456 if (tra_ctx_id >= MAX_TRACE_CTX_NUM) {
1457 va_errorMessage(dpy, "Can't get trace context for ctx 0x%08x\n",
1458 *context);
1459
1460 goto FAIL;
1461 }
1462
1463 trace_ctx = calloc(sizeof(struct trace_context), 1);
1464 if (trace_ctx == NULL) {
1465 va_errorMessage(dpy, "Allocate trace context failed for ctx 0x%08x\n",
1466 *context);
1467
1468 goto FAIL;
1469 }
1470
1471 i = get_valid_config_idx(pva_trace, config_id);
1472 if (i >= MAX_TRACE_CTX_NUM) {
1473 va_errorMessage(dpy, "Can't get trace config id for ctx 0x%08x cfg %x\n",
1474 *context, config_id);
1475
1476 goto FAIL;
1477 }
1478 trace_ctx->trace_profile = pva_trace->config_info[i].trace_profile;
1479 trace_ctx->trace_entrypoint = pva_trace->config_info[i].trace_entrypoint;
1480
1481 if (va_trace_flag & VA_TRACE_FLAG_LOG) {
1482 trace_ctx->plog_file = start_tracing2log_file(pva_trace);
1483 if (!trace_ctx->plog_file) {
1484 va_errorMessage(dpy, "Can't get trace log file for ctx 0x%08x\n",
1485 *context);
1486
1487 goto FAIL;
1488 } else
1489 va_infoMessage(dpy, "Save context 0x%08x into log file %s\n", *context,
1490 trace_ctx->plog_file->fn_log);
1491
1492 trace_ctx->plog_file_list[0] = trace_ctx->plog_file;
1493 }
1494
1495 trace_ctx->trace_context = *context;
1496 TRACE_FUNCNAME(idx);
1497 va_TraceMsg(trace_ctx, "\tcontext = 0x%08x va_trace_flag 0x%x\n", *context, va_trace_flag);
1498 va_TraceMsg(trace_ctx, "\tprofile = %d,%s entrypoint = %d,%s\n", trace_ctx->trace_profile,
1499 vaProfileStr(trace_ctx->trace_profile), trace_ctx->trace_entrypoint,
1500 vaEntrypointStr(trace_ctx->trace_entrypoint));
1501 va_TraceMsg(trace_ctx, "\tconfig = 0x%08x\n", config_id);
1502 va_TraceMsg(trace_ctx, "\twidth = %d\n", picture_width);
1503 va_TraceMsg(trace_ctx, "\theight = %d\n", picture_height);
1504 va_TraceMsg(trace_ctx, "\tflag = 0x%08x\n", flag);
1505 va_TraceMsg(trace_ctx, "\tnum_render_targets = %d\n", num_render_targets);
1506 if (render_targets) {
1507 for (i = 0; i < num_render_targets; i++)
1508 va_TraceMsg(trace_ctx, "\t\trender_targets[%d] = 0x%08x\n", i, render_targets[i]);
1509 }
1510
1511 trace_ctx->trace_frame_no = 0;
1512 trace_ctx->trace_slice_no = 0;
1513
1514 trace_ctx->trace_frame_width = picture_width;
1515 trace_ctx->trace_frame_height = picture_height;
1516
1517 if (trace_ctx->trace_surface_width == 0)
1518 trace_ctx->trace_surface_width = picture_width;
1519 if (trace_ctx->trace_surface_height == 0)
1520 trace_ctx->trace_surface_height = picture_height;
1521
1522 /* avoid to create so many empty files */
1523 encode = (trace_ctx->trace_entrypoint == VAEntrypointEncSlice);
1524 decode = (trace_ctx->trace_entrypoint == VAEntrypointVLD);
1525 jpeg = (trace_ctx->trace_entrypoint == VAEntrypointEncPicture);
1526 if ((encode && (va_trace_flag & VA_TRACE_FLAG_SURFACE_ENCODE)) ||
1527 (decode && (va_trace_flag & VA_TRACE_FLAG_SURFACE_DECODE)) ||
1528 (jpeg && (va_trace_flag & VA_TRACE_FLAG_SURFACE_JPEG))) {
1529 if (open_tracing_specil_file(pva_trace, trace_ctx, 1) < 0) {
1530 va_errorMessage(dpy, "Open surface fail failed for ctx 0x%08x\n", *context);
1531
1532 va_trace_flag &= ~(VA_TRACE_FLAG_SURFACE);
1533 }
1534 }
1535
1536 if (encode && (va_trace_flag & VA_TRACE_FLAG_CODEDBUF)) {
1537 if (open_tracing_specil_file(pva_trace, trace_ctx, 0) < 0) {
1538 va_errorMessage(dpy, "Open codedbuf fail failed for ctx 0x%08x\n", *context);
1539
1540 va_trace_flag &= ~(VA_TRACE_FLAG_CODEDBUF);
1541 }
1542 }
1543
1544 internal_TraceUpdateContext(pva_trace, tra_ctx_id, trace_ctx, *context, 0);
1545
1546 UNLOCK_CONTEXT(pva_trace);
1547 return;
1548
1549 FAIL:
1550 internal_TraceUpdateContext(pva_trace, tra_ctx_id, NULL, *context, 1);
1551
1552 UNLOCK_CONTEXT(pva_trace);
1553
1554 if (trace_ctx)
1555 free(trace_ctx);
1556 }
1557
va_TraceDestroyContext(VADisplay dpy,VAContextID context)1558 void va_TraceDestroyContext(
1559 VADisplay dpy,
1560 VAContextID context
1561 )
1562 {
1563 struct va_trace *pva_trace = NULL;
1564 struct trace_context *trace_ctx = NULL;
1565 int ctx_id = 0;
1566
1567 pva_trace = (struct va_trace *)(((VADisplayContextP)dpy)->vatrace);
1568
1569 if (!pva_trace)
1570 return;
1571
1572 LOCK_CONTEXT(pva_trace);
1573
1574 ctx_id = get_valid_ctx_idx(pva_trace, context);
1575 if (ctx_id < MAX_TRACE_CTX_NUM) {
1576 trace_ctx = pva_trace->ptra_ctx[ctx_id];
1577
1578 if (trace_ctx) {
1579 refresh_log_file(pva_trace, trace_ctx);
1580
1581 internal_TraceUpdateContext(pva_trace,
1582 get_valid_ctx_idx(pva_trace, context),
1583 NULL, context, 0);
1584 }
1585 }
1586
1587 UNLOCK_CONTEXT(pva_trace);
1588 }
1589
va_TraceCreateMFContext(VADisplay dpy,VAMFContextID * mf_context)1590 void va_TraceCreateMFContext(
1591 VADisplay dpy,
1592 VAMFContextID *mf_context /* out */
1593 )
1594 {
1595 DPY2TRACECTX(dpy, VA_INVALID_ID, VA_INVALID_ID);
1596 TRACE_FUNCNAME(idx);
1597 if (mf_context) {
1598 va_TraceMsg(trace_ctx, "\tmf_context = 0x%08x\n", *mf_context);
1599 trace_ctx->trace_context = *mf_context;
1600 } else
1601 trace_ctx->trace_context = VA_INVALID_ID;
1602 }
1603
va_TraceMFAddContext(VADisplay dpy,VAMFContextID mf_context,VAContextID context)1604 void va_TraceMFAddContext(
1605 VADisplay dpy,
1606 VAMFContextID mf_context,
1607 VAContextID context
1608 )
1609 {
1610 DPY2TRACECTX(dpy, mf_context, VA_INVALID_ID);
1611
1612 TRACE_FUNCNAME(idx);
1613 va_TraceMsg(trace_ctx, "\tmf_context = 0x%08x\n", mf_context);
1614 va_TraceMsg(trace_ctx, "\tcontext = 0x%08x\n", context);
1615 }
1616
va_TraceMFReleaseContext(VADisplay dpy,VAMFContextID mf_context,VAContextID context)1617 void va_TraceMFReleaseContext(
1618 VADisplay dpy,
1619 VAMFContextID mf_context,
1620 VAContextID context
1621 )
1622 {
1623 DPY2TRACECTX(dpy, mf_context, VA_INVALID_ID);
1624
1625 TRACE_FUNCNAME(idx);
1626 va_TraceMsg(trace_ctx, "\tmf_context = 0x%08x\n", mf_context);
1627 va_TraceMsg(trace_ctx, "\tcontext = 0x%08x\n", context);
1628 }
1629
va_TraceMFSubmit(VADisplay dpy,VAMFContextID mf_context,VAContextID * contexts,int num_contexts)1630 void va_TraceMFSubmit(
1631 VADisplay dpy,
1632 VAMFContextID mf_context,
1633 VAContextID *contexts,
1634 int num_contexts
1635 )
1636 {
1637 int i;
1638
1639 DPY2TRACECTX(dpy, mf_context, VA_INVALID_ID);
1640
1641 TRACE_FUNCNAME(idx);
1642 va_TraceMsg(trace_ctx, "\tmf_context = 0x%08x\n", mf_context);
1643
1644 for (i = 0; i < num_contexts; i++) {
1645 va_TraceMsg(trace_ctx, "\t\tcontext[%d] = 0x%08x\n", i, contexts[i]);
1646 }
1647 }
1648
va_TraceCreateBuffer(VADisplay dpy,VAContextID context,VABufferType type,unsigned int size,unsigned int num_elements,void * data,VABufferID * buf_id)1649 void va_TraceCreateBuffer(
1650 VADisplay dpy,
1651 VAContextID context, /* in */
1652 VABufferType type, /* in */
1653 unsigned int size, /* in */
1654 unsigned int num_elements, /* in */
1655 void *data, /* in */
1656 VABufferID *buf_id /* out */
1657 )
1658 {
1659 if (!buf_id || *buf_id == VA_INVALID_ID)
1660 return;
1661
1662 DPY2TRACECTX(dpy, context, VA_INVALID_ID);
1663
1664 add_trace_buf_info(pva_trace, context, *buf_id);
1665
1666 /* only trace CodedBuffer */
1667 if (type != VAEncCodedBufferType)
1668 return;
1669
1670 TRACE_FUNCNAME(idx);
1671 va_TraceMsg(trace_ctx, "\tbuf_type=%s\n", vaBufferTypeStr(type));
1672 if (buf_id)
1673 va_TraceMsg(trace_ctx, "\tbuf_id=0x%x\n", *buf_id);
1674 va_TraceMsg(trace_ctx, "\tsize=%u\n", size);
1675 va_TraceMsg(trace_ctx, "\tnum_elements=%u\n", num_elements);
1676
1677 va_TraceMsg(trace_ctx, NULL);
1678 }
1679
va_TraceDestroyBuffer(VADisplay dpy,VABufferID buf_id)1680 void va_TraceDestroyBuffer(
1681 VADisplay dpy,
1682 VABufferID buf_id /* in */
1683 )
1684 {
1685 VABufferType type;
1686 unsigned int size;
1687 unsigned int num_elements;
1688
1689 if (buf_id == VA_INVALID_ID)
1690 return;
1691
1692 DPY2TRACECTX(dpy, VA_INVALID_ID, buf_id);
1693
1694 vaBufferInfo(dpy, trace_ctx->trace_context, buf_id, &type, &size, &num_elements);
1695
1696 delete_trace_buf_info(pva_trace, buf_id);
1697
1698 /* only trace CodedBuffer */
1699 if (type != VAEncCodedBufferType)
1700 return;
1701
1702 TRACE_FUNCNAME(idx);
1703 va_TraceMsg(trace_ctx, "\tbuf_type=%s\n", vaBufferTypeStr(type));
1704 va_TraceMsg(trace_ctx, "\tbuf_id=0x%x\n", buf_id);
1705 va_TraceMsg(trace_ctx, "\tsize=%u\n", size);
1706 va_TraceMsg(trace_ctx, "\tnum_elements=%u\n", num_elements);
1707
1708 va_TraceMsg(trace_ctx, NULL);
1709 }
1710
1711
mem_put_le16(char * mem,unsigned int val)1712 static void mem_put_le16(char *mem, unsigned int val)
1713 {
1714 mem[0] = val;
1715 mem[1] = val >> 8;
1716 }
1717
mem_put_le32(char * mem,unsigned int val)1718 static void mem_put_le32(char *mem, unsigned int val)
1719 {
1720 mem[0] = val;
1721 mem[1] = val >> 8;
1722 mem[2] = val >> 16;
1723 mem[3] = val >> 24;
1724 }
1725
va_TraceCodedBufferIVFHeader(struct trace_context * trace_ctx,void ** pbuf)1726 static void va_TraceCodedBufferIVFHeader(struct trace_context *trace_ctx, void **pbuf)
1727 {
1728 VACodedBufferSegment *buf_list;
1729 unsigned int frame_length = 0;
1730 char header[32];
1731
1732 buf_list = (VACodedBufferSegment *)(*pbuf);
1733
1734 if (ftell(trace_ctx->trace_fp_codedbuf) == 0) { /* write ivf header */
1735 header[0] = 'D';
1736 header[1] = 'K';
1737 header[2] = 'I';
1738 header[3] = 'F';
1739 mem_put_le16(header + 4, 0); /* version */
1740 mem_put_le16(header + 6, 32); /* headersize */
1741 mem_put_le32(header + 8, 0x30385056); /* headersize */
1742 /* write width and height of the first rc_param to IVF file header */
1743 mem_put_le16(header + 12, trace_ctx->trace_frame_width); /* width */
1744 mem_put_le16(header + 14, trace_ctx->trace_frame_height); /* height */
1745 mem_put_le32(header + 16, 30); /* rate */
1746 mem_put_le32(header + 20, 1); /* scale */
1747 mem_put_le32(header + 24, 0xffffffff); /* length */
1748 mem_put_le32(header + 28, 0); /* unused */
1749 fwrite(header, 1, 32, trace_ctx->trace_fp_codedbuf);
1750 }
1751
1752 /* write frame header */
1753 while (buf_list != NULL) {
1754 frame_length += buf_list->size;
1755 buf_list = (VACodedBufferSegment *) buf_list->next;
1756 }
1757 mem_put_le32(header, frame_length);
1758 mem_put_le32(header + 4, trace_ctx->pts & 0xFFFFFFFF);
1759 mem_put_le32(header + 8, 0);
1760 fwrite(header, 1, 12, trace_ctx->trace_fp_codedbuf);
1761 trace_ctx->pts++;
1762
1763 fflush(trace_ctx->trace_fp_codedbuf);
1764 }
1765
va_TraceMapBuffer(VADisplay dpy,VABufferID buf_id,void ** pbuf,uint32_t flags)1766 void va_TraceMapBuffer(
1767 VADisplay dpy,
1768 VABufferID buf_id, /* in */
1769 void **pbuf, /* out */
1770 uint32_t flags /* in */
1771 )
1772 {
1773 VABufferType type;
1774 unsigned int size;
1775 unsigned int num_elements;
1776
1777 VACodedBufferSegment *buf_list;
1778 int i = 0;
1779
1780 DPY2TRACECTX(dpy, VA_INVALID_ID, buf_id);
1781
1782 vaBufferInfo(dpy, trace_ctx->trace_context, buf_id, &type, &size, &num_elements);
1783
1784 /* only trace CodedBuffer */
1785 if (type != VAEncCodedBufferType)
1786 return;
1787
1788 TRACE_FUNCNAME(idx);
1789 va_TraceMsg(trace_ctx, "\tbuf_id=0x%x\n", buf_id);
1790 va_TraceMsg(trace_ctx, "\tbuf_type=%s\n", vaBufferTypeStr(type));
1791 va_TraceMsg(trace_ctx, "\tflags = 0x%x\n", flags);
1792 if ((pbuf == NULL) || (*pbuf == NULL))
1793 return;
1794
1795 if (trace_ctx->trace_profile == VAProfileVP8Version0_3) {
1796 va_TraceMsg(trace_ctx, "\tAdd IVF header information\n");
1797 va_TraceCodedBufferIVFHeader(trace_ctx, pbuf);
1798 }
1799
1800 buf_list = (VACodedBufferSegment *)(*pbuf);
1801 while (buf_list != NULL) {
1802 va_TraceMsg(trace_ctx, "\tCodedbuf[%d] =\n", i++);
1803
1804 va_TraceMsg(trace_ctx, "\t size = %u\n", buf_list->size);
1805 va_TraceMsg(trace_ctx, "\t bit_offset = %u\n", buf_list->bit_offset);
1806 va_TraceMsg(trace_ctx, "\t status = 0x%08x\n", buf_list->status);
1807 va_TraceMsg(trace_ctx, "\t reserved = 0x%08x\n", buf_list->reserved);
1808 va_TraceMsg(trace_ctx, "\t buf = 0x%p\n", buf_list->buf);
1809
1810 if (trace_ctx->trace_fp_codedbuf) {
1811 va_TraceMsg(trace_ctx, "\tDump the content to file\n");
1812 fwrite(buf_list->buf, buf_list->size, 1, trace_ctx->trace_fp_codedbuf);
1813
1814 fflush(trace_ctx->trace_fp_codedbuf);
1815 }
1816
1817 buf_list = buf_list->next;
1818 }
1819 va_TraceMsg(trace_ctx, NULL);
1820 }
1821
va_TraceVABuffers(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * pbuf)1822 static void va_TraceVABuffers(
1823 VADisplay dpy,
1824 VAContextID context,
1825 VABufferID buffer,
1826 VABufferType type,
1827 unsigned int size,
1828 unsigned int num_elements,
1829 void *pbuf
1830 )
1831 {
1832 unsigned int i;
1833 unsigned char *p = pbuf;
1834 FILE *fp = NULL;
1835
1836 DPY2TRACECTX(dpy, context, VA_INVALID_ID);
1837
1838 va_TraceMsg(trace_ctx, "--%s\n", vaBufferTypeStr(type));
1839
1840 if (trace_ctx->plog_file)
1841 fp = trace_ctx->plog_file->fp_log;
1842
1843 if ((va_trace_flag & VA_TRACE_FLAG_BUFDATA) && fp) {
1844 for (i = 0; i < size; i++) {
1845 unsigned char value = p[i];
1846
1847 if (i == 0)
1848 fprintf(fp, "\t\t0x%04x:", i);
1849 else if ((i % 16) == 0)
1850 fprintf(fp, "\n\t\t0x%04x:", i);
1851
1852 fprintf(fp, " %02x", value);
1853 }
1854 fprintf(fp, "\n");
1855 }
1856
1857 va_TraceMsg(trace_ctx, NULL);
1858
1859 return;
1860 }
1861
1862
va_TraceVAPictureParameterBufferMPEG2(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)1863 static void va_TraceVAPictureParameterBufferMPEG2(
1864 VADisplay dpy,
1865 VAContextID context,
1866 VABufferID buffer,
1867 VABufferType type,
1868 unsigned int size,
1869 unsigned int num_elements,
1870 void *data)
1871 {
1872 VAPictureParameterBufferMPEG2 *p = (VAPictureParameterBufferMPEG2 *)data;
1873 DPY2TRACECTX(dpy, context, VA_INVALID_ID);
1874
1875 va_TraceMsg(trace_ctx, "VAPictureParameterBufferMPEG2\n");
1876
1877 va_TraceMsg(trace_ctx, "\thorizontal size= %d\n", p->horizontal_size);
1878 va_TraceMsg(trace_ctx, "\tvertical size= %d\n", p->vertical_size);
1879 va_TraceMsg(trace_ctx, "\tforward reference picture= %d\n", p->forward_reference_picture);
1880 va_TraceMsg(trace_ctx, "\tbackward reference picture= %d\n", p->backward_reference_picture);
1881 va_TraceMsg(trace_ctx, "\tpicture coding type= %d\n", p->picture_coding_type);
1882 va_TraceMsg(trace_ctx, "\tf mode= %d\n", p->f_code);
1883
1884 va_TraceMsg(trace_ctx, "\tpicture coding extension = %d\n", p->picture_coding_extension.value);
1885 va_TraceMsg(trace_ctx, "\tintra_dc_precision= %d\n", p->picture_coding_extension.bits.intra_dc_precision);
1886 va_TraceMsg(trace_ctx, "\tpicture_structure= %d\n", p->picture_coding_extension.bits.picture_structure);
1887 va_TraceMsg(trace_ctx, "\ttop_field_first= %d\n", p->picture_coding_extension.bits.top_field_first);
1888 va_TraceMsg(trace_ctx, "\tframe_pred_frame_dct= %d\n", p->picture_coding_extension.bits.frame_pred_frame_dct);
1889 va_TraceMsg(trace_ctx, "\tconcealment_motion_vectors= %d\n", p->picture_coding_extension.bits.concealment_motion_vectors);
1890 va_TraceMsg(trace_ctx, "\tq_scale_type= %d\n", p->picture_coding_extension.bits.q_scale_type);
1891 va_TraceMsg(trace_ctx, "\tintra_vlc_format= %d\n", p->picture_coding_extension.bits.intra_vlc_format);
1892 va_TraceMsg(trace_ctx, "\talternate_scan= %d\n", p->picture_coding_extension.bits.alternate_scan);
1893 va_TraceMsg(trace_ctx, "\trepeat_first_field= %d\n", p->picture_coding_extension.bits.repeat_first_field);
1894 va_TraceMsg(trace_ctx, "\tprogressive_frame= %d\n", p->picture_coding_extension.bits.progressive_frame);
1895 va_TraceMsg(trace_ctx, "\tis_first_field= %d\n", p->picture_coding_extension.bits.is_first_field);
1896 va_TraceMsg(trace_ctx, NULL);
1897
1898 return;
1899 }
1900
1901
va_TraceVAIQMatrixBufferMPEG2(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)1902 static void va_TraceVAIQMatrixBufferMPEG2(
1903 VADisplay dpy,
1904 VAContextID context,
1905 VABufferID buffer,
1906 VABufferType type,
1907 unsigned int size,
1908 unsigned int num_elements,
1909 void *data)
1910 {
1911 VAIQMatrixBufferMPEG2 *p = (VAIQMatrixBufferMPEG2 *)data;
1912 DPY2TRACECTX(dpy, context, VA_INVALID_ID);
1913 int i;
1914
1915 va_TraceMsg(trace_ctx, "VAIQMatrixBufferMPEG2\n");
1916
1917 va_TraceMsg(trace_ctx, "\tload_intra_quantiser_matrix = %d\n", p->load_intra_quantiser_matrix);
1918 va_TraceMsg(trace_ctx, "\tload_non_intra_quantiser_matrix = %d\n", p->load_non_intra_quantiser_matrix);
1919 va_TraceMsg(trace_ctx, "\tload_chroma_intra_quantiser_matrix = %d\n", p->load_chroma_intra_quantiser_matrix);
1920 va_TraceMsg(trace_ctx, "\tload_chroma_non_intra_quantiser_matrix = %d\n", p->load_chroma_non_intra_quantiser_matrix);
1921 va_TraceMsg(trace_ctx, "\tintra_quantiser_matrix[] = {\n");
1922 for (i = 0; i < 64; i++) {
1923 if (i % 8 == 0) {
1924 if (i)
1925 va_TracePrint(trace_ctx, "\n");
1926 va_TraceMsg(trace_ctx, "\t %3d", p->intra_quantiser_matrix[i]);
1927 } else {
1928 va_TracePrint(trace_ctx, " %3d", p->intra_quantiser_matrix[i]);
1929 }
1930 }
1931 va_TracePrint(trace_ctx, "}\n");
1932
1933 va_TraceMsg(trace_ctx, "\tnon_intra_quantiser_matrix[] = {\n");
1934 for (i = 0; i < 64; i++) {
1935 if (i % 8 == 0) {
1936 if (i)
1937 va_TracePrint(trace_ctx, "\n");
1938 va_TraceMsg(trace_ctx, "\t %3d", p->non_intra_quantiser_matrix[i]);
1939 } else {
1940 va_TracePrint(trace_ctx, " %3d", p->non_intra_quantiser_matrix[i]);
1941 }
1942 }
1943 va_TracePrint(trace_ctx, "}\n");
1944
1945 va_TraceMsg(trace_ctx, "\tchroma_intra_quantiser_matrix[] = {\n");
1946 for (i = 0; i < 64; i++) {
1947 if (i % 8 == 0) {
1948 if (i)
1949 va_TracePrint(trace_ctx, "\n");
1950 va_TraceMsg(trace_ctx, "\t %3d", p->chroma_intra_quantiser_matrix[i]);
1951 } else {
1952 va_TracePrint(trace_ctx, " %3d", p->chroma_intra_quantiser_matrix[i]);
1953 }
1954 }
1955 va_TracePrint(trace_ctx, "}\n");
1956
1957 va_TraceMsg(trace_ctx, "\tchroma_non_intra_quantiser_matrix[] = {\n");
1958 for (i = 0; i < 64; i++) {
1959 if (i % 8 == 0) {
1960 if (i)
1961 va_TracePrint(trace_ctx, "\n");
1962 va_TraceMsg(
1963 trace_ctx, "\t %3d", p->chroma_non_intra_quantiser_matrix[i]);
1964 } else {
1965 va_TracePrint(
1966 trace_ctx, " %3d", p->chroma_non_intra_quantiser_matrix[i]);
1967 }
1968 }
1969 va_TracePrint(trace_ctx, "}\n");
1970
1971 return;
1972 }
1973
1974
va_TraceVASliceParameterBufferMPEG2(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)1975 static void va_TraceVASliceParameterBufferMPEG2(
1976 VADisplay dpy,
1977 VAContextID context,
1978 VABufferID buffer,
1979 VABufferType type,
1980 unsigned int size,
1981 unsigned int num_elements,
1982 void *data)
1983 {
1984 VASliceParameterBufferMPEG2 *p = (VASliceParameterBufferMPEG2 *)data;
1985
1986 DPY2TRACECTX(dpy, context, VA_INVALID_ID);
1987
1988 trace_ctx->trace_slice_no++;
1989
1990 trace_ctx->trace_slice_size = p->slice_data_size;
1991
1992 va_TraceMsg(trace_ctx, "VASliceParameterBufferMPEG2\n");
1993
1994 va_TraceMsg(trace_ctx, "\tslice_data_size = %d\n", p->slice_data_size);
1995 va_TraceMsg(trace_ctx, "\tslice_data_offset = %d\n", p->slice_data_offset);
1996 va_TraceMsg(trace_ctx, "\tslice_data_flag = %d\n", p->slice_data_flag);
1997 va_TraceMsg(trace_ctx, "\tmacroblock_offset = %d\n", p->macroblock_offset);
1998 va_TraceMsg(trace_ctx, "\tslice_horizontal_position = %d\n", p->slice_horizontal_position);
1999 va_TraceMsg(trace_ctx, "\tslice_vertical_position = %d\n", p->slice_vertical_position);
2000 va_TraceMsg(trace_ctx, "\tquantiser_scale_code = %d\n", p->quantiser_scale_code);
2001 va_TraceMsg(trace_ctx, "\tintra_slice_flag = %d\n", p->intra_slice_flag);
2002 va_TraceMsg(trace_ctx, NULL);
2003
2004 return;
2005 }
2006
va_TraceVAPictureParameterBufferJPEG(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)2007 static void va_TraceVAPictureParameterBufferJPEG(
2008 VADisplay dpy,
2009 VAContextID context,
2010 VABufferID buffer,
2011 VABufferType type,
2012 unsigned int size,
2013 unsigned int num_elements,
2014 void *data)
2015 {
2016 int i;
2017 VAPictureParameterBufferJPEGBaseline *p = (VAPictureParameterBufferJPEGBaseline *)data;
2018 DPY2TRACECTX(dpy, context, VA_INVALID_ID);
2019
2020 va_TraceMsg(trace_ctx, "*VAPictureParameterBufferJPEG\n");
2021 va_TraceMsg(trace_ctx, "\tpicture_width = %u\n", p->picture_width);
2022 va_TraceMsg(trace_ctx, "\tpicture_height = %u\n", p->picture_height);
2023 va_TraceMsg(trace_ctx, "\tcomponents = \n");
2024 for (i = 0; i < p->num_components && i < 255; ++i) {
2025 va_TraceMsg(trace_ctx, "\t\t[%d] component_id = %u\n", i, p->components[i].component_id);
2026 va_TraceMsg(trace_ctx, "\t\t[%d] h_sampling_factor = %u\n", i, p->components[i].h_sampling_factor);
2027 va_TraceMsg(trace_ctx, "\t\t[%d] v_sampling_factor = %u\n", i, p->components[i].v_sampling_factor);
2028 va_TraceMsg(trace_ctx, "\t\t[%d] quantiser_table_selector = %u\n", i, p->components[i].quantiser_table_selector);
2029 }
2030 }
2031
va_TraceVAIQMatrixBufferJPEG(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)2032 static void va_TraceVAIQMatrixBufferJPEG(
2033 VADisplay dpy,
2034 VAContextID context,
2035 VABufferID buffer,
2036 VABufferType type,
2037 unsigned int size,
2038 unsigned int num_elements,
2039 void *data)
2040 {
2041 int i, j;
2042 static char tmp[1024];
2043 VAIQMatrixBufferJPEGBaseline *p = (VAIQMatrixBufferJPEGBaseline *)data;
2044 DPY2TRACECTX(dpy, context, VA_INVALID_ID);
2045 va_TraceMsg(trace_ctx, "*VAIQMatrixParameterBufferJPEG\n");
2046 va_TraceMsg(trace_ctx, "\tload_quantiser_table =\n");
2047 for (i = 0; i < 4; ++i) {
2048 va_TraceMsg(trace_ctx, "\t\t[%d] = %u\n", i, p->load_quantiser_table[i]);
2049 }
2050 va_TraceMsg(trace_ctx, "\tquantiser_table =\n");
2051 for (i = 0; i < 4; ++i) {
2052 memset(tmp, 0, sizeof tmp);
2053 for (j = 0; j < 64; ++j) {
2054 sprintf(tmp + strlen(tmp), "%u ", p->quantiser_table[i][j]);
2055 }
2056 va_TraceMsg(trace_ctx, "\t\t[%d] = %s\n", i, tmp);
2057 }
2058 }
2059
va_TraceVASliceParameterBufferJPEG(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)2060 static void va_TraceVASliceParameterBufferJPEG(
2061 VADisplay dpy,
2062 VAContextID context,
2063 VABufferID buffer,
2064 VABufferType type,
2065 unsigned int size,
2066 unsigned int num_elements,
2067 void *data)
2068 {
2069 int i;
2070 VASliceParameterBufferJPEGBaseline *p = (VASliceParameterBufferJPEGBaseline *)data;
2071 DPY2TRACECTX(dpy, context, VA_INVALID_ID);
2072 va_TraceMsg(trace_ctx, "*VASliceParameterBufferJPEG\n");
2073 va_TraceMsg(trace_ctx, "\tslice_data_size = %u\n", p->slice_data_size);
2074 va_TraceMsg(trace_ctx, "\tslice_data_offset = %u\n", p->slice_data_offset);
2075 va_TraceMsg(trace_ctx, "\tslice_data_flag = %u\n", p->slice_data_flag);
2076 va_TraceMsg(trace_ctx, "\tslice_horizontal_position = %u\n", p->slice_horizontal_position);
2077 va_TraceMsg(trace_ctx, "\tslice_vertical_position = %u\n", p->slice_vertical_position);
2078 va_TraceMsg(trace_ctx, "\tcomponents = \n");
2079 for (i = 0; i < p->num_components && i < 4; ++i) {
2080 va_TraceMsg(trace_ctx, "\t\t[%d] component_selector = %u\n", i, p->components[i].component_selector);
2081 va_TraceMsg(trace_ctx, "\t\t[%d] dc_table_selector = %u\n", i, p->components[i].dc_table_selector);
2082 va_TraceMsg(trace_ctx, "\t\t[%d] ac_table_selector = %u\n", i, p->components[i].ac_table_selector);
2083 }
2084 va_TraceMsg(trace_ctx, "\trestart_interval = %u\n", p->restart_interval);
2085 va_TraceMsg(trace_ctx, "\tnum_mcus = %u\n", p->num_mcus);
2086 }
2087
va_TraceVAHuffmanTableBufferJPEG(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)2088 static void va_TraceVAHuffmanTableBufferJPEG(
2089 VADisplay dpy,
2090 VAContextID context,
2091 VABufferID buffer,
2092 VABufferType type,
2093 unsigned int size,
2094 unsigned int num_elements,
2095 void *data)
2096 {
2097 int i, j;
2098 static char tmp[1024];
2099 VAHuffmanTableBufferJPEGBaseline *p = (VAHuffmanTableBufferJPEGBaseline *)data;
2100 DPY2TRACECTX(dpy, context, VA_INVALID_ID);
2101 va_TraceMsg(trace_ctx, "*VAHuffmanTableBufferJPEG\n");
2102
2103 for (i = 0; i < 2; ++i) {
2104 va_TraceMsg(trace_ctx, "\tload_huffman_table[%d] =%u\n", i, p->load_huffman_table[i]);
2105 va_TraceMsg(trace_ctx, "\thuffman_table[%d] =\n", i);
2106 memset(tmp, 0, sizeof tmp);
2107 for (j = 0; j < 16; ++j) {
2108 sprintf(tmp + strlen(tmp), "%u ", p->huffman_table[i].num_dc_codes[j]);
2109 }
2110 va_TraceMsg(trace_ctx, "\t\tnum_dc_codes =%s\n", tmp);
2111 memset(tmp, 0, sizeof tmp);
2112 for (j = 0; j < 12; ++j) {
2113 sprintf(tmp + strlen(tmp), "%u ", p->huffman_table[i].dc_values[j]);
2114 }
2115 va_TraceMsg(trace_ctx, "\t\tdc_values =%s\n", tmp);
2116 memset(tmp, 0, sizeof tmp);
2117 for (j = 0; j < 16; ++j) {
2118 sprintf(tmp + strlen(tmp), "%u ", p->huffman_table[i].num_ac_codes[j]);
2119 }
2120 va_TraceMsg(trace_ctx, "\t\tnum_ac_codes =%s\n", tmp);
2121 memset(tmp, 0, sizeof tmp);
2122 for (j = 0; j < 162; ++j) {
2123 sprintf(tmp + strlen(tmp), "%u ", p->huffman_table[i].ac_values[j]);
2124 }
2125 va_TraceMsg(trace_ctx, "\t\tac_values =%s\n", tmp);
2126 memset(tmp, 0, sizeof tmp);
2127 for (j = 0; j < 2; ++j) {
2128 sprintf(tmp + strlen(tmp), "%u ", p->huffman_table[i].pad[j]);
2129 }
2130 va_TraceMsg(trace_ctx, "\t\tpad =%s\n", tmp);
2131 }
2132 }
2133
va_TraceVAPictureParameterBufferMPEG4(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)2134 static void va_TraceVAPictureParameterBufferMPEG4(
2135 VADisplay dpy,
2136 VAContextID context,
2137 VABufferID buffer,
2138 VABufferType type,
2139 unsigned int size,
2140 unsigned int num_elements,
2141 void *data)
2142 {
2143 int i;
2144 VAPictureParameterBufferMPEG4 *p = (VAPictureParameterBufferMPEG4 *)data;
2145
2146 DPY2TRACECTX(dpy, context, VA_INVALID_ID);
2147
2148 va_TraceMsg(trace_ctx, "*VAPictureParameterBufferMPEG4\n");
2149 va_TraceMsg(trace_ctx, "\tvop_width = %d\n", p->vop_width);
2150 va_TraceMsg(trace_ctx, "\tvop_height = %d\n", p->vop_height);
2151 va_TraceMsg(trace_ctx, "\tforward_reference_picture = %d\n", p->forward_reference_picture);
2152 va_TraceMsg(trace_ctx, "\tbackward_reference_picture = %d\n", p->backward_reference_picture);
2153 va_TraceMsg(trace_ctx, "\tvol_fields value = %d\n", p->vol_fields.value);
2154 va_TraceMsg(trace_ctx, "\tshort_video_header= %d\n", p->vol_fields.bits.short_video_header);
2155 va_TraceMsg(trace_ctx, "\tchroma_format= %d\n", p->vol_fields.bits.chroma_format);
2156 va_TraceMsg(trace_ctx, "\tinterlaced= %d\n", p->vol_fields.bits.interlaced);
2157 va_TraceMsg(trace_ctx, "\tobmc_disable= %d\n", p->vol_fields.bits.obmc_disable);
2158 va_TraceMsg(trace_ctx, "\tsprite_enable= %d\n", p->vol_fields.bits.sprite_enable);
2159 va_TraceMsg(trace_ctx, "\tsprite_warping_accuracy= %d\n", p->vol_fields.bits.sprite_warping_accuracy);
2160 va_TraceMsg(trace_ctx, "\tquant_type= %d\n", p->vol_fields.bits.quant_type);
2161 va_TraceMsg(trace_ctx, "\tquarter_sample= %d\n", p->vol_fields.bits.quarter_sample);
2162 va_TraceMsg(trace_ctx, "\tdata_partitioned= %d\n", p->vol_fields.bits.data_partitioned);
2163 va_TraceMsg(trace_ctx, "\treversible_vlc= %d\n", p->vol_fields.bits.reversible_vlc);
2164 va_TraceMsg(trace_ctx, "\tresync_marker_disable= %d\n", p->vol_fields.bits.resync_marker_disable);
2165 va_TraceMsg(trace_ctx, "\tno_of_sprite_warping_points = %d\n", p->no_of_sprite_warping_points);
2166 va_TraceMsg(trace_ctx, "\tsprite_trajectory_du =");
2167 for (i = 0; i < 3; i++)
2168 va_TraceMsg(trace_ctx, "\t%d", p->sprite_trajectory_du[i]);
2169
2170 va_TraceMsg(trace_ctx, "\n");
2171 va_TraceMsg(trace_ctx, "\tsprite_trajectory_dv =");
2172 for (i = 0; i < 3; i++)
2173 va_TraceMsg(trace_ctx, "\t%d", p->sprite_trajectory_dv[i]);
2174 va_TraceMsg(trace_ctx, "\n");
2175 va_TraceMsg(trace_ctx, "\tvop_fields value = %d\n", p->vop_fields.value);
2176 va_TraceMsg(trace_ctx, "\tvop_coding_type= %d\n", p->vop_fields.bits.vop_coding_type);
2177 va_TraceMsg(trace_ctx, "\tbackward_reference_vop_coding_type= %d\n", p->vop_fields.bits.backward_reference_vop_coding_type);
2178 va_TraceMsg(trace_ctx, "\tvop_rounding_type= %d\n", p->vop_fields.bits.vop_rounding_type);
2179 va_TraceMsg(trace_ctx, "\tintra_dc_vlc_thr= %d\n", p->vop_fields.bits.intra_dc_vlc_thr);
2180 va_TraceMsg(trace_ctx, "\ttop_field_first= %d\n", p->vop_fields.bits.top_field_first);
2181 va_TraceMsg(trace_ctx, "\talternate_vertical_scan_flag= %d\n", p->vop_fields.bits.alternate_vertical_scan_flag);
2182 va_TraceMsg(trace_ctx, "\tvop_fcode_forward = %d\n", p->vop_fcode_forward);
2183 va_TraceMsg(trace_ctx, "\tvop_fcode_backward = %d\n", p->vop_fcode_backward);
2184 va_TraceMsg(trace_ctx, "\tnum_gobs_in_vop = %d\n", p->num_gobs_in_vop);
2185 va_TraceMsg(trace_ctx, "\tnum_macroblocks_in_gob = %d\n", p->num_macroblocks_in_gob);
2186 va_TraceMsg(trace_ctx, "\tTRB = %d\n", p->TRB);
2187 va_TraceMsg(trace_ctx, "\tTRD = %d\n", p->TRD);
2188 va_TraceMsg(trace_ctx, NULL);
2189
2190 return;
2191 }
2192
2193
va_TraceVAIQMatrixBufferMPEG4(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)2194 static void va_TraceVAIQMatrixBufferMPEG4(
2195 VADisplay dpy,
2196 VAContextID context,
2197 VABufferID buffer,
2198 VABufferType type,
2199 unsigned int size,
2200 unsigned int num_elements,
2201 void *data)
2202 {
2203 int i;
2204 VAIQMatrixBufferMPEG4 *p = (VAIQMatrixBufferMPEG4 *)data;
2205 DPY2TRACECTX(dpy, context, VA_INVALID_ID);
2206
2207 va_TraceMsg(trace_ctx, "VAIQMatrixBufferMPEG4\n");
2208
2209 va_TraceMsg(trace_ctx, "\tload_intra_quant_mat = %d\n", p->load_intra_quant_mat);
2210 va_TraceMsg(trace_ctx, "\tload_non_intra_quant_mat = %d\n", p->load_non_intra_quant_mat);
2211 va_TraceMsg(trace_ctx, "\tintra_quant_mat =\n");
2212 for (i = 0; i < 64; i++)
2213 va_TraceMsg(trace_ctx, "\t\t%d\n", p->intra_quant_mat[i]);
2214
2215 va_TraceMsg(trace_ctx, "\tnon_intra_quant_mat =\n");
2216 for (i = 0; i < 64; i++)
2217 va_TraceMsg(trace_ctx, "\t\t%d\n", p->non_intra_quant_mat[i]);
2218 va_TraceMsg(trace_ctx, NULL);
2219
2220 return;
2221 }
2222
va_TraceVAEncSequenceParameterBufferMPEG2(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)2223 static void va_TraceVAEncSequenceParameterBufferMPEG2(
2224 VADisplay dpy,
2225 VAContextID context,
2226 VABufferID buffer,
2227 VABufferType type,
2228 unsigned int size,
2229 unsigned int num_elements,
2230 void *data)
2231 {
2232 VAEncSequenceParameterBufferMPEG2 *p = (VAEncSequenceParameterBufferMPEG2 *)data;
2233 DPY2TRACECTX(dpy, context, VA_INVALID_ID);
2234
2235 va_TraceMsg(trace_ctx, "\t--VAEncSequenceParameterBufferMPEG2\n");
2236
2237 va_TraceMsg(trace_ctx, "\tintra_period = %d\n", p->intra_period);
2238 va_TraceMsg(trace_ctx, "\tbits_per_second = %d\n", p->bits_per_second);
2239 va_TraceMsg(trace_ctx, "\tframe_rate = %f\n", p->frame_rate);
2240 va_TraceMsg(trace_ctx, "\tvbv_buffer_size = %d\n", p->vbv_buffer_size);
2241 va_TraceMsg(trace_ctx, NULL);
2242
2243 return;
2244 }
2245
va_TraceVAEncSequenceParameterBufferMPEG4(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)2246 static void va_TraceVAEncSequenceParameterBufferMPEG4(
2247 VADisplay dpy,
2248 VAContextID context,
2249 VABufferID buffer,
2250 VABufferType type,
2251 unsigned int size,
2252 unsigned int num_elements,
2253 void *data)
2254 {
2255 VAEncSequenceParameterBufferMPEG4 *p = (VAEncSequenceParameterBufferMPEG4 *)data;
2256 DPY2TRACECTX(dpy, context, VA_INVALID_ID);
2257
2258 va_TraceMsg(trace_ctx, "\t--VAEncSequenceParameterBufferMPEG4\n");
2259
2260 va_TraceMsg(trace_ctx, "\tprofile_and_level_indication = %d\n", p->profile_and_level_indication);
2261 va_TraceMsg(trace_ctx, "\tintra_period = %d\n", p->intra_period);
2262 va_TraceMsg(trace_ctx, "\tvideo_object_layer_width = %d\n", p->video_object_layer_width);
2263 va_TraceMsg(trace_ctx, "\tvideo_object_layer_height = %d\n", p->video_object_layer_height);
2264 va_TraceMsg(trace_ctx, "\tvop_time_increment_resolution = %d\n", p->vop_time_increment_resolution);
2265 va_TraceMsg(trace_ctx, "\tfixed_vop_rate = %d\n", p->fixed_vop_rate);
2266 va_TraceMsg(trace_ctx, "\tfixed_vop_time_increment = %d\n", p->fixed_vop_time_increment);
2267 va_TraceMsg(trace_ctx, "\tbits_per_second = %d\n", p->bits_per_second);
2268 va_TraceMsg(trace_ctx, "\tframe_rate = %d\n", p->frame_rate);
2269 va_TraceMsg(trace_ctx, "\tinitial_qp = %d\n", p->initial_qp);
2270 va_TraceMsg(trace_ctx, "\tmin_qp = %d\n", p->min_qp);
2271 va_TraceMsg(trace_ctx, NULL);
2272
2273 return;
2274 }
2275
va_TraceVAEncPictureParameterBufferMPEG4(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)2276 static void va_TraceVAEncPictureParameterBufferMPEG4(
2277 VADisplay dpy,
2278 VAContextID context,
2279 VABufferID buffer,
2280 VABufferType type,
2281 unsigned int size,
2282 unsigned int num_elements,
2283 void *data)
2284 {
2285 VAEncPictureParameterBufferMPEG4 *p = (VAEncPictureParameterBufferMPEG4 *)data;
2286 DPY2TRACECTX(dpy, context, VA_INVALID_ID);
2287
2288 va_TraceMsg(trace_ctx, "\t--VAEncPictureParameterBufferMPEG4\n");
2289 va_TraceMsg(trace_ctx, "\treference_picture = 0x%08x\n", p->reference_picture);
2290 va_TraceMsg(trace_ctx, "\treconstructed_picture = 0x%08x\n", p->reconstructed_picture);
2291 va_TraceMsg(trace_ctx, "\tcoded_buf = 0x%08x\n", p->coded_buf);
2292 va_TraceMsg(trace_ctx, "\tpicture_width = %d\n", p->picture_width);
2293 va_TraceMsg(trace_ctx, "\tpicture_height = %d\n", p->picture_height);
2294 va_TraceMsg(trace_ctx, "\tmodulo_time_base = %d\n", p->modulo_time_base);
2295 va_TraceMsg(trace_ctx, "\tvop_time_increment = %d\n", p->vop_time_increment);
2296 va_TraceMsg(trace_ctx, "\tpicture_type = %d\n", p->picture_type);
2297 va_TraceMsg(trace_ctx, NULL);
2298
2299 return;
2300 }
2301
2302
va_TraceVASliceParameterBufferMPEG4(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)2303 static void va_TraceVASliceParameterBufferMPEG4(
2304 VADisplay dpy,
2305 VAContextID context,
2306 VABufferID buffer,
2307 VABufferType type,
2308 unsigned int size,
2309 unsigned int num_elements,
2310 void *data)
2311 {
2312 VASliceParameterBufferMPEG4 *p = (VASliceParameterBufferMPEG4 *)data;
2313
2314 DPY2TRACECTX(dpy, context, VA_INVALID_ID);
2315
2316 trace_ctx->trace_slice_no++;
2317
2318 trace_ctx->trace_slice_size = p->slice_data_size;
2319
2320 va_TraceMsg(trace_ctx, "VASliceParameterBufferMPEG4\n");
2321
2322 va_TraceMsg(trace_ctx, "\tslice_data_size = %d\n", p->slice_data_size);
2323 va_TraceMsg(trace_ctx, "\tslice_data_offset = %d\n", p->slice_data_offset);
2324 va_TraceMsg(trace_ctx, "\tslice_data_flag = %d\n", p->slice_data_flag);
2325 va_TraceMsg(trace_ctx, "\tmacroblock_offset = %d\n", p->macroblock_offset);
2326 va_TraceMsg(trace_ctx, "\tmacroblock_number = %d\n", p->macroblock_number);
2327 va_TraceMsg(trace_ctx, "\tquant_scale = %d\n", p->quant_scale);
2328 va_TraceMsg(trace_ctx, NULL);
2329
2330 return;
2331 }
2332
2333
va_TraceFlagIfNotZero(struct trace_context * trace_ctx,const char * name,unsigned int flag)2334 static inline void va_TraceFlagIfNotZero(
2335 struct trace_context *trace_ctx,
2336 const char *name, /* in */
2337 unsigned int flag /* in */
2338 )
2339 {
2340 if (flag != 0) {
2341 va_TraceMsg(trace_ctx, "%s = %x\n", name, flag);
2342 }
2343 }
2344
va_TraceVAPictureParameterBufferVVC(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)2345 static void va_TraceVAPictureParameterBufferVVC(
2346 VADisplay dpy,
2347 VAContextID context,
2348 VABufferID buffer,
2349 VABufferType type,
2350 unsigned int size,
2351 unsigned int num_elements,
2352 void* data)
2353 {
2354 int i, j;
2355 VAPictureParameterBufferVVC* p = (VAPictureParameterBufferVVC*)data;
2356 DPY2TRACECTX(dpy, context, VA_INVALID_ID);
2357
2358 va_TraceMsg(trace_ctx, "\t--VAPictureParameterBufferVVC\n");
2359
2360 va_TraceMsg(trace_ctx, "\tCurrPic.picture_id = 0x%08x\n", p->CurrPic.picture_id);
2361 va_TraceMsg(trace_ctx, "\tCurrPic.frame_idx = %d\n", p->CurrPic.pic_order_cnt);
2362 va_TraceMsg(trace_ctx, "\tCurrPic.flags = %d\n", p->CurrPic.flags);
2363
2364 va_TraceMsg(trace_ctx, "\tReferenceFrames (picture_id-pic_order_cnt-flags):\n");
2365 for (i = 0; i < 15; i++) {
2366 if ((p->ReferenceFrames[i].picture_id != VA_INVALID_SURFACE) &&
2367 ((p->ReferenceFrames[i].flags & VA_PICTURE_VVC_INVALID) == 0)) {
2368 va_TraceMsg(trace_ctx, "\t\t0x%08x-%08d-0x%08x\n",
2369 p->ReferenceFrames[i].picture_id,
2370 p->ReferenceFrames[i].pic_order_cnt,
2371 p->ReferenceFrames[i].flags);
2372 } else
2373 va_TraceMsg(trace_ctx, "\t\tinv-inv-inv-inv-inv\n");
2374 }
2375 va_TraceMsg(trace_ctx, "\n");
2376
2377 va_TraceMsg(trace_ctx, "\tpps_pic_width_in_luma_samples = %d\n", p->pps_pic_width_in_luma_samples);
2378 va_TraceMsg(trace_ctx, "\tpps_pic_height_in_luma_samples = %d\n", p->pps_pic_height_in_luma_samples);
2379 va_TraceMsg(trace_ctx, "\tsps_num_subpics_minus1 = %d\n", p->sps_num_subpics_minus1);
2380 va_TraceMsg(trace_ctx, "\tsps_chroma_format_idc = %d\n", p->sps_chroma_format_idc);
2381 va_TraceMsg(trace_ctx, "\tsps_bitdepth_minus8 = %d\n", p->sps_bitdepth_minus8);
2382 va_TraceMsg(trace_ctx, "\tsps_log2_ctu_size_minus5 = %d\n", p->sps_log2_ctu_size_minus5);
2383 va_TraceMsg(trace_ctx, "\tsps_log2_min_luma_coding_block_size_minus2 = %d\n", p->sps_log2_min_luma_coding_block_size_minus2);
2384 va_TraceMsg(trace_ctx, "\tsps_log2_transform_skip_max_size_minus2 = %d\n", p->sps_log2_transform_skip_max_size_minus2);
2385
2386 va_TraceMsg(trace_ctx, "\tChromaQpTable[3][111] =\n");
2387 va_TraceMsg(trace_ctx, "");
2388 for (i = 0; i < 3; i++) {
2389 for (j = 0; j < 111; j++) {
2390 va_TracePrint(trace_ctx, "\t%d", p->ChromaQpTable[i][j]);
2391 if ((j + 1) % 8 == 0)
2392 TRACE_NEWLINE();
2393 }
2394 TRACE_NEWLINE();
2395 }
2396 va_TracePrint(trace_ctx, "\n");
2397
2398 va_TraceMsg(trace_ctx, "\tsps_six_minus_max_num_merge_cand = %d\n", p->sps_six_minus_max_num_merge_cand);
2399 va_TraceMsg(trace_ctx, "\tsps_five_minus_max_num_subblock_merge_cand = %d\n", p->sps_five_minus_max_num_subblock_merge_cand);
2400 va_TraceMsg(trace_ctx, "\tsps_max_num_merge_cand_minus_max_num_gpm_cand = %d\n", p->sps_max_num_merge_cand_minus_max_num_gpm_cand);
2401 va_TraceMsg(trace_ctx, "\tsps_log2_parallel_merge_level_minus2 = %d\n", p->sps_log2_parallel_merge_level_minus2);
2402 va_TraceMsg(trace_ctx, "\tsps_min_qp_prime_ts = %d\n", p->sps_min_qp_prime_ts);
2403 va_TraceMsg(trace_ctx, "\tsps_six_minus_max_num_ibc_merge_cand = %d\n", p->sps_six_minus_max_num_ibc_merge_cand);
2404 va_TraceMsg(trace_ctx, "\tsps_num_ladf_intervals_minus2 = %d\n", p->sps_num_ladf_intervals_minus2);
2405 va_TraceMsg(trace_ctx, "\tsps_ladf_lowest_interval_qp_offset = %d\n", p->sps_ladf_lowest_interval_qp_offset);
2406
2407 va_TraceMsg(trace_ctx, "\tsps_ladf_qp_offset[4]=\n");
2408 va_TraceMsg(trace_ctx, "");
2409 for (i = 0; i < 4; i++) {
2410 va_TracePrint(trace_ctx, "\t%d", p->sps_ladf_qp_offset[i]);
2411 }
2412 va_TracePrint(trace_ctx, "\n");
2413
2414 va_TraceMsg(trace_ctx, "\tsps_ladf_delta_threshold_minus1[4]=\n");
2415 va_TraceMsg(trace_ctx, "");
2416 for (i = 0; i < 4; i++) {
2417 va_TracePrint(trace_ctx, "\t%d", p->sps_ladf_delta_threshold_minus1[i]);
2418 }
2419 va_TracePrint(trace_ctx, "\n");
2420
2421 va_TraceMsg(trace_ctx, "\treserved32b01[2]=\n");
2422 va_TraceMsg(trace_ctx, "");
2423 for (i = 0; i < 2; i++) {
2424 va_TracePrint(trace_ctx, "\t%d", p->reserved32b01[i]);
2425 }
2426 va_TracePrint(trace_ctx, "\n");
2427
2428 va_TraceMsg(trace_ctx, "\tsps_flags = %llu\n", p->sps_flags.value);
2429 va_TraceMsg(trace_ctx, "\tsps_subpic_info_present_flag = %llu\n", p->sps_flags.bits.sps_subpic_info_present_flag);
2430 va_TraceMsg(trace_ctx, "\tsps_independent_subpics_flag = %llu\n", p->sps_flags.bits.sps_independent_subpics_flag);
2431 va_TraceMsg(trace_ctx, "\tsps_subpic_same_size_flag = %llu\n", p->sps_flags.bits.sps_subpic_same_size_flag);
2432 va_TraceMsg(trace_ctx, "\tsps_entropy_coding_sync_enabled_flag = %llu\n", p->sps_flags.bits.sps_entropy_coding_sync_enabled_flag);
2433 va_TraceMsg(trace_ctx, "\tsps_qtbtt_dual_tree_intra_flag = %llu\n", p->sps_flags.bits.sps_qtbtt_dual_tree_intra_flag);
2434 va_TraceMsg(trace_ctx, "\tsps_max_luma_transform_size_64_flag = %llu\n", p->sps_flags.bits.sps_max_luma_transform_size_64_flag);
2435 va_TraceMsg(trace_ctx, "\tsps_transform_skip_enabled_flag = %llu\n", p->sps_flags.bits.sps_transform_skip_enabled_flag);
2436 va_TraceMsg(trace_ctx, "\tsps_bdpcm_enabled_flag = %llu\n", p->sps_flags.bits.sps_bdpcm_enabled_flag);
2437 va_TraceMsg(trace_ctx, "\tsps_mts_enabled_flag = %llu\n", p->sps_flags.bits.sps_mts_enabled_flag);
2438 va_TraceMsg(trace_ctx, "\tsps_explicit_mts_intra_enabled_flag = %llu\n", p->sps_flags.bits.sps_explicit_mts_intra_enabled_flag);
2439 va_TraceMsg(trace_ctx, "\tsps_explicit_mts_inter_enabled_flag = %llu\n", p->sps_flags.bits.sps_explicit_mts_inter_enabled_flag);
2440 va_TraceMsg(trace_ctx, "\tsps_lfnst_enabled_flag = %llu\n", p->sps_flags.bits.sps_lfnst_enabled_flag);
2441 va_TraceMsg(trace_ctx, "\tsps_joint_cbcr_enabled_flag = %llu\n", p->sps_flags.bits.sps_joint_cbcr_enabled_flag);
2442 va_TraceMsg(trace_ctx, "\tsps_same_qp_table_for_chroma_flag = %llu\n", p->sps_flags.bits.sps_same_qp_table_for_chroma_flag);
2443 va_TraceMsg(trace_ctx, "\tsps_sao_enabled_flag = %llu\n", p->sps_flags.bits.sps_sao_enabled_flag);
2444 va_TraceMsg(trace_ctx, "\tsps_alf_enabled_flag = %llu\n", p->sps_flags.bits.sps_alf_enabled_flag);
2445 va_TraceMsg(trace_ctx, "\tsps_ccalf_enabled_flag = %llu\n", p->sps_flags.bits.sps_ccalf_enabled_flag);
2446 va_TraceMsg(trace_ctx, "\tsps_lmcs_enabled_flag = %llu\n", p->sps_flags.bits.sps_lmcs_enabled_flag);
2447 va_TraceMsg(trace_ctx, "\tsps_sbtmvp_enabled_flag = %llu\n", p->sps_flags.bits.sps_sbtmvp_enabled_flag);
2448 va_TraceMsg(trace_ctx, "\tsps_amvr_enabled_flag = %llu\n", p->sps_flags.bits.sps_amvr_enabled_flag);
2449 va_TraceMsg(trace_ctx, "\tsps_smvd_enabled_flag = %llu\n", p->sps_flags.bits.sps_smvd_enabled_flag);
2450 va_TraceMsg(trace_ctx, "\tsps_mmvd_enabled_flag = %llu\n", p->sps_flags.bits.sps_mmvd_enabled_flag);
2451 va_TraceMsg(trace_ctx, "\tsps_sbt_enabled_flag = %llu\n", p->sps_flags.bits.sps_sbt_enabled_flag);
2452 va_TraceMsg(trace_ctx, "\tsps_affine_enabled_flag = %llu\n", p->sps_flags.bits.sps_affine_enabled_flag);
2453 va_TraceMsg(trace_ctx, "\tsps_6param_affine_enabled_flag = %llu\n", p->sps_flags.bits.sps_6param_affine_enabled_flag);
2454 va_TraceMsg(trace_ctx, "\tsps_affine_amvr_enabled_flag = %llu\n", p->sps_flags.bits.sps_affine_amvr_enabled_flag);
2455 va_TraceMsg(trace_ctx, "\tsps_affine_prof_enabled_flag = %llu\n", p->sps_flags.bits.sps_affine_prof_enabled_flag);
2456 va_TraceMsg(trace_ctx, "\tsps_bcw_enabled_flag = %llu\n", p->sps_flags.bits.sps_bcw_enabled_flag);
2457 va_TraceMsg(trace_ctx, "\tsps_ciip_enabled_flag = %llu\n", p->sps_flags.bits.sps_ciip_enabled_flag);
2458 va_TraceMsg(trace_ctx, "\tsps_gpm_enabled_flag = %llu\n", p->sps_flags.bits.sps_gpm_enabled_flag);
2459 va_TraceMsg(trace_ctx, "\tsps_isp_enabled_flag = %llu\n", p->sps_flags.bits.sps_isp_enabled_flag);
2460 va_TraceMsg(trace_ctx, "\tsps_mrl_enabled_flag = %llu\n", p->sps_flags.bits.sps_mrl_enabled_flag);
2461 va_TraceMsg(trace_ctx, "\tsps_mip_enabled_flag = %llu\n", p->sps_flags.bits.sps_mip_enabled_flag);
2462 va_TraceMsg(trace_ctx, "\tsps_cclm_enabled_flag = %llu\n", p->sps_flags.bits.sps_cclm_enabled_flag);
2463 va_TraceMsg(trace_ctx, "\tsps_chroma_horizontal_collocated_flag = %llu\n", p->sps_flags.bits.sps_chroma_horizontal_collocated_flag);
2464 va_TraceMsg(trace_ctx, "\tsps_chroma_vertical_collocated_flag = %llu\n", p->sps_flags.bits.sps_chroma_vertical_collocated_flag);
2465 va_TraceMsg(trace_ctx, "\tsps_palette_enabled_flag = %llu\n", p->sps_flags.bits.sps_palette_enabled_flag);
2466 va_TraceMsg(trace_ctx, "\tsps_act_enabled_flag = %llu\n", p->sps_flags.bits.sps_act_enabled_flag);
2467 va_TraceMsg(trace_ctx, "\tsps_ibc_enabled_flag = %llu\n", p->sps_flags.bits.sps_ibc_enabled_flag);
2468 va_TraceMsg(trace_ctx, "\tsps_ladf_enabled_flag = %llu\n", p->sps_flags.bits.sps_ladf_enabled_flag);
2469 va_TraceMsg(trace_ctx, "\tsps_explicit_scaling_list_enabled_flag = %llu\n", p->sps_flags.bits.sps_explicit_scaling_list_enabled_flag);
2470 va_TraceMsg(trace_ctx, "\tsps_scaling_matrix_for_lfnst_disabled_flag = %llu\n", p->sps_flags.bits.sps_scaling_matrix_for_lfnst_disabled_flag);
2471 va_TraceMsg(trace_ctx, "\tsps_scaling_matrix_for_alternative_colour_space_disabled_flag = %llu\n", p->sps_flags.bits.sps_scaling_matrix_for_alternative_colour_space_disabled_flag);
2472 va_TraceMsg(trace_ctx, "\tsps_scaling_matrix_designated_colour_space_flag = %llu\n", p->sps_flags.bits.sps_scaling_matrix_designated_colour_space_flag);
2473 va_TraceMsg(trace_ctx, "\tsps_virtual_boundaries_enabled_flag = %llu\n", p->sps_flags.bits.sps_virtual_boundaries_enabled_flag);
2474 va_TraceMsg(trace_ctx, "\tsps_virtual_boundaries_present_flag = %llu\n", p->sps_flags.bits.sps_virtual_boundaries_present_flag);
2475 va_TraceMsg(trace_ctx, "\treserved = %llu\n", p->sps_flags.bits.reserved);
2476
2477 va_TraceMsg(trace_ctx, "\tNumVerVirtualBoundaries = %d\n", p->NumVerVirtualBoundaries);
2478 va_TraceMsg(trace_ctx, "\tNumHorVirtualBoundaries = %d\n", p->NumHorVirtualBoundaries);
2479 va_TraceMsg(trace_ctx, "\tVirtualBoundaryPosX[3]=\n");
2480 va_TraceMsg(trace_ctx, "");
2481 for (i = 0; i < 3; i++) {
2482 va_TracePrint(trace_ctx, "\t%d", p->VirtualBoundaryPosX[i]);
2483 }
2484 va_TracePrint(trace_ctx, "\n");
2485 va_TraceMsg(trace_ctx, "\tVirtualBoundaryPosY[3]=\n");
2486 va_TraceMsg(trace_ctx, "");
2487 for (i = 0; i < 3; i++) {
2488 va_TracePrint(trace_ctx, "\t%d", p->VirtualBoundaryPosY[i]);
2489 }
2490 va_TracePrint(trace_ctx, "\n");
2491
2492 va_TraceMsg(trace_ctx, "\tpps_scaling_win_left_offset = %d\n", p->pps_scaling_win_left_offset);
2493 va_TraceMsg(trace_ctx, "\tpps_scaling_win_right_offset = %d\n", p->pps_scaling_win_right_offset);
2494 va_TraceMsg(trace_ctx, "\tpps_scaling_win_top_offset = %d\n", p->pps_scaling_win_top_offset);
2495 va_TraceMsg(trace_ctx, "\tpps_scaling_win_bottom_offset = %d\n", p->pps_scaling_win_bottom_offset);
2496
2497 va_TraceMsg(trace_ctx, "\tpps_num_exp_tile_columns_minus1 = %d\n", p->pps_num_exp_tile_columns_minus1);
2498 va_TraceMsg(trace_ctx, "\tpps_num_exp_tile_rows_minus1 = %d\n", p->pps_num_exp_tile_rows_minus1);
2499 va_TraceMsg(trace_ctx, "\tpps_num_slices_in_pic_minus1 = %d\n", p->pps_num_slices_in_pic_minus1);
2500 va_TraceMsg(trace_ctx, "\tpps_pic_width_minus_wraparound_offset = %d\n", p->pps_pic_width_minus_wraparound_offset);
2501 va_TraceMsg(trace_ctx, "\tpps_cb_qp_offset = %d\n", p->pps_cb_qp_offset);
2502 va_TraceMsg(trace_ctx, "\tpps_cr_qp_offset = %d\n", p->pps_cr_qp_offset);
2503 va_TraceMsg(trace_ctx, "\tpps_joint_cbcr_qp_offset_value = %d\n", p->pps_joint_cbcr_qp_offset_value);
2504 va_TraceMsg(trace_ctx, "\tpps_chroma_qp_offset_list_len_minus1 = %d\n", p->pps_chroma_qp_offset_list_len_minus1);
2505
2506 va_TraceMsg(trace_ctx, "\tpps_cb_qp_offset_list[6]=\n");
2507 va_TraceMsg(trace_ctx, "");
2508 for (i = 0; i < 6; i++) {
2509 va_TracePrint(trace_ctx, "\t%d", p->pps_cb_qp_offset_list[i]);
2510 }
2511 va_TracePrint(trace_ctx, "\n");
2512
2513 va_TraceMsg(trace_ctx, "\tpps_cr_qp_offset_list[6]=\n");
2514 va_TraceMsg(trace_ctx, "");
2515 for (i = 0; i < 6; i++) {
2516 va_TracePrint(trace_ctx, "\t%d", p->pps_cr_qp_offset_list[i]);
2517 }
2518 va_TracePrint(trace_ctx, "\n");
2519
2520 va_TraceMsg(trace_ctx, "\tpps_joint_cbcr_qp_offset_list[6]=\n");
2521 va_TraceMsg(trace_ctx, "");
2522 for (i = 0; i < 6; i++) {
2523 va_TracePrint(trace_ctx, "\t%d", p->pps_joint_cbcr_qp_offset_list[i]);
2524 }
2525 va_TracePrint(trace_ctx, "\n");
2526
2527 va_TraceMsg(trace_ctx, "\treserved16b01 = %d\n", p->reserved16b01);
2528 va_TraceMsg(trace_ctx, "\treserved32b02[2]=\n");
2529 va_TraceMsg(trace_ctx, "");
2530 for (i = 0; i < 2; i++) {
2531 va_TracePrint(trace_ctx, "\t%d", p->reserved32b02[i]);
2532 }
2533 va_TracePrint(trace_ctx, "\n");
2534
2535 va_TraceMsg(trace_ctx, "\tpps_flags = %d\n", p->pps_flags.value);
2536 va_TraceMsg(trace_ctx, "\tpps_loop_filter_across_tiles_enabled_flag = %d\n", p->pps_flags.bits.pps_loop_filter_across_tiles_enabled_flag);
2537 va_TraceMsg(trace_ctx, "\tpps_rect_slice_flag = %d\n", p->pps_flags.bits.pps_rect_slice_flag);
2538 va_TraceMsg(trace_ctx, "\tpps_single_slice_per_subpic_flag = %d\n", p->pps_flags.bits.pps_single_slice_per_subpic_flag);
2539 va_TraceMsg(trace_ctx, "\tpps_loop_filter_across_slices_enabled_flag = %d\n", p->pps_flags.bits.pps_loop_filter_across_slices_enabled_flag);
2540 va_TraceMsg(trace_ctx, "\tpps_weighted_pred_flag = %d\n", p->pps_flags.bits.pps_weighted_pred_flag);
2541 va_TraceMsg(trace_ctx, "\tpps_weighted_bipred_flag = %d\n", p->pps_flags.bits.pps_weighted_bipred_flag);
2542 va_TraceMsg(trace_ctx, "\tpps_ref_wraparound_enabled_flag = %d\n", p->pps_flags.bits.pps_ref_wraparound_enabled_flag);
2543 va_TraceMsg(trace_ctx, "\tpps_cu_qp_delta_enabled_flag = %d\n", p->pps_flags.bits.pps_cu_qp_delta_enabled_flag);
2544 va_TraceMsg(trace_ctx, "\tpps_cu_chroma_qp_offset_list_enabled_flag = %d\n", p->pps_flags.bits.pps_cu_chroma_qp_offset_list_enabled_flag);
2545 va_TraceMsg(trace_ctx, "\tpps_deblocking_filter_override_enabled_flag = %d\n", p->pps_flags.bits.pps_deblocking_filter_override_enabled_flag);
2546 va_TraceMsg(trace_ctx, "\tpps_deblocking_filter_disabled_flag = %d\n", p->pps_flags.bits.pps_deblocking_filter_disabled_flag);
2547 va_TraceMsg(trace_ctx, "\tpps_dbf_info_in_ph_flag = %d\n", p->pps_flags.bits.pps_dbf_info_in_ph_flag);
2548 va_TraceMsg(trace_ctx, "\tpps_sao_info_in_ph_flag = %d\n", p->pps_flags.bits.pps_sao_info_in_ph_flag);
2549 va_TraceMsg(trace_ctx, "\tpps_alf_info_in_ph_flag = %d\n", p->pps_flags.bits.pps_alf_info_in_ph_flag);
2550 va_TraceMsg(trace_ctx, "\treserved = %d\n", p->pps_flags.bits.reserved);
2551
2552 va_TraceMsg(trace_ctx, "\tph_lmcs_aps_id = %d\n", p->ph_lmcs_aps_id);
2553 va_TraceMsg(trace_ctx, "\tph_scaling_list_aps_id = %d\n", p->ph_scaling_list_aps_id);
2554 va_TraceMsg(trace_ctx, "\tph_log2_diff_min_qt_min_cb_intra_slice_luma = %d\n", p->ph_log2_diff_min_qt_min_cb_intra_slice_luma);
2555 va_TraceMsg(trace_ctx, "\tph_max_mtt_hierarchy_depth_intra_slice_luma = %d\n", p->ph_max_mtt_hierarchy_depth_intra_slice_luma);
2556 va_TraceMsg(trace_ctx, "\tph_log2_diff_max_bt_min_qt_intra_slice_luma = %d\n", p->ph_log2_diff_max_bt_min_qt_intra_slice_luma);
2557 va_TraceMsg(trace_ctx, "\tph_log2_diff_max_tt_min_qt_intra_slice_luma = %d\n", p->ph_log2_diff_max_tt_min_qt_intra_slice_luma);
2558 va_TraceMsg(trace_ctx, "\tph_log2_diff_min_qt_min_cb_intra_slice_chroma = %d\n", p->ph_log2_diff_min_qt_min_cb_intra_slice_chroma);
2559 va_TraceMsg(trace_ctx, "\tph_max_mtt_hierarchy_depth_intra_slice_chroma = %d\n", p->ph_max_mtt_hierarchy_depth_intra_slice_chroma);
2560 va_TraceMsg(trace_ctx, "\tph_log2_diff_max_bt_min_qt_intra_slice_chroma = %d\n", p->ph_log2_diff_max_bt_min_qt_intra_slice_chroma);
2561 va_TraceMsg(trace_ctx, "\tph_log2_diff_max_tt_min_qt_intra_slice_chroma = %d\n", p->ph_log2_diff_max_tt_min_qt_intra_slice_chroma);
2562 va_TraceMsg(trace_ctx, "\tph_cu_qp_delta_subdiv_intra_slice = %d\n", p->ph_cu_qp_delta_subdiv_intra_slice);
2563 va_TraceMsg(trace_ctx, "\tph_cu_chroma_qp_offset_subdiv_intra_slice = %d\n", p->ph_cu_chroma_qp_offset_subdiv_intra_slice);
2564 va_TraceMsg(trace_ctx, "\tph_log2_diff_min_qt_min_cb_inter_slice = %d\n", p->ph_log2_diff_min_qt_min_cb_inter_slice);
2565 va_TraceMsg(trace_ctx, "\tph_max_mtt_hierarchy_depth_inter_slice = %d\n", p->ph_max_mtt_hierarchy_depth_inter_slice);
2566 va_TraceMsg(trace_ctx, "\tph_log2_diff_max_bt_min_qt_inter_slice = %d\n", p->ph_log2_diff_max_bt_min_qt_inter_slice);
2567 va_TraceMsg(trace_ctx, "\tph_log2_diff_max_tt_min_qt_inter_slice = %d\n", p->ph_log2_diff_max_tt_min_qt_inter_slice);
2568 va_TraceMsg(trace_ctx, "\tph_cu_qp_delta_subdiv_inter_slice = %d\n", p->ph_cu_qp_delta_subdiv_inter_slice);
2569 va_TraceMsg(trace_ctx, "\tph_cu_chroma_qp_offset_subdiv_inter_slice = %d\n", p->ph_cu_chroma_qp_offset_subdiv_inter_slice);
2570 va_TraceMsg(trace_ctx, "\treserved16b02 = %d\n", p->reserved16b02);
2571 va_TraceMsg(trace_ctx, "\treserved32b03[2]=\n");
2572 va_TraceMsg(trace_ctx, "");
2573 for (i = 0; i < 2; i++) {
2574 va_TracePrint(trace_ctx, "\t%d", p->reserved32b03[i]);
2575 }
2576 va_TracePrint(trace_ctx, "\n");
2577
2578 va_TraceMsg(trace_ctx, "\tph_flags = %d\n", p->ph_flags.value);
2579 va_TraceMsg(trace_ctx, "\tph_non_ref_pic_flag = %d\n", p->ph_flags.bits.ph_non_ref_pic_flag);
2580 va_TraceMsg(trace_ctx, "\tph_alf_enabled_flag = %d\n", p->ph_flags.bits.ph_alf_enabled_flag);
2581 va_TraceMsg(trace_ctx, "\tph_alf_cb_enabled_flag = %d\n", p->ph_flags.bits.ph_alf_cb_enabled_flag);
2582 va_TraceMsg(trace_ctx, "\tph_alf_cr_enabled_flag = %d\n", p->ph_flags.bits.ph_alf_cr_enabled_flag);
2583 va_TraceMsg(trace_ctx, "\tph_alf_cc_cb_enabled_flag = %d\n", p->ph_flags.bits.ph_alf_cc_cb_enabled_flag);
2584 va_TraceMsg(trace_ctx, "\tph_alf_cc_cr_enabled_flag = %d\n", p->ph_flags.bits.ph_alf_cc_cr_enabled_flag);
2585 va_TraceMsg(trace_ctx, "\tph_lmcs_enabled_flag = %d\n", p->ph_flags.bits.ph_lmcs_enabled_flag);
2586 va_TraceMsg(trace_ctx, "\tph_chroma_residual_scale_flag = %d\n", p->ph_flags.bits.ph_chroma_residual_scale_flag);
2587 va_TraceMsg(trace_ctx, "\tph_explicit_scaling_list_enabled_flag = %d\n", p->ph_flags.bits.ph_explicit_scaling_list_enabled_flag);
2588 va_TraceMsg(trace_ctx, "\tph_virtual_boundaries_present_flag = %d\n", p->ph_flags.bits.ph_virtual_boundaries_present_flag);
2589 va_TraceMsg(trace_ctx, "\tph_temporal_mvp_enabled_flag = %d\n", p->ph_flags.bits.ph_temporal_mvp_enabled_flag);
2590 va_TraceMsg(trace_ctx, "\tph_mmvd_fullpel_only_flag = %d\n", p->ph_flags.bits.ph_mmvd_fullpel_only_flag);
2591 va_TraceMsg(trace_ctx, "\tph_mvd_l1_zero_flag = %d\n", p->ph_flags.bits.ph_mvd_l1_zero_flag);
2592 va_TraceMsg(trace_ctx, "\tph_bdof_disabled_flag = %d\n", p->ph_flags.bits.ph_bdof_disabled_flag);
2593 va_TraceMsg(trace_ctx, "\tph_dmvr_disabled_flag = %d\n", p->ph_flags.bits.ph_dmvr_disabled_flag);
2594 va_TraceMsg(trace_ctx, "\tph_prof_disabled_flag = %d\n", p->ph_flags.bits.ph_prof_disabled_flag);
2595 va_TraceMsg(trace_ctx, "\tph_joint_cbcr_sign_flag = %d\n", p->ph_flags.bits.ph_joint_cbcr_sign_flag);
2596 va_TraceMsg(trace_ctx, "\tph_sao_luma_enabled_flag = %d\n", p->ph_flags.bits.ph_sao_luma_enabled_flag);
2597 va_TraceMsg(trace_ctx, "\tph_sao_chroma_enabled_flag = %d\n", p->ph_flags.bits.ph_sao_chroma_enabled_flag);
2598 va_TraceMsg(trace_ctx, "\tph_deblocking_filter_disabled_flag = %d\n", p->ph_flags.bits.ph_deblocking_filter_disabled_flag);
2599 va_TraceMsg(trace_ctx, "\treserved = %d\n", p->ph_flags.bits.reserved);
2600 va_TraceMsg(trace_ctx, "\treserved32b04 = %d\n", p->reserved32b04);
2601
2602 va_TraceMsg(trace_ctx, "\tPicMiscFlags = %d\n", p->PicMiscFlags.value);
2603 va_TraceMsg(trace_ctx, "\tIntraPicFlag = %d\n", p->PicMiscFlags.fields.IntraPicFlag);
2604 va_TraceMsg(trace_ctx, "\treserved = %d\n", p->PicMiscFlags.fields.reserved);
2605 va_TraceMsg(trace_ctx, "\treserved32b[17]=\n");
2606 va_TraceMsg(trace_ctx, "");
2607 for (i = 0; i < 17; i++) {
2608 va_TracePrint(trace_ctx, "\t%d", p->reserved32b[i]);
2609 }
2610 va_TracePrint(trace_ctx, "\n");
2611 return;
2612 }
2613
va_TraceVASliceParameterBufferVVC(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)2614 static void va_TraceVASliceParameterBufferVVC(
2615 VADisplay dpy,
2616 VAContextID context,
2617 VABufferID buffer,
2618 VABufferType type,
2619 unsigned int size,
2620 unsigned int num_elements,
2621 void* data)
2622 {
2623 int i, j;
2624 VASliceParameterBufferVVC* p = (VASliceParameterBufferVVC*)data;
2625 DPY2TRACECTX(dpy, context, VA_INVALID_ID);
2626
2627 trace_ctx->trace_slice_no++;
2628 trace_ctx->trace_slice_size = p->slice_data_size;
2629
2630 va_TraceMsg(trace_ctx, "\t--VASliceParameterBufferVVC\n");
2631 va_TraceMsg(trace_ctx, "\tslice_data_size = %d\n", p->slice_data_size);
2632 va_TraceMsg(trace_ctx, "\tslice_data_offset = %d\n", p->slice_data_offset);
2633 va_TraceMsg(trace_ctx, "\tslice_data_flag = %d\n", p->slice_data_flag);
2634 va_TraceMsg(trace_ctx, "\tslice_data_byte_offset = %d\n", p->slice_data_byte_offset);
2635
2636 va_TraceMsg(trace_ctx, "\tRefPicList[2][15]=\n");
2637 va_TraceMsg(trace_ctx, "");
2638 for (i = 0; i < 2; i++) {
2639 for (j = 0; j < 15; j++) {
2640 va_TracePrint(trace_ctx, "\t%d", p->RefPicList[i][j]);
2641 if ((j + 1) % 8 == 0)
2642 TRACE_NEWLINE();
2643 }
2644 TRACE_NEWLINE();
2645 }
2646
2647 va_TraceMsg(trace_ctx, "\tsh_subpic_id = %d\n", p->sh_subpic_id);
2648 va_TraceMsg(trace_ctx, "\tsh_slice_address = %d\n", p->sh_slice_address);
2649 va_TraceMsg(trace_ctx, "\tsh_num_tiles_in_slice_minus1 = %d\n", p->sh_num_tiles_in_slice_minus1);
2650 va_TraceMsg(trace_ctx, "\tsh_slice_type = %d\n", p->sh_slice_type);
2651 va_TraceMsg(trace_ctx, "\tsh_num_alf_aps_ids_luma = %d\n", p->sh_num_alf_aps_ids_luma);
2652
2653 va_TraceMsg(trace_ctx, "\tsh_alf_aps_id_luma[7]=\n");
2654 va_TraceMsg(trace_ctx, "");
2655 for (i = 0; i < 7; i++) {
2656 va_TracePrint(trace_ctx, "\t%d", p->sh_alf_aps_id_luma[i]);
2657 }
2658 va_TracePrint(trace_ctx, "\n");
2659
2660 va_TraceMsg(trace_ctx, "\tsh_alf_aps_id_chroma = %d\n", p->sh_alf_aps_id_chroma);
2661 va_TraceMsg(trace_ctx, "\tsh_alf_cc_cb_aps_id = %d\n", p->sh_alf_cc_cb_aps_id);
2662 va_TraceMsg(trace_ctx, "\tsh_alf_cc_cr_aps_id = %d\n", p->sh_alf_cc_cr_aps_id);
2663
2664 va_TraceMsg(trace_ctx, "\tNumRefIdxActive[2]=\n");
2665 va_TraceMsg(trace_ctx, "");
2666 for (i = 0; i < 2; i++) {
2667 va_TracePrint(trace_ctx, "\t%d", p->NumRefIdxActive[i]);
2668 }
2669 va_TracePrint(trace_ctx, "\n");
2670
2671 va_TraceMsg(trace_ctx, "\tsh_collocated_ref_idx = %d\n", p->sh_collocated_ref_idx);
2672 va_TraceMsg(trace_ctx, "\tSliceQpY = %d\n", p->SliceQpY);
2673 va_TraceMsg(trace_ctx, "\tsh_cb_qp_offset = %d\n", p->sh_cb_qp_offset);
2674 va_TraceMsg(trace_ctx, "\tsh_cr_qp_offset = %d\n", p->sh_cr_qp_offset);
2675 va_TraceMsg(trace_ctx, "\tsh_joint_cbcr_qp_offset = %d\n", p->sh_joint_cbcr_qp_offset);
2676 va_TraceMsg(trace_ctx, "\tsh_luma_beta_offset_div2 = %d\n", p->sh_luma_beta_offset_div2);
2677 va_TraceMsg(trace_ctx, "\tsh_luma_tc_offset_div2 = %d\n", p->sh_luma_tc_offset_div2);
2678 va_TraceMsg(trace_ctx, "\tsh_cb_beta_offset_div2 = %d\n", p->sh_cb_beta_offset_div2);
2679 va_TraceMsg(trace_ctx, "\tsh_cb_tc_offset_div2 = %d\n", p->sh_cb_tc_offset_div2);
2680 va_TraceMsg(trace_ctx, "\tsh_cr_beta_offset_div2 = %d\n", p->sh_cr_beta_offset_div2);
2681 va_TraceMsg(trace_ctx, "\tsh_cr_tc_offset_div2 = %d\n", p->sh_cr_tc_offset_div2);
2682 va_TraceMsg(trace_ctx, "\treserved8b[3]=\n");
2683 va_TraceMsg(trace_ctx, "");
2684 for (i = 0; i < 3; i++) {
2685 va_TracePrint(trace_ctx, "\t%d", p->reserved8b[i]);
2686 }
2687 va_TracePrint(trace_ctx, "\n");
2688 va_TraceMsg(trace_ctx, "\treserved32b = %d\n", p->reserved32b);
2689
2690 va_TraceMsg(trace_ctx, "\tWPInfo=\n");
2691 va_TraceMsg(trace_ctx, "\tluma_log2_weight_denom = %d\n", p->WPInfo.luma_log2_weight_denom);
2692 va_TraceMsg(trace_ctx, "\tdelta_chroma_log2_weight_denom = %d\n", p->WPInfo.delta_chroma_log2_weight_denom);
2693 va_TraceMsg(trace_ctx, "\tnum_l0_weights = %d\n", p->WPInfo.num_l0_weights);
2694 va_TraceMsg(trace_ctx, "\tluma_weight_l0_flag[15]=\n");
2695 for (i = 0; i < 15; i++) {
2696 va_TraceMsg(trace_ctx, "\t%d", p->WPInfo.luma_weight_l0_flag[i]);
2697 if ((i + 1) % 8 == 0)
2698 TRACE_NEWLINE();
2699 }
2700 va_TracePrint(trace_ctx, "\n");
2701
2702 va_TraceMsg(trace_ctx, "\tchroma_weight_l0_flag[15]=\n");
2703 for (i = 0; i < 15; i++) {
2704 va_TraceMsg(trace_ctx, "\t%d", p->WPInfo.chroma_weight_l0_flag[i]);
2705 if ((i + 1) % 8 == 0)
2706 TRACE_NEWLINE();
2707 }
2708 va_TracePrint(trace_ctx, "\n");
2709
2710 va_TraceMsg(trace_ctx, "\tdelta_luma_weight_l0[15]=\n");
2711 for (i = 0; i < 15; i++) {
2712 va_TraceMsg(trace_ctx, "\t%d", p->WPInfo.delta_luma_weight_l0[i]);
2713 if ((i + 1) % 8 == 0)
2714 TRACE_NEWLINE();
2715 }
2716 va_TracePrint(trace_ctx, "\n");
2717
2718 va_TraceMsg(trace_ctx, "\tluma_offset_l0[15]=\n");
2719 for (i = 0; i < 15; i++) {
2720 va_TraceMsg(trace_ctx, "\t%d", p->WPInfo.luma_offset_l0[i]);
2721 if ((i + 1) % 8 == 0)
2722 TRACE_NEWLINE();
2723 }
2724 va_TracePrint(trace_ctx, "\n");
2725
2726 va_TraceMsg(trace_ctx, "\tdelta_chroma_weight_l0[15][2] = \n");
2727 va_TraceMsg(trace_ctx, "");
2728 for (i = 0; i < 15; i++) {
2729 for (j = 0; j < 2; j++) {
2730 va_TracePrint(trace_ctx, "\t%d", p->WPInfo.delta_chroma_weight_l0[i][j]);
2731 }
2732 TRACE_NEWLINE();
2733 }
2734 va_TracePrint(trace_ctx, "\n");
2735
2736 va_TraceMsg(trace_ctx, "\tdelta_chroma_offset_l0[15][2] = \n");
2737 va_TraceMsg(trace_ctx, "");
2738 for (i = 0; i < 15; i++) {
2739 for (j = 0; j < 2; j++) {
2740 va_TracePrint(trace_ctx, "\t%d", p->WPInfo.delta_chroma_offset_l0[i][j]);
2741 }
2742 TRACE_NEWLINE();
2743 }
2744 va_TracePrint(trace_ctx, "\n");
2745
2746 va_TraceMsg(trace_ctx, "\tnum_l1_weights = %d\n", p->WPInfo.num_l1_weights);
2747 va_TraceMsg(trace_ctx, "\tluma_weight_l1_flag[15]=\n");
2748 for (i = 0; i < 15; i++) {
2749 va_TraceMsg(trace_ctx, "\t%d", p->WPInfo.luma_weight_l1_flag[i]);
2750 if ((i + 1) % 8 == 0)
2751 TRACE_NEWLINE();
2752 }
2753 va_TracePrint(trace_ctx, "\n");
2754
2755 va_TraceMsg(trace_ctx, "\tchroma_weight_l1_flag[15]=\n");
2756 for (i = 0; i < 15; i++) {
2757 va_TraceMsg(trace_ctx, "\t%d", p->WPInfo.chroma_weight_l1_flag[i]);
2758 if ((i + 1) % 8 == 0)
2759 TRACE_NEWLINE();
2760 }
2761 va_TracePrint(trace_ctx, "\n");
2762
2763 va_TraceMsg(trace_ctx, "\tdelta_luma_weight_l1[15]=\n");
2764 for (i = 0; i < 15; i++) {
2765 va_TraceMsg(trace_ctx, "\t%d", p->WPInfo.delta_luma_weight_l1[i]);
2766 if ((i + 1) % 8 == 0)
2767 TRACE_NEWLINE();
2768 }
2769 va_TracePrint(trace_ctx, "\n");
2770
2771 va_TraceMsg(trace_ctx, "\tluma_offset_l1[15]=\n");
2772 for (i = 0; i < 15; i++) {
2773 va_TraceMsg(trace_ctx, "\t%d", p->WPInfo.luma_offset_l1[i]);
2774 if ((i + 1) % 8 == 0)
2775 TRACE_NEWLINE();
2776 }
2777 va_TracePrint(trace_ctx, "\n");
2778
2779 va_TraceMsg(trace_ctx, "\tdelta_chroma_weight_l1[15][2] = \n");
2780 va_TraceMsg(trace_ctx, "");
2781 for (i = 0; i < 15; i++) {
2782 for (j = 0; j < 2; j++) {
2783 va_TracePrint(trace_ctx, "\t%d", p->WPInfo.delta_chroma_weight_l1[i][j]);
2784 }
2785 TRACE_NEWLINE();
2786 }
2787 va_TracePrint(trace_ctx, "\n");
2788
2789 va_TraceMsg(trace_ctx, "\tdelta_chroma_offset_l1[15][2] = \n");
2790 va_TraceMsg(trace_ctx, "");
2791 for (i = 0; i < 15; i++) {
2792 for (j = 0; j < 2; j++) {
2793 va_TracePrint(trace_ctx, "\t%d", p->WPInfo.delta_chroma_offset_l1[i][j]);
2794 }
2795 TRACE_NEWLINE();
2796 }
2797 va_TracePrint(trace_ctx, "\n");
2798 va_TraceMsg(trace_ctx, "\treserved16b = %d\n", p->WPInfo.reserved16b);
2799 va_TraceMsg(trace_ctx, "\treserved32b = %d\n", p->WPInfo.reserved32b);
2800
2801 va_TraceMsg(trace_ctx, "\tsh_flags = %d\n", p->sh_flags.value);
2802 va_TraceMsg(trace_ctx, "\tsh_alf_enabled_flag = %d\n", p->sh_flags.bits.sh_alf_enabled_flag);
2803 va_TraceMsg(trace_ctx, "\tsh_alf_cb_enabled_flag = %d\n", p->sh_flags.bits.sh_alf_cb_enabled_flag);
2804 va_TraceMsg(trace_ctx, "\tsh_alf_cr_enabled_flag = %d\n", p->sh_flags.bits.sh_alf_cr_enabled_flag);
2805 va_TraceMsg(trace_ctx, "\tsh_alf_cc_cb_enabled_flag = %d\n", p->sh_flags.bits.sh_alf_cc_cb_enabled_flag);
2806 va_TraceMsg(trace_ctx, "\tsh_alf_cc_cr_enabled_flag = %d\n", p->sh_flags.bits.sh_alf_cc_cr_enabled_flag);
2807 va_TraceMsg(trace_ctx, "\tsh_lmcs_used_flag = %d\n", p->sh_flags.bits.sh_lmcs_used_flag);
2808 va_TraceMsg(trace_ctx, "\tsh_explicit_scaling_list_used_flag = %d\n", p->sh_flags.bits.sh_explicit_scaling_list_used_flag);
2809 va_TraceMsg(trace_ctx, "\tsh_cabac_init_flag = %d\n", p->sh_flags.bits.sh_cabac_init_flag);
2810 va_TraceMsg(trace_ctx, "\tsh_collocated_from_l0_flag = %d\n", p->sh_flags.bits.sh_collocated_from_l0_flag);
2811 va_TraceMsg(trace_ctx, "\tsh_cu_chroma_qp_offset_enabled_flag = %d\n", p->sh_flags.bits.sh_cu_chroma_qp_offset_enabled_flag);
2812 va_TraceMsg(trace_ctx, "\tsh_sao_luma_used_flag = %d\n", p->sh_flags.bits.sh_sao_luma_used_flag);
2813 va_TraceMsg(trace_ctx, "\tsh_sao_chroma_used_flag = %d\n", p->sh_flags.bits.sh_sao_chroma_used_flag);
2814 va_TraceMsg(trace_ctx, "\tsh_deblocking_filter_disabled_flag = %d\n", p->sh_flags.bits.sh_deblocking_filter_disabled_flag);
2815 va_TraceMsg(trace_ctx, "\tsh_dep_quant_used_flag = %d\n", p->sh_flags.bits.sh_dep_quant_used_flag);
2816 va_TraceMsg(trace_ctx, "\tsh_sign_data_hiding_used_flag = %d\n", p->sh_flags.bits.sh_sign_data_hiding_used_flag);
2817 va_TraceMsg(trace_ctx, "\tsh_ts_residual_coding_disabled_flag = %d\n", p->sh_flags.bits.sh_ts_residual_coding_disabled_flag);
2818 va_TraceMsg(trace_ctx, "\treserved = %d\n", p->sh_flags.bits.reserved);
2819
2820 va_TraceMsg(trace_ctx, NULL);
2821 }
2822
va_TraceVAScalingListBufferVVC(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)2823 static void va_TraceVAScalingListBufferVVC(
2824 VADisplay dpy,
2825 VAContextID context,
2826 VABufferID buffer,
2827 VABufferType type,
2828 unsigned int size,
2829 unsigned int num_elements,
2830 void* data)
2831 {
2832 int i, j, k;
2833 VAScalingListVVC* p = (VAScalingListVVC*)data;
2834
2835 DPY2TRACECTX(dpy, context, VA_INVALID_ID);
2836
2837 va_TraceMsg(trace_ctx, "\t--VAScalingListBufferVVC\n");
2838
2839 va_TraceMsg(trace_ctx, "\taps_adaptation_parameter_set_id = %d\n", p->aps_adaptation_parameter_set_id);
2840 va_TraceMsg(trace_ctx, "\treserved8b = %d\n", p->reserved8b);
2841 va_TraceMsg(trace_ctx, "\tScalingMatrixDCRec[14]=\n");
2842 for (i = 0; i < 14; i++) {
2843 va_TraceMsg(trace_ctx, "\t%d", p->ScalingMatrixDCRec[i]);
2844 if ((i + 1) % 8 == 0)
2845 TRACE_NEWLINE();
2846 }
2847 va_TracePrint(trace_ctx, "\n");
2848
2849 va_TraceMsg(trace_ctx, "\tScalingMatrixRec2x2[2][2][2] = \n");
2850 va_TraceMsg(trace_ctx, "");
2851 for (i = 0; i < 2; i++) {
2852 for (j = 0; j < 2; j++) {
2853 for (k = 0; k < 2; k++) {
2854 va_TracePrint(trace_ctx, "\t%d", p->ScalingMatrixRec2x2[i][j][k]);
2855 }
2856 TRACE_NEWLINE();
2857 }
2858 TRACE_NEWLINE();
2859 }
2860 va_TracePrint(trace_ctx, "\n");
2861
2862 va_TraceMsg(trace_ctx, "\tScalingMatrixRec4x4[6][4][4] = \n");
2863 va_TraceMsg(trace_ctx, "");
2864 for (i = 0; i < 6; i++) {
2865 for (j = 0; j < 4; j++) {
2866 for (k = 0; k < 4; k++) {
2867 va_TracePrint(trace_ctx, "\t%d", p->ScalingMatrixRec4x4[i][j][k]);
2868 }
2869 TRACE_NEWLINE();
2870 }
2871 TRACE_NEWLINE();
2872 }
2873 va_TracePrint(trace_ctx, "\n");
2874
2875 va_TraceMsg(trace_ctx, "\tScalingMatrixRec8x8[20][8][8] = \n");
2876 va_TraceMsg(trace_ctx, "");
2877 for (i = 0; i < 20; i++) {
2878 for (j = 0; j < 8; j++) {
2879 for (k = 0; k < 8; k++) {
2880 va_TracePrint(trace_ctx, "\t%d", p->ScalingMatrixRec8x8[i][j][k]);
2881 }
2882 TRACE_NEWLINE();
2883 }
2884 TRACE_NEWLINE();
2885 }
2886 va_TracePrint(trace_ctx, "\n");
2887
2888 va_TraceMsg(trace_ctx, "\tva_reserved[8]=\n");
2889 va_TraceMsg(trace_ctx, "");
2890 for (i = 0; i < 8; i++) {
2891 va_TracePrint(trace_ctx, "\t%d", p->va_reserved[i]);
2892 }
2893 va_TracePrint(trace_ctx, "\n");
2894
2895 va_TraceMsg(trace_ctx, NULL);
2896 }
2897
va_TraceVAAlfBufferVVC(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)2898 static void va_TraceVAAlfBufferVVC(
2899 VADisplay dpy,
2900 VAContextID context,
2901 VABufferID buffer,
2902 VABufferType type,
2903 unsigned int size,
2904 unsigned int num_elements,
2905 void* data)
2906 {
2907 int i, j;
2908 VAAlfDataVVC* p = (VAAlfDataVVC*)data;
2909
2910 DPY2TRACECTX(dpy, context, VA_INVALID_ID);
2911
2912 va_TraceMsg(trace_ctx, "\t--VAAlfDataBufferVVC\n");
2913
2914 va_TraceMsg(trace_ctx, "\taps_adaptation_parameter_set_id = %d\n", p->aps_adaptation_parameter_set_id);
2915 va_TraceMsg(trace_ctx, "\talf_luma_num_filters_signalled_minus1 = %d\n", p->alf_luma_num_filters_signalled_minus1);
2916 va_TraceMsg(trace_ctx, "\talf_luma_coeff_delta_idx[25]=\n");
2917 for (i = 0; i < 25; i++) {
2918 va_TraceMsg(trace_ctx, "\t%d", p->alf_luma_coeff_delta_idx[i]);
2919 if ((i + 1) % 8 == 0)
2920 TRACE_NEWLINE();
2921 }
2922 va_TracePrint(trace_ctx, "\n");
2923
2924 va_TraceMsg(trace_ctx, "\tfiltCoeff[25][12]=\n");
2925 va_TraceMsg(trace_ctx, "");
2926 for (i = 0; i < 25; i++) {
2927 for (j = 0; j < 12; j++) {
2928 va_TracePrint(trace_ctx, "\t%d", p->filtCoeff[i][j]);
2929 if ((j + 1) % 8 == 0)
2930 TRACE_NEWLINE();
2931 }
2932 TRACE_NEWLINE();
2933 }
2934
2935 va_TraceMsg(trace_ctx, "\talf_luma_clip_idx[25][12]=\n");
2936 va_TraceMsg(trace_ctx, "");
2937 for (i = 0; i < 25; i++) {
2938 for (j = 0; j < 12; j++) {
2939 va_TracePrint(trace_ctx, "\t%d", p->alf_luma_clip_idx[i][j]);
2940 if ((j + 1) % 8 == 0)
2941 TRACE_NEWLINE();
2942 }
2943 TRACE_NEWLINE();
2944 }
2945
2946 va_TraceMsg(trace_ctx, "\talf_chroma_num_alt_filters_minus1 = %d\n", p->alf_chroma_num_alt_filters_minus1);
2947 va_TraceMsg(trace_ctx, "\tAlfCoeffC[8][6]=\n");
2948 va_TraceMsg(trace_ctx, "");
2949 for (i = 0; i < 8; i++) {
2950 for (j = 0; j < 6; j++) {
2951 va_TracePrint(trace_ctx, "\t%d", p->AlfCoeffC[i][j]);
2952 }
2953 TRACE_NEWLINE();
2954 }
2955 va_TracePrint(trace_ctx, "\n");
2956
2957 va_TraceMsg(trace_ctx, "\talf_chroma_clip_idx[8][6]=\n");
2958 va_TraceMsg(trace_ctx, "");
2959 for (i = 0; i < 8; i++) {
2960 for (j = 0; j < 6; j++) {
2961 va_TracePrint(trace_ctx, "\t%d", p->alf_chroma_clip_idx[i][j]);
2962 }
2963 TRACE_NEWLINE();
2964 }
2965 va_TracePrint(trace_ctx, "\n");
2966
2967 va_TraceMsg(trace_ctx, "\talf_cc_cb_filters_signalled_minus1 = %d\n", p->alf_cc_cb_filters_signalled_minus1);
2968 va_TraceMsg(trace_ctx, "\tCcAlfApsCoeffCb[4][7]=\n");
2969 va_TraceMsg(trace_ctx, "");
2970 for (i = 0; i < 4; i++) {
2971 for (j = 0; j < 7; j++) {
2972 va_TracePrint(trace_ctx, "\t%d", p->CcAlfApsCoeffCb[i][j]);
2973 }
2974 TRACE_NEWLINE();
2975 }
2976 va_TracePrint(trace_ctx, "\n");
2977
2978 va_TraceMsg(trace_ctx, "\talf_cc_cr_filters_signalled_minus1 = %d\n", p->alf_cc_cr_filters_signalled_minus1);
2979 va_TraceMsg(trace_ctx, "\tCcAlfApsCoeffCr[4][7]=\n");
2980 va_TraceMsg(trace_ctx, "");
2981 for (i = 0; i < 4; i++) {
2982 for (j = 0; j < 7; j++) {
2983 va_TracePrint(trace_ctx, "\t%d", p->CcAlfApsCoeffCr[i][j]);
2984 }
2985 TRACE_NEWLINE();
2986 }
2987 va_TracePrint(trace_ctx, "\n");
2988
2989 va_TraceMsg(trace_ctx, "\treserved16b = %d\n", p->reserved16b);
2990 va_TraceMsg(trace_ctx, "\treserved32b = %d\n", p->reserved32b);
2991
2992 va_TraceMsg(trace_ctx, "\talf_flags = %d\n", p->alf_flags.value);
2993 va_TraceMsg(trace_ctx, "\talf_luma_filter_signal_flag = %d\n", p->alf_flags.bits.alf_luma_filter_signal_flag);
2994 va_TraceMsg(trace_ctx, "\talf_chroma_filter_signal_flag = %d\n", p->alf_flags.bits.alf_chroma_filter_signal_flag);
2995 va_TraceMsg(trace_ctx, "\talf_cc_cb_filter_signal_flag = %d\n", p->alf_flags.bits.alf_cc_cb_filter_signal_flag);
2996 va_TraceMsg(trace_ctx, "\talf_cc_cr_filter_signal_flag = %d\n", p->alf_flags.bits.alf_cc_cr_filter_signal_flag);
2997 va_TraceMsg(trace_ctx, "\talf_luma_clip_flag = %d\n", p->alf_flags.bits.alf_luma_clip_flag);
2998 va_TraceMsg(trace_ctx, "\talf_chroma_clip_flag = %d\n", p->alf_flags.bits.alf_chroma_clip_flag);
2999 va_TraceMsg(trace_ctx, "\treserved = %d\n", p->alf_flags.bits.reserved);
3000
3001 va_TraceMsg(trace_ctx, "\tva_reserved[8]=\n");
3002 va_TraceMsg(trace_ctx, "");
3003 for (i = 0; i < 8; i++) {
3004 va_TracePrint(trace_ctx, "\t%d", p->va_reserved[i]);
3005 }
3006 va_TracePrint(trace_ctx, "\n");
3007
3008 va_TraceMsg(trace_ctx, NULL);
3009 }
3010
va_TraceVALmcsBufferVVC(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)3011 static void va_TraceVALmcsBufferVVC(
3012 VADisplay dpy,
3013 VAContextID context,
3014 VABufferID buffer,
3015 VABufferType type,
3016 unsigned int size,
3017 unsigned int num_elements,
3018 void* data)
3019 {
3020 int i;
3021 VALmcsDataVVC* p = (VALmcsDataVVC*)data;
3022
3023 DPY2TRACECTX(dpy, context, VA_INVALID_ID);
3024
3025 va_TraceMsg(trace_ctx, "\t--VALmcsDataBufferVVC\n");
3026 va_TraceMsg(trace_ctx, "\taps_adaptation_parameter_set_id = %d\n", p->aps_adaptation_parameter_set_id);
3027 va_TraceMsg(trace_ctx, "\tlmcs_min_bin_idx = %d\n", p->lmcs_min_bin_idx);
3028 va_TraceMsg(trace_ctx, "\tlmcs_delta_max_bin_idx = %d\n", p->lmcs_delta_max_bin_idx);
3029
3030 va_TraceMsg(trace_ctx, "\tlmcsDeltaCW[16]=\n");
3031 for (i = 0; i < 16; i++) {
3032 va_TraceMsg(trace_ctx, "\t%d", p->lmcsDeltaCW[i]);
3033 if ((i + 1) % 8 == 0)
3034 TRACE_NEWLINE();
3035 }
3036 va_TracePrint(trace_ctx, "\n");
3037
3038 va_TraceMsg(trace_ctx, "\tlmcsDeltaCrs = %d\n", p->lmcsDeltaCrs);
3039 va_TraceMsg(trace_ctx, "\treserved8b[3]=\n");
3040 va_TraceMsg(trace_ctx, "");
3041 for (i = 0; i < 3; i++) {
3042 va_TracePrint(trace_ctx, "\t%d", p->reserved8b[i]);
3043 }
3044 va_TracePrint(trace_ctx, "\n");
3045
3046 va_TraceMsg(trace_ctx, "\tva_reserved[8]=\n");
3047 va_TraceMsg(trace_ctx, "");
3048 for (i = 0; i < 8; i++) {
3049 va_TracePrint(trace_ctx, "\t%d", p->va_reserved[i]);
3050 }
3051 va_TracePrint(trace_ctx, "\n");
3052
3053 va_TraceMsg(trace_ctx, NULL);
3054 }
3055
va_TraceVASubPicBufferVVC(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)3056 static void va_TraceVASubPicBufferVVC(
3057 VADisplay dpy,
3058 VAContextID context,
3059 VABufferID buffer,
3060 VABufferType type,
3061 unsigned int size,
3062 unsigned int num_elements,
3063 void* data)
3064 {
3065 int i;
3066 VASubPicVVC* p = (VASubPicVVC*)data;
3067
3068 DPY2TRACECTX(dpy, context, VA_INVALID_ID);
3069
3070 va_TraceMsg(trace_ctx, "\t--VASubPicBufferVVC\n");
3071
3072 va_TraceMsg(trace_ctx, "\tsps_subpic_ctu_top_left_x = %d\n", p->sps_subpic_ctu_top_left_x);
3073 va_TraceMsg(trace_ctx, "\tsps_subpic_ctu_top_left_y = %d\n", p->sps_subpic_ctu_top_left_y);
3074 va_TraceMsg(trace_ctx, "\tsps_subpic_width_minus1 = %d\n", p->sps_subpic_width_minus1);
3075 va_TraceMsg(trace_ctx, "\tsps_subpic_height_minus1 = %d\n", p->sps_subpic_height_minus1);
3076 va_TraceMsg(trace_ctx, "\tSubpicIdVal = %d\n", p->SubpicIdVal);
3077
3078 va_TraceMsg(trace_ctx, "\tsubpic_flags = %d\n", p->subpic_flags.value);
3079 va_TraceMsg(trace_ctx, "\tsps_subpic_treated_as_pic_flag = %d\n", p->subpic_flags.bits.sps_subpic_treated_as_pic_flag);
3080 va_TraceMsg(trace_ctx, "\tsps_loop_filter_across_subpic_enabled_flag = %d\n", p->subpic_flags.bits.sps_loop_filter_across_subpic_enabled_flag);
3081 va_TraceMsg(trace_ctx, "\treserved = %d\n", p->subpic_flags.bits.reserved);
3082
3083 va_TraceMsg(trace_ctx, "\tva_reserved[4]=\n");
3084 va_TraceMsg(trace_ctx, "");
3085 for (i = 0; i < 4; i++) {
3086 va_TracePrint(trace_ctx, "\t%d", p->va_reserved[i]);
3087 }
3088 va_TracePrint(trace_ctx, "\n");
3089
3090 va_TraceMsg(trace_ctx, NULL);
3091 }
3092
va_TraceVATileBufferVVC(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)3093 static void va_TraceVATileBufferVVC(
3094 VADisplay dpy,
3095 VAContextID context,
3096 VABufferID buffer,
3097 VABufferType type,
3098 unsigned int size,
3099 unsigned int num_elements,
3100 void* data)
3101 {
3102 uint16_t* p = (uint16_t*)data;
3103
3104 DPY2TRACECTX(dpy, context, VA_INVALID_ID);
3105
3106 va_TraceMsg(trace_ctx, "\t--VATileBufferVVC\n");
3107 va_TraceMsg(trace_ctx, "\ttile_dimension = %d\n", *p);
3108
3109 va_TraceMsg(trace_ctx, NULL);
3110 }
3111
va_TraceVASliceStructBufferVVC(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)3112 static void va_TraceVASliceStructBufferVVC(
3113 VADisplay dpy,
3114 VAContextID context,
3115 VABufferID buffer,
3116 VABufferType type,
3117 unsigned int size,
3118 unsigned int num_elements,
3119 void* data)
3120 {
3121 int i;
3122 VASliceStructVVC* p = (VASliceStructVVC*)data;
3123
3124 DPY2TRACECTX(dpy, context, VA_INVALID_ID);
3125
3126 va_TraceMsg(trace_ctx, "\t--VASliceStructBufferVVC\n");
3127 va_TraceMsg(trace_ctx, "\tSliceTopLeftTileIdx = %d\n", p->SliceTopLeftTileIdx);
3128 va_TraceMsg(trace_ctx, "\tpps_slice_width_in_tiles_minus1 = %d\n", p->pps_slice_width_in_tiles_minus1);
3129 va_TraceMsg(trace_ctx, "\tpps_slice_height_in_tiles_minus1 = %d\n", p->pps_slice_height_in_tiles_minus1);
3130 va_TraceMsg(trace_ctx, "\tpps_exp_slice_height_in_ctus_minus1 = %d\n", p->pps_exp_slice_height_in_ctus_minus1);
3131
3132 va_TraceMsg(trace_ctx, "\tva_reserved[4]=\n");
3133 va_TraceMsg(trace_ctx, "");
3134 for (i = 0; i < 4; i++) {
3135 va_TracePrint(trace_ctx, "\t%d", p->va_reserved[i]);
3136 }
3137 va_TracePrint(trace_ctx, "\n");
3138
3139 va_TraceMsg(trace_ctx, NULL);
3140 }
3141
3142
va_TraceIsRextProfile(VADisplay dpy,VAContextID context,bool * isRext)3143 static inline void va_TraceIsRextProfile(
3144 VADisplay dpy,
3145 VAContextID context,
3146 bool *isRext /* out */
3147 )
3148 {
3149 DPY2TRACECTX(dpy, context, VA_INVALID_ID);
3150
3151 *isRext = (\
3152 trace_ctx->trace_profile == VAProfileHEVCMain12 || \
3153 trace_ctx->trace_profile == VAProfileHEVCMain422_10 || \
3154 trace_ctx->trace_profile == VAProfileHEVCMain422_12 || \
3155 trace_ctx->trace_profile == VAProfileHEVCMain444 || \
3156 trace_ctx->trace_profile == VAProfileHEVCMain444_10 || \
3157 trace_ctx->trace_profile == VAProfileHEVCMain444_12 || \
3158 trace_ctx->trace_profile == VAProfileHEVCSccMain || \
3159 trace_ctx->trace_profile == VAProfileHEVCSccMain10 || \
3160 trace_ctx->trace_profile == VAProfileHEVCSccMain444 || \
3161 trace_ctx->trace_profile == VAProfileHEVCSccMain444_10 \
3162 );
3163 }
3164
va_TraceIsSccProfile(VADisplay dpy,VAContextID context,bool * isScc)3165 static inline void va_TraceIsSccProfile(
3166 VADisplay dpy,
3167 VAContextID context,
3168 bool *isScc /* out */
3169 )
3170 {
3171 DPY2TRACECTX(dpy, context, VA_INVALID_ID);
3172
3173 *isScc = (\
3174 trace_ctx->trace_profile == VAProfileHEVCSccMain || \
3175 trace_ctx->trace_profile == VAProfileHEVCSccMain10 || \
3176 trace_ctx->trace_profile == VAProfileHEVCSccMain444 || \
3177 trace_ctx->trace_profile == VAProfileHEVCSccMain444_10 \
3178 );
3179 }
3180
va_TraceVAPictureParameterBufferHEVC(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)3181 static void va_TraceVAPictureParameterBufferHEVC(
3182 VADisplay dpy,
3183 VAContextID context,
3184 VABufferID buffer,
3185 VABufferType type,
3186 unsigned int size,
3187 unsigned int num_elements,
3188 void *data)
3189 {
3190 int i, j;
3191 bool isRext = false;
3192 bool isScc = false;
3193 VAPictureParameterBufferHEVC *p = NULL;
3194 VAPictureParameterBufferHEVCRext *pRext = NULL;
3195 VAPictureParameterBufferHEVCScc *pScc = NULL;
3196
3197 va_TraceIsRextProfile(dpy, context, &isRext);
3198 va_TraceIsSccProfile(dpy, context, &isScc);
3199
3200 if (isRext) {
3201 p = &((VAPictureParameterBufferHEVCExtension*)data)->base;
3202 pRext = &((VAPictureParameterBufferHEVCExtension*)data)->rext;
3203
3204 if (isScc)
3205 pScc = &((VAPictureParameterBufferHEVCExtension*)data)->scc;
3206 } else
3207 p = (VAPictureParameterBufferHEVC*)data;
3208
3209 DPY2TRACECTX(dpy, context, VA_INVALID_ID);
3210
3211 va_TraceMsg(trace_ctx, "\t--VAPictureParameterBufferHEVC\n");
3212
3213 va_TraceMsg(trace_ctx, "\tCurrPic.picture_id = 0x%08x\n", p->CurrPic.picture_id);
3214 va_TraceMsg(trace_ctx, "\tCurrPic.frame_idx = %d\n", p->CurrPic.pic_order_cnt);
3215 va_TraceMsg(trace_ctx, "\tCurrPic.flags = %d\n", p->CurrPic.flags);
3216
3217 va_TraceMsg(trace_ctx, "\tReferenceFrames (picture_id-pic_order_cnt-flags):\n");
3218 for (i = 0; i < 15; i++) {
3219 if ((p->ReferenceFrames[i].picture_id != VA_INVALID_SURFACE) &&
3220 ((p->ReferenceFrames[i].flags & VA_PICTURE_HEVC_INVALID) == 0)) {
3221 va_TraceMsg(trace_ctx, "\t\t0x%08x-%08d-0x%08x\n",
3222 p->ReferenceFrames[i].picture_id,
3223 p->ReferenceFrames[i].pic_order_cnt,
3224 p->ReferenceFrames[i].flags);
3225 } else
3226 va_TraceMsg(trace_ctx, "\t\tinv-inv-inv-inv-inv\n");
3227 }
3228 va_TraceMsg(trace_ctx, "\n");
3229
3230 va_TraceMsg(trace_ctx, "\tpic_width_in_luma_samples = %d\n", p->pic_width_in_luma_samples);
3231 va_TraceMsg(trace_ctx, "\tpic_height_in_luma_samples = %d\n", p->pic_height_in_luma_samples);
3232 va_TraceMsg(trace_ctx, "\tpic_fields = %d\n", p->pic_fields.value);
3233
3234 va_TraceMsg(trace_ctx, "\tchroma_format_idc = %d\n", p->pic_fields.bits.chroma_format_idc);
3235 va_TraceMsg(trace_ctx, "\tseparate_colour_plane_flag = %d\n", p->pic_fields.bits.separate_colour_plane_flag);
3236 va_TraceMsg(trace_ctx, "\tpcm_enabled_flag = %d\n", p->pic_fields.bits.pcm_enabled_flag);
3237 va_TraceMsg(trace_ctx, "\tscaling_list_enabled_flag = %d\n", p->pic_fields.bits.scaling_list_enabled_flag);
3238 va_TraceMsg(trace_ctx, "\ttransform_skip_enabled_flag = %d\n", p->pic_fields.bits.transform_skip_enabled_flag);
3239 va_TraceMsg(trace_ctx, "\tamp_enabled_flag = %d\n", p->pic_fields.bits.amp_enabled_flag);
3240 va_TraceMsg(trace_ctx, "\tstrong_intra_smoothing_enabled_flag = %d\n", p->pic_fields.bits.strong_intra_smoothing_enabled_flag);
3241 va_TraceMsg(trace_ctx, "\tsign_data_hiding_enabled_flag = %d\n", p->pic_fields.bits.sign_data_hiding_enabled_flag);
3242 va_TraceMsg(trace_ctx, "\tconstrained_intra_pred_flag = %d\n", p->pic_fields.bits.constrained_intra_pred_flag);
3243 va_TraceMsg(trace_ctx, "\tcu_qp_delta_enabled_flag = %d\n", p->pic_fields.bits.cu_qp_delta_enabled_flag);
3244 va_TraceMsg(trace_ctx, "\tweighted_pred_flag = %d\n", p->pic_fields.bits.weighted_pred_flag);
3245 va_TraceMsg(trace_ctx, "\tweighted_bipred_flag = %d\n", p->pic_fields.bits.weighted_bipred_flag);
3246 va_TraceMsg(trace_ctx, "\ttransquant_bypass_enabled_flag = %d\n", p->pic_fields.bits.transquant_bypass_enabled_flag);
3247 va_TraceMsg(trace_ctx, "\ttiles_enabled_flag = %d\n", p->pic_fields.bits.tiles_enabled_flag);
3248 va_TraceMsg(trace_ctx, "\tentropy_coding_sync_enabled_flag = %d\n", p->pic_fields.bits.entropy_coding_sync_enabled_flag);
3249 va_TraceMsg(trace_ctx, "\tpps_loop_filter_across_slices_enabled_flag = %d\n", p->pic_fields.bits.pps_loop_filter_across_slices_enabled_flag);
3250 va_TraceMsg(trace_ctx, "\tloop_filter_across_tiles_enabled_flag = %d\n", p->pic_fields.bits.loop_filter_across_tiles_enabled_flag);
3251 va_TraceMsg(trace_ctx, "\tpcm_loop_filter_disabled_flag = %d\n", p->pic_fields.bits.pcm_loop_filter_disabled_flag);
3252 va_TraceMsg(trace_ctx, "\tNoPicReorderingFlag = %d\n", p->pic_fields.bits.NoPicReorderingFlag);
3253 va_TraceMsg(trace_ctx, "\tNoBiPredFlag = %d\n", p->pic_fields.bits.NoBiPredFlag);
3254 va_TraceMsg(trace_ctx, "\tReservedBits = %d\n", p->pic_fields.bits.ReservedBits);
3255
3256 va_TraceMsg(trace_ctx, "\tsps_max_dec_pic_buffering_minus1 = %d\n", p->sps_max_dec_pic_buffering_minus1);
3257 va_TraceMsg(trace_ctx, "\tbit_depth_luma_minus8 = %d\n", p->bit_depth_luma_minus8);
3258 va_TraceMsg(trace_ctx, "\tbit_depth_chroma_minus8 = %d\n", p->bit_depth_chroma_minus8);
3259 va_TraceMsg(trace_ctx, "\tpcm_sample_bit_depth_luma_minus1 = %d\n", p->pcm_sample_bit_depth_luma_minus1);
3260 va_TraceMsg(trace_ctx, "\tpcm_sample_bit_depth_chroma_minus1 = %d\n", p->pcm_sample_bit_depth_chroma_minus1);
3261 va_TraceMsg(trace_ctx, "\tlog2_min_luma_coding_block_size_minus3 = %d\n", p->log2_min_luma_coding_block_size_minus3);
3262 va_TraceMsg(trace_ctx, "\tlog2_diff_max_min_luma_coding_block_size = %d\n", p->log2_diff_max_min_luma_coding_block_size);
3263 va_TraceMsg(trace_ctx, "\tlog2_min_transform_block_size_minus2 = %d\n", p->log2_min_transform_block_size_minus2);
3264 va_TraceMsg(trace_ctx, "\tlog2_diff_max_min_transform_block_size = %d\n", p->log2_diff_max_min_transform_block_size);
3265 va_TraceMsg(trace_ctx, "\tlog2_min_pcm_luma_coding_block_size_minus3 = %d\n", p->log2_min_pcm_luma_coding_block_size_minus3);
3266 va_TraceMsg(trace_ctx, "\tlog2_diff_max_min_pcm_luma_coding_block_size = %d\n", p->log2_diff_max_min_pcm_luma_coding_block_size);
3267 va_TraceMsg(trace_ctx, "\tmax_transform_hierarchy_depth_intra = %d\n", p->max_transform_hierarchy_depth_intra);
3268 va_TraceMsg(trace_ctx, "\tmax_transform_hierarchy_depth_inter = %d\n", p->max_transform_hierarchy_depth_inter);
3269 va_TraceMsg(trace_ctx, "\tinit_qp_minus26 = %d\n", p->init_qp_minus26);
3270 va_TraceMsg(trace_ctx, "\tdiff_cu_qp_delta_depth = %d\n", p->diff_cu_qp_delta_depth);
3271 va_TraceMsg(trace_ctx, "\tpps_cb_qp_offset = %d\n", p->pps_cb_qp_offset);
3272 va_TraceMsg(trace_ctx, "\tpps_cr_qp_offset = %d\n", p->pps_cr_qp_offset);
3273 va_TraceMsg(trace_ctx, "\tlog2_parallel_merge_level_minus2 = %d\n", p->log2_parallel_merge_level_minus2);
3274 va_TraceMsg(trace_ctx, "\tnum_tile_columns_minus1 = %d\n", p->num_tile_columns_minus1);
3275 va_TraceMsg(trace_ctx, "\tnum_tile_rows_minus1 = %d\n", p->num_tile_rows_minus1);
3276
3277 va_TraceMsg(trace_ctx, "\tcolumn_width_minus1[19]=\n");
3278 va_TraceMsg(trace_ctx, "");
3279 for (i = 0; i < 19; i++) {
3280 va_TracePrint(trace_ctx, "\t%d", p->column_width_minus1[i]);
3281 if ((i + 1) % 8 == 0)
3282 TRACE_NEWLINE();
3283 }
3284 va_TracePrint(trace_ctx, "\n");
3285 va_TraceMsg(trace_ctx, "\trow_height_minus1[21]=\n");
3286 va_TraceMsg(trace_ctx, "");
3287 for (i = 0; i < 21; i++) {
3288 va_TracePrint(trace_ctx, "\t%d", p->row_height_minus1[i]);
3289 if ((i + 1) % 8 == 0)
3290 TRACE_NEWLINE();
3291 }
3292 va_TracePrint(trace_ctx, "\n");
3293
3294 va_TraceMsg(trace_ctx, "\tslice_parsing_fields = %d\n", p->slice_parsing_fields.value);
3295 va_TraceMsg(trace_ctx, "\tlists_modification_present_flag = %d\n", p->slice_parsing_fields.bits.lists_modification_present_flag);
3296 va_TraceMsg(trace_ctx, "\tlong_term_ref_pics_present_flag = %d\n", p->slice_parsing_fields.bits.long_term_ref_pics_present_flag);
3297 va_TraceMsg(trace_ctx, "\tsps_temporal_mvp_enabled_flag = %d\n", p->slice_parsing_fields.bits.sps_temporal_mvp_enabled_flag);
3298 va_TraceMsg(trace_ctx, "\tcabac_init_present_flag = %d\n", p->slice_parsing_fields.bits.cabac_init_present_flag);
3299 va_TraceMsg(trace_ctx, "\toutput_flag_present_flag = %d\n", p->slice_parsing_fields.bits.output_flag_present_flag);
3300 va_TraceMsg(trace_ctx, "\tdependent_slice_segments_enabled_flag = %d\n", p->slice_parsing_fields.bits.dependent_slice_segments_enabled_flag);
3301 va_TraceMsg(trace_ctx, "\tpps_slice_chroma_qp_offsets_present_flag = %d\n", p->slice_parsing_fields.bits.pps_slice_chroma_qp_offsets_present_flag);
3302 va_TraceMsg(trace_ctx, "\tsample_adaptive_offset_enabled_flag = %d\n", p->slice_parsing_fields.bits.sample_adaptive_offset_enabled_flag);
3303 va_TraceMsg(trace_ctx, "\tdeblocking_filter_override_enabled_flag = %d\n", p->slice_parsing_fields.bits.deblocking_filter_override_enabled_flag);
3304 va_TraceMsg(trace_ctx, "\tpps_disable_deblocking_filter_flag = %d\n", p->slice_parsing_fields.bits.pps_disable_deblocking_filter_flag);
3305 va_TraceMsg(trace_ctx, "\tslice_segment_header_extension_present_flag = %d\n", p->slice_parsing_fields.bits.slice_segment_header_extension_present_flag);
3306 va_TraceMsg(trace_ctx, "\tRapPicFlag = %d\n", p->slice_parsing_fields.bits.RapPicFlag);
3307 va_TraceMsg(trace_ctx, "\tIdrPicFlag = %d\n", p->slice_parsing_fields.bits.IdrPicFlag);
3308 va_TraceMsg(trace_ctx, "\tIntraPicFlag = %d\n", p->slice_parsing_fields.bits.IntraPicFlag);
3309 va_TraceMsg(trace_ctx, "\tReservedBits = %d\n", p->slice_parsing_fields.bits.ReservedBits);
3310
3311 va_TraceMsg(trace_ctx, "\tlog2_max_pic_order_cnt_lsb_minus4 = %d\n", p->log2_max_pic_order_cnt_lsb_minus4);
3312 va_TraceMsg(trace_ctx, "\tnum_short_term_ref_pic_sets = %d\n", p->num_short_term_ref_pic_sets);
3313 va_TraceMsg(trace_ctx, "\tnum_long_term_ref_pic_sps = %d\n", p->num_long_term_ref_pic_sps);
3314 va_TraceMsg(trace_ctx, "\tnum_ref_idx_l0_default_active_minus1 = %d\n", p->num_ref_idx_l0_default_active_minus1);
3315 va_TraceMsg(trace_ctx, "\tnum_ref_idx_l1_default_active_minus1 = %d\n", p->num_ref_idx_l1_default_active_minus1);
3316 va_TraceMsg(trace_ctx, "\tpps_beta_offset_div2 = %d\n", p->pps_beta_offset_div2);
3317 va_TraceMsg(trace_ctx, "\tpps_tc_offset_div2 = %d\n", p->pps_tc_offset_div2);
3318 va_TraceMsg(trace_ctx, "\tnum_extra_slice_header_bits = %d\n", p->num_extra_slice_header_bits);
3319 va_TraceMsg(trace_ctx, "\tst_rps_bits = %d\n", p->st_rps_bits);
3320
3321 if (isRext && pRext) {
3322 va_TraceMsg(trace_ctx, "\trange_extension_pic_fields = %d\n", pRext->range_extension_pic_fields.value);
3323 va_TraceMsg(trace_ctx, "\ttransform_skip_rotation_enabled_flag = %d\n", pRext->range_extension_pic_fields.bits.transform_skip_rotation_enabled_flag);
3324 va_TraceMsg(trace_ctx, "\ttransform_skip_context_enabled_flag = %d\n", pRext->range_extension_pic_fields.bits.transform_skip_context_enabled_flag);
3325 va_TraceMsg(trace_ctx, "\timplicit_rdpcm_enabled_flag = %d\n", pRext->range_extension_pic_fields.bits.implicit_rdpcm_enabled_flag);
3326 va_TraceMsg(trace_ctx, "\texplicit_rdpcm_enabled_flag = %d\n", pRext->range_extension_pic_fields.bits.explicit_rdpcm_enabled_flag);
3327 va_TraceMsg(trace_ctx, "\textended_precision_processing_flag = %d\n", pRext->range_extension_pic_fields.bits.extended_precision_processing_flag);
3328 va_TraceMsg(trace_ctx, "\tintra_smoothing_disabled_flag = %d\n", pRext->range_extension_pic_fields.bits.intra_smoothing_disabled_flag);
3329 va_TraceMsg(trace_ctx, "\thigh_precision_offsets_enabled_flag = %d\n", pRext->range_extension_pic_fields.bits.high_precision_offsets_enabled_flag);
3330 va_TraceMsg(trace_ctx, "\tpersistent_rice_adaptation_enabled_flag = %d\n", pRext->range_extension_pic_fields.bits.persistent_rice_adaptation_enabled_flag);
3331 va_TraceMsg(trace_ctx, "\tcabac_bypass_alignment_enabled_flag = %d\n", pRext->range_extension_pic_fields.bits.cabac_bypass_alignment_enabled_flag);
3332 va_TraceMsg(trace_ctx, "\tcross_component_prediction_enabled_flag = %d\n", pRext->range_extension_pic_fields.bits.cross_component_prediction_enabled_flag);
3333 va_TraceMsg(trace_ctx, "\tchroma_qp_offset_list_enabled_flag = %d\n", pRext->range_extension_pic_fields.bits.chroma_qp_offset_list_enabled_flag);
3334 va_TraceMsg(trace_ctx, "\treserved = %d\n", pRext->range_extension_pic_fields.bits.reserved);
3335
3336 va_TraceMsg(trace_ctx, "\tdiff_cu_chroma_qp_offset_depth = %d\n", pRext->diff_cu_chroma_qp_offset_depth);
3337 va_TraceMsg(trace_ctx, "\tchroma_qp_offset_list_len_minus1 = %d\n", pRext->chroma_qp_offset_list_len_minus1);
3338 va_TraceMsg(trace_ctx, "\tlog2_sao_offset_scale_luma = %d\n", pRext->log2_sao_offset_scale_luma);
3339 va_TraceMsg(trace_ctx, "\tlog2_sao_offset_scale_chroma = %d\n", pRext->log2_sao_offset_scale_chroma);
3340 va_TraceMsg(trace_ctx, "\tlog2_max_transform_skip_block_size_minus2 = %d\n", pRext->log2_max_transform_skip_block_size_minus2);
3341
3342 va_TraceMsg(trace_ctx, "\tcb_qp_offset_list[6] = \n");
3343 va_TraceMsg(trace_ctx, "");
3344 for (i = 0; i < 6; i++)
3345 va_TracePrint(trace_ctx, "\t%d", pRext->cb_qp_offset_list[i]);
3346 va_TracePrint(trace_ctx, "\n");
3347
3348 va_TraceMsg(trace_ctx, "\tcr_qp_offset_list[] = \n");
3349 va_TraceMsg(trace_ctx, "");
3350 for (i = 0; i < 6; i++)
3351 va_TracePrint(trace_ctx, "\t%d", pRext->cr_qp_offset_list[i]);
3352 va_TracePrint(trace_ctx, "\n");
3353 }
3354
3355 if (isScc && pScc) {
3356 va_TraceMsg(trace_ctx, "\tscreen_content_pic_fields = %d\n", pScc->screen_content_pic_fields.value);
3357 va_TraceMsg(trace_ctx, "\tpps_curr_pic_ref_enabled_flag = %d\n", pScc->screen_content_pic_fields.bits.pps_curr_pic_ref_enabled_flag);
3358 va_TraceMsg(trace_ctx, "\tpalette_mode_enabled_flag = %d\n", pScc->screen_content_pic_fields.bits.palette_mode_enabled_flag);
3359 va_TraceMsg(trace_ctx, "\tmotion_vector_resolution_control_idc = %d\n", pScc->screen_content_pic_fields.bits.motion_vector_resolution_control_idc);
3360 va_TraceMsg(trace_ctx, "\tintra_boundary_filtering_disabled_flag = %d\n", pScc->screen_content_pic_fields.bits.intra_boundary_filtering_disabled_flag);
3361 va_TraceMsg(trace_ctx, "\tresidual_adaptive_colour_transform_enabled_flag = %d\n", pScc->screen_content_pic_fields.bits.residual_adaptive_colour_transform_enabled_flag);
3362 va_TraceMsg(trace_ctx, "\tpps_slice_act_qp_offsets_present_flag = %d\n", pScc->screen_content_pic_fields.bits.pps_slice_act_qp_offsets_present_flag);
3363 va_TraceMsg(trace_ctx, "\treserved = %d\n", pScc->screen_content_pic_fields.bits.reserved);
3364
3365 va_TraceMsg(trace_ctx, "\tpalette_max_size = %d\n", pScc->palette_max_size);
3366 va_TraceMsg(trace_ctx, "\tdelta_palette_max_predictor_size = %d\n", pScc->delta_palette_max_predictor_size);
3367 va_TraceMsg(trace_ctx, "\tpredictor_palette_size = %d\n", pScc->predictor_palette_size);
3368
3369 va_TraceMsg(trace_ctx, "\tpredictor_palette_entries[3][128] = \n");
3370 va_TraceMsg(trace_ctx, "");
3371 for (i = 0; i < 3; i++) {
3372 for (j = 0; j < 128; j++) {
3373 va_TracePrint(trace_ctx, "\t%d", pScc->predictor_palette_entries[i][j]);
3374 if ((j + 1) % 8 == 0)
3375 TRACE_NEWLINE();
3376 }
3377 TRACE_NEWLINE();
3378 }
3379 va_TracePrint(trace_ctx, "\n");
3380
3381 va_TraceMsg(trace_ctx, "\tpps_act_y_qp_offset_plus5 = %d\n", pScc->pps_act_y_qp_offset_plus5);
3382 va_TraceMsg(trace_ctx, "\tpps_act_cb_qp_offset_plus5 = %d\n", pScc->pps_act_cb_qp_offset_plus5);
3383 va_TraceMsg(trace_ctx, "\tpps_act_cr_qp_offset_plus3 = %d\n", pScc->pps_act_cr_qp_offset_plus3);
3384 }
3385
3386 return;
3387 }
3388
va_TraceVASliceParameterBufferHEVC(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)3389 static void va_TraceVASliceParameterBufferHEVC(
3390 VADisplay dpy,
3391 VAContextID context,
3392 VABufferID buffer,
3393 VABufferType type,
3394 unsigned int size,
3395 unsigned int num_elements,
3396 void *data)
3397 {
3398 int i, j;
3399 bool isRext = false;
3400 VASliceParameterBufferHEVC* p = NULL;
3401 VASliceParameterBufferHEVCRext *pRext = NULL;
3402
3403 va_TraceIsRextProfile(dpy, context, &isRext);
3404 if (isRext) {
3405 p = &((VASliceParameterBufferHEVCExtension*)data)->base;
3406 pRext = &((VASliceParameterBufferHEVCExtension*)data)->rext;
3407 } else
3408 p = (VASliceParameterBufferHEVC*)data;
3409
3410 DPY2TRACECTX(dpy, context, VA_INVALID_ID);
3411
3412 trace_ctx->trace_slice_no++;
3413 trace_ctx->trace_slice_size = p->slice_data_size;
3414
3415 va_TraceMsg(trace_ctx, "\t--VASliceParameterBufferHEVC\n");
3416 va_TraceMsg(trace_ctx, "\tslice_data_size = %d\n", p->slice_data_size);
3417 va_TraceMsg(trace_ctx, "\tslice_data_offset = %d\n", p->slice_data_offset);
3418 va_TraceMsg(trace_ctx, "\tslice_data_flag = %d\n", p->slice_data_flag);
3419 va_TraceMsg(trace_ctx, "\tslice_data_byte_offset = %d\n", p->slice_data_byte_offset);
3420 va_TraceMsg(trace_ctx, "\tslice_segment_address = %d\n", p->slice_segment_address);
3421
3422 va_TraceMsg(trace_ctx, "\tRefPicList[2][15]=\n");
3423 va_TraceMsg(trace_ctx, "");
3424 for (i = 0; i < 2; i++) {
3425 for (j = 0; j < 15; j++) {
3426 va_TracePrint(trace_ctx, "\t%d", p->RefPicList[i][j]);
3427 if ((j + 1) % 8 == 0)
3428 TRACE_NEWLINE();
3429 }
3430 TRACE_NEWLINE();
3431 }
3432
3433 va_TracePrint(trace_ctx, "\tLongSliceFlags.value = %d\n", p->LongSliceFlags.value);
3434 va_TraceMsg(trace_ctx, "\tLongSliceFlags.fields.LastSliceOfPic = %d\n", p->LongSliceFlags.fields.LastSliceOfPic);
3435 va_TraceMsg(trace_ctx, "\tLongSliceFlags.fields.dependent_slice_segment_flag = %d\n", p->LongSliceFlags.fields.dependent_slice_segment_flag);
3436 va_TraceMsg(trace_ctx, "\tLongSliceFlags.fields.slice_type = %d\n", p->LongSliceFlags.fields.slice_type);
3437 va_TraceMsg(trace_ctx, "\tLongSliceFlags.fields.color_plane_id = %d\n", p->LongSliceFlags.fields.color_plane_id);
3438 va_TraceMsg(trace_ctx, "\tLongSliceFlags.fields.slice_sao_luma_flag = %d\n", p->LongSliceFlags.fields.slice_sao_luma_flag);
3439 va_TraceMsg(trace_ctx, "\tLongSliceFlags.fields.slice_sao_chroma_flag = %d\n", p->LongSliceFlags.fields.slice_sao_chroma_flag);
3440 va_TraceMsg(trace_ctx, "\tLongSliceFlags.fields.mvd_l1_zero_flag = %d\n", p->LongSliceFlags.fields.mvd_l1_zero_flag);
3441 va_TraceMsg(trace_ctx, "\tLongSliceFlags.fields.cabac_init_flag = %d\n", p->LongSliceFlags.fields.cabac_init_flag);
3442 va_TraceMsg(trace_ctx, "\tLongSliceFlags.fields.slice_temporal_mvp_enabled_flag = %d\n", p->LongSliceFlags.fields.slice_temporal_mvp_enabled_flag);
3443 va_TraceMsg(trace_ctx, "\tLongSliceFlags.fields.slice_deblocking_filter_disabled_flag = %d\n", p->LongSliceFlags.fields.slice_deblocking_filter_disabled_flag);
3444 va_TraceMsg(trace_ctx, "\tLongSliceFlags.fields.collocated_from_l0_flag = %d\n", p->LongSliceFlags.fields.collocated_from_l0_flag);
3445 va_TraceMsg(trace_ctx, "\tLongSliceFlags.fields.slice_loop_filter_across_slices_enabled_flag = %d\n", p->LongSliceFlags.fields.slice_loop_filter_across_slices_enabled_flag);
3446 va_TraceMsg(trace_ctx, "\tLongSliceFlags.fields.reserved = %d\n", p->LongSliceFlags.fields.reserved);
3447
3448 va_TraceMsg(trace_ctx, "\tcollocated_ref_idx = %d\n", p->collocated_ref_idx);
3449
3450 va_TraceMsg(trace_ctx, "\tslice_qp_delta = %d\n", p->slice_qp_delta);
3451 va_TraceMsg(trace_ctx, "\tslice_cb_qp_offset = %d\n", p->slice_cb_qp_offset);
3452 va_TraceMsg(trace_ctx, "\tslice_cr_qp_offset = %d\n", p->slice_cr_qp_offset);
3453 va_TraceMsg(trace_ctx, "\tslice_beta_offset_div2 = %d\n", p->slice_beta_offset_div2);
3454 va_TraceMsg(trace_ctx, "\tslice_tc_offset_div2 = %d\n", p->slice_tc_offset_div2);
3455 va_TraceMsg(trace_ctx, "\tluma_log2_weight_denom = %d\n", p->luma_log2_weight_denom);
3456 va_TraceMsg(trace_ctx, "\tdelta_chroma_log2_weight_denom = %d\n", p->delta_chroma_log2_weight_denom);
3457
3458 va_TraceMsg(trace_ctx, "\tnum_ref_idx_l0_active_minus1 = %d\n", p->num_ref_idx_l0_active_minus1);
3459 for (i = 0; i <= p->num_ref_idx_l0_active_minus1; i++) {
3460 va_TraceMsg(trace_ctx, "\t% d ", p->delta_luma_weight_l0[i]);
3461 va_TracePrint(trace_ctx, "\t% d ", p->luma_offset_l0[i]);
3462 va_TracePrint(trace_ctx, "\t% d ", p->delta_chroma_weight_l0[i][0]);
3463 va_TracePrint(trace_ctx, "\t% d ", p->delta_chroma_weight_l0[i][1]);
3464 va_TracePrint(trace_ctx, "\t% d ", p->ChromaOffsetL0[i][0]);
3465 va_TracePrint(trace_ctx, "\t% d ", p->ChromaOffsetL0[i][1]);
3466 va_TracePrint(trace_ctx, "\n");
3467 }
3468
3469 va_TraceMsg(trace_ctx, "\tnum_ref_idx_l1_active_minus1 = %d\n", p->num_ref_idx_l1_active_minus1);
3470 for (i = 0; i <= p->num_ref_idx_l1_active_minus1; i++) {
3471 va_TraceMsg(trace_ctx, "\t% d ", p->delta_luma_weight_l1[i]);
3472 va_TracePrint(trace_ctx, "\t% d ", p->luma_offset_l1[i]);
3473 va_TracePrint(trace_ctx, "\t% d ", p->delta_chroma_weight_l1[i][0]);
3474 va_TracePrint(trace_ctx, "\t% d ", p->delta_chroma_weight_l1[i][1]);
3475 va_TracePrint(trace_ctx, "\t% d ", p->ChromaOffsetL1[i][0]);
3476 va_TracePrint(trace_ctx, "\t% d ", p->ChromaOffsetL1[i][1]);
3477 va_TracePrint(trace_ctx, "\n");
3478 }
3479
3480 va_TraceMsg(trace_ctx, "\tfive_minus_max_num_merge_cand = %d\n", p->five_minus_max_num_merge_cand);
3481
3482 va_TraceMsg(trace_ctx, "\tnum_entry_point_offsets = %d\n", p->num_entry_point_offsets);
3483 va_TraceMsg(trace_ctx, "\tentry_offset_to_subset_array = %d\n", p->entry_offset_to_subset_array);
3484 va_TraceMsg(trace_ctx, "\tslice_data_num_emu_prevn_bytes = %d\n", p->slice_data_num_emu_prevn_bytes);
3485
3486 if (isRext && pRext) {
3487 va_TraceMsg(trace_ctx, "\tluma_offset_l0[15] = \n");
3488 va_TraceMsg(trace_ctx, "");
3489 for (i = 0; i < 15; i++) {
3490 va_TracePrint(trace_ctx, "\t%d", pRext->luma_offset_l0[i]);
3491 if ((i + 1) % 8 == 0)
3492 TRACE_NEWLINE();
3493 }
3494 va_TracePrint(trace_ctx, "\n");
3495
3496 va_TraceMsg(trace_ctx, "\tChromaOffsetL0[15][2] = \n");
3497 va_TraceMsg(trace_ctx, "");
3498 for (i = 0; i < 15; i++) {
3499 for (j = 0; j < 2; j++) {
3500 va_TracePrint(trace_ctx, "\t%d", pRext->ChromaOffsetL0[i][j]);
3501 }
3502 TRACE_NEWLINE();
3503 }
3504 va_TracePrint(trace_ctx, "\n");
3505
3506 va_TraceMsg(trace_ctx, "\tluma_offset_l1[15] = \n");
3507 va_TraceMsg(trace_ctx, "");
3508 for (i = 0; i < 15; i++) {
3509 va_TracePrint(trace_ctx, "\t%d", pRext->luma_offset_l1[i]);
3510 if ((i + 1) % 8 == 0)
3511 TRACE_NEWLINE();
3512 }
3513 va_TracePrint(trace_ctx, "\n");
3514
3515 va_TraceMsg(trace_ctx, "\tChromaOffsetL1[15][2] = \n");
3516 va_TraceMsg(trace_ctx, "");
3517 for (i = 0; i < 15; i++) {
3518 for (j = 0; j < 2; j++) {
3519 va_TracePrint(trace_ctx, "\t%d", pRext->ChromaOffsetL1[i][j]);
3520 }
3521 TRACE_NEWLINE();
3522 }
3523 va_TracePrint(trace_ctx, "\n");
3524
3525 va_TraceMsg(trace_ctx, "\tslice_ext_flags = %d\n", pRext->slice_ext_flags.value);
3526 va_TraceMsg(trace_ctx, "\tcu_chroma_qp_offset_enabled_flag = %d\n", pRext->slice_ext_flags.bits.cu_chroma_qp_offset_enabled_flag);
3527 va_TraceMsg(trace_ctx, "\tuse_integer_mv_flag = %d\n", pRext->slice_ext_flags.bits.use_integer_mv_flag);
3528 va_TraceMsg(trace_ctx, "\treserved = %d\n", pRext->slice_ext_flags.bits.reserved);
3529
3530 va_TraceMsg(trace_ctx, "\tslice_act_y_qp_offset = %d\n", pRext->slice_act_y_qp_offset);
3531 va_TraceMsg(trace_ctx, "\tslice_act_cb_qp_offset = %d\n", pRext->slice_act_cb_qp_offset);
3532 va_TraceMsg(trace_ctx, "\tslice_act_cr_qp_offset = %d\n", pRext->slice_act_cr_qp_offset);
3533 }
3534
3535 va_TraceMsg(trace_ctx, NULL);
3536 }
3537
va_TraceVAIQMatrixBufferHEVC(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)3538 static void va_TraceVAIQMatrixBufferHEVC(
3539 VADisplay dpy,
3540 VAContextID context,
3541 VABufferID buffer,
3542 VABufferType type,
3543 unsigned int size,
3544 unsigned int num_elements,
3545 void *data
3546 )
3547 {
3548 int i, j;
3549 VAIQMatrixBufferHEVC* p = (VAIQMatrixBufferHEVC*)data;
3550
3551 DPY2TRACECTX(dpy, context, VA_INVALID_ID);
3552
3553 va_TraceMsg(trace_ctx, "\t--VAIQMatrixBufferHEVC\n");
3554
3555 va_TraceMsg(trace_ctx, "\tScalingList4x4[6][16]=\n");
3556 va_TraceMsg(trace_ctx, "");
3557 for (i = 0; i < 6; i++) {
3558 for (j = 0; j < 16; j++) {
3559 va_TracePrint(trace_ctx, "\t%d\t", p->ScalingList4x4[i][j]);
3560 if ((j + 1) % 8 == 0)
3561 TRACE_NEWLINE();
3562 }
3563 }
3564
3565 va_TracePrint(trace_ctx, "\tScalingList8x8[6][64]=\n");
3566 va_TraceMsg(trace_ctx, "");
3567 for (i = 0; i < 6; i++) {
3568 for (j = 0; j < 64; j++) {
3569 va_TracePrint(trace_ctx, "\t%d", p->ScalingList8x8[i][j]);
3570 if ((j + 1) % 8 == 0)
3571 TRACE_NEWLINE();
3572 }
3573 }
3574
3575 va_TracePrint(trace_ctx, "\tScalingList16x16[6][64]=\n");
3576 va_TraceMsg(trace_ctx, "");
3577 for (i = 0; i < 6; i++) {
3578 for (j = 0; j < 64; j++) {
3579 va_TracePrint(trace_ctx, "\t%d", p->ScalingList16x16[i][j]);
3580 if ((j + 1) % 8 == 0)
3581 TRACE_NEWLINE();
3582 }
3583 }
3584
3585 va_TracePrint(trace_ctx, "\tScalingList32x32[2][64]=\n");
3586 va_TraceMsg(trace_ctx, "");
3587 for (i = 0; i < 2; i++) {
3588 for (j = 0; j < 64; j++) {
3589 va_TracePrint(trace_ctx, "\t%d", p->ScalingList32x32[i][j]);
3590 if ((j + 1) % 8 == 0)
3591 TRACE_NEWLINE();
3592 }
3593 }
3594
3595 va_TracePrint(trace_ctx, "\tScalingListDC16x16[6]=\n");
3596 va_TraceMsg(trace_ctx, "");
3597 for (j = 0; j < 6; j++) {
3598 va_TracePrint(trace_ctx, "\t%d", p->ScalingListDC16x16[j]);
3599 }
3600 va_TracePrint(trace_ctx, "\n");
3601 va_TraceMsg(trace_ctx, "\tScalingListDC32x32[2]=\n");
3602 va_TraceMsg(trace_ctx, "");
3603 for (j = 0; j < 2; j++) {
3604 va_TracePrint(trace_ctx, "\t%d", p->ScalingListDC32x32[j]);
3605 }
3606 va_TracePrint(trace_ctx, "\n");
3607
3608 va_TraceMsg(trace_ctx, NULL);
3609 }
3610
va_TraceVAEncSequenceParameterBufferHEVC(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)3611 static void va_TraceVAEncSequenceParameterBufferHEVC(
3612 VADisplay dpy,
3613 VAContextID context,
3614 VABufferID buffer,
3615 VABufferType type,
3616 unsigned int size,
3617 unsigned int num_elements,
3618 void *data)
3619 {
3620 VAEncSequenceParameterBufferHEVC *p = (VAEncSequenceParameterBufferHEVC *)data;
3621
3622 DPY2TRACECTX(dpy, context, VA_INVALID_ID);
3623
3624 if (!p)
3625 return;
3626
3627 va_TraceMsg(trace_ctx, "\t--VAEncSequenceParameterBufferHEVC\n");
3628
3629 va_TraceMsg(trace_ctx, "\tgeneral_profile_idc = %d\n", p->general_profile_idc);
3630 va_TraceMsg(trace_ctx, "\tgeneral_level_idc = %d\n", p->general_level_idc);
3631 va_TraceMsg(trace_ctx, "\tgeneral_tier_flag = %d\n", p->general_tier_flag);
3632 va_TraceMsg(trace_ctx, "\tintra_period = %d\n", p->intra_period);
3633 va_TraceMsg(trace_ctx, "\tintra_idr_period = %d\n", p->intra_idr_period);
3634 va_TraceMsg(trace_ctx, "\tip_period = %d\n", p->ip_period);
3635 va_TraceMsg(trace_ctx, "\tbits_per_second = %d\n", p->bits_per_second);
3636 va_TraceMsg(trace_ctx, "\tpic_width_in_luma_samples = %d\n", p->pic_width_in_luma_samples);
3637 va_TraceMsg(trace_ctx, "\tpic_height_in_luma_samples = %d\n", p->pic_height_in_luma_samples);
3638 va_TraceMsg(trace_ctx, "\tchroma_format_idc = %d\n", p->seq_fields.bits.chroma_format_idc);
3639 va_TraceMsg(trace_ctx, "\tseparate_colour_plane_flag = %d\n", p->seq_fields.bits.separate_colour_plane_flag);
3640 va_TraceMsg(trace_ctx, "\tbit_depth_luma_minus8 = %d\n", p->seq_fields.bits.bit_depth_luma_minus8);
3641 va_TraceMsg(trace_ctx, "\tbit_depth_chroma_minus8 = %d\n", p->seq_fields.bits.bit_depth_chroma_minus8);
3642 va_TraceMsg(trace_ctx, "\tscaling_list_enabled_flag = %d\n", p->seq_fields.bits.scaling_list_enabled_flag);
3643 va_TraceMsg(trace_ctx, "\tstrong_intra_smoothing_enabled_flag = %d\n", p->seq_fields.bits.strong_intra_smoothing_enabled_flag);
3644 va_TraceMsg(trace_ctx, "\tamp_enabled_flag = %d\n", p->seq_fields.bits.amp_enabled_flag);
3645 va_TraceMsg(trace_ctx, "\tsample_adaptive_offset_enabled_flag = %d\n", p->seq_fields.bits.sample_adaptive_offset_enabled_flag);
3646 va_TraceMsg(trace_ctx, "\tpcm_enabled_flag = %d\n", p->seq_fields.bits.pcm_enabled_flag);
3647 va_TraceMsg(trace_ctx, "\tpcm_loop_filter_disabled_flag = %d\n", p->seq_fields.bits.pcm_loop_filter_disabled_flag);
3648 va_TraceMsg(trace_ctx, "\tsps_temporal_mvp_enabled_flag = %d\n", p->seq_fields.bits.sps_temporal_mvp_enabled_flag);
3649 va_TraceMsg(trace_ctx, "\tlow_delay_seq = %d\n", p->seq_fields.bits.low_delay_seq);
3650 va_TraceMsg(trace_ctx, "\thierachical_flag = %d\n", p->seq_fields.bits.hierachical_flag);
3651 va_TraceMsg(trace_ctx, "\treserved_bits = %d\n", p->seq_fields.bits.reserved_bits);
3652 va_TraceMsg(trace_ctx, "\tlog2_min_luma_coding_block_size_minus3 = %d\n", p->log2_min_luma_coding_block_size_minus3);
3653 va_TraceMsg(trace_ctx, "\tlog2_diff_max_min_luma_coding_block_size = %d\n", p->log2_diff_max_min_luma_coding_block_size);
3654 va_TraceMsg(trace_ctx, "\tlog2_min_transform_block_size_minus2 = %d\n", p->log2_min_transform_block_size_minus2);
3655 va_TraceMsg(trace_ctx, "\tlog2_diff_max_min_transform_block_size = %d\n", p->log2_diff_max_min_transform_block_size);
3656 va_TraceMsg(trace_ctx, "\tmax_transform_hierarchy_depth_inter = %d\n", p->max_transform_hierarchy_depth_inter);
3657 va_TraceMsg(trace_ctx, "\tmax_transform_hierarchy_depth_intra = %d\n", p->max_transform_hierarchy_depth_intra);
3658 va_TraceMsg(trace_ctx, "\tpcm_sample_bit_depth_luma_minus1 = %d\n", p->pcm_sample_bit_depth_luma_minus1);
3659 va_TraceMsg(trace_ctx, "\tpcm_sample_bit_depth_chroma_minus1 = %d\n", p->pcm_sample_bit_depth_chroma_minus1);
3660 va_TraceMsg(trace_ctx, "\tlog2_min_pcm_luma_coding_block_size_minus3 = %d\n", p->log2_min_pcm_luma_coding_block_size_minus3);
3661 va_TraceMsg(trace_ctx, "\tlog2_max_pcm_luma_coding_block_size_minus3 = %d\n", p->log2_max_pcm_luma_coding_block_size_minus3);
3662 va_TraceMsg(trace_ctx, "\tvui_parameters_present_flag = %d\n", p->vui_parameters_present_flag);
3663 va_TraceMsg(trace_ctx, "\taspect_ratio_info_present_flag = %d\n", p->vui_fields.bits.aspect_ratio_info_present_flag);
3664 va_TraceMsg(trace_ctx, "\tneutral_chroma_indication_flag = %d\n", p->vui_fields.bits.neutral_chroma_indication_flag);
3665 va_TraceMsg(trace_ctx, "\tfield_seq_flag = %d\n", p->vui_fields.bits.field_seq_flag);
3666 va_TraceMsg(trace_ctx, "\tvui_timing_info_present_flag = %d\n", p->vui_fields.bits.vui_timing_info_present_flag);
3667 va_TraceMsg(trace_ctx, "\tbitstream_restriction_flag = %d\n", p->vui_fields.bits.bitstream_restriction_flag);
3668 va_TraceMsg(trace_ctx, "\ttiles_fixed_structure_flag = %d\n", p->vui_fields.bits.tiles_fixed_structure_flag);
3669 va_TraceMsg(trace_ctx, "\tmotion_vectors_over_pic_boundaries_flag = %d\n", p->vui_fields.bits.motion_vectors_over_pic_boundaries_flag);
3670 va_TraceMsg(trace_ctx, "\trestricted_ref_pic_lists_flag = %d\n", p->vui_fields.bits.restricted_ref_pic_lists_flag);
3671 va_TraceMsg(trace_ctx, "\tlog2_max_mv_length_horizontal = %d\n", p->vui_fields.bits.log2_max_mv_length_horizontal);
3672 va_TraceMsg(trace_ctx, "\tlog2_max_mv_length_vertical = %d\n", p->vui_fields.bits.log2_max_mv_length_vertical);
3673 va_TraceMsg(trace_ctx, "\taspect_ratio_idc = %d\n", p->aspect_ratio_idc);
3674 va_TraceMsg(trace_ctx, "\tsar_width = %d\n", p->sar_width);
3675 va_TraceMsg(trace_ctx, "\tsar_height = %d\n", p->sar_height);
3676 va_TraceMsg(trace_ctx, "\tvui_num_units_in_tick = %d\n", p->vui_num_units_in_tick);
3677 va_TraceMsg(trace_ctx, "\tvui_time_scale = %d\n", p->vui_time_scale);
3678 va_TraceMsg(trace_ctx, "\tmin_spatial_segmentation_idc = %d\n", p->min_spatial_segmentation_idc);
3679 va_TraceMsg(trace_ctx, "\tmax_bytes_per_pic_denom = %d\n", p->max_bytes_per_pic_denom);
3680 va_TraceMsg(trace_ctx, "\tmax_bits_per_min_cu_denom = %d\n", p->max_bits_per_min_cu_denom);
3681 va_TraceMsg(trace_ctx, "\tpalette_mode_enabled_flag = %d\n", p->scc_fields.bits.palette_mode_enabled_flag);
3682 va_TraceMsg(trace_ctx, "\treserved = %d\n", p->scc_fields.bits.reserved);
3683
3684 return;
3685 }
3686
va_TraceVAEncPictureParameterBufferHEVC(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)3687 static void va_TraceVAEncPictureParameterBufferHEVC(
3688 VADisplay dpy,
3689 VAContextID context,
3690 VABufferID buffer,
3691 VABufferType type,
3692 unsigned int size,
3693 unsigned int num_elements,
3694 void *data)
3695 {
3696 int i;
3697 VAEncPictureParameterBufferHEVC *p = (VAEncPictureParameterBufferHEVC *)data;
3698
3699 DPY2TRACECTX(dpy, context, VA_INVALID_ID);
3700
3701 if (!p)
3702 return;
3703
3704 va_TraceMsg(trace_ctx, "\t--VAEncPictureParameterBufferHEVC\n");
3705
3706 va_TraceMsg(trace_ctx, "\tdecoded_curr_pic.picture_id = 0x%08x\n", p->decoded_curr_pic.picture_id);
3707 va_TraceMsg(trace_ctx, "\tdecoded_curr_pic.pic_order_cnt = %d\n", p->decoded_curr_pic.pic_order_cnt);
3708 va_TraceMsg(trace_ctx, "\tdecoded_curr_pic.flags = %d\n", p->decoded_curr_pic.flags);
3709
3710 for (i = 0; i < 15; i ++) {
3711 va_TraceMsg(trace_ctx, "\treference_frames[%d].picture_id = 0x%08x\n", i, p->reference_frames[i].picture_id);
3712 va_TraceMsg(trace_ctx, "\treference_frames[%d].pic_order_cnt = %d\n", i, p->reference_frames[i].pic_order_cnt);
3713 va_TraceMsg(trace_ctx, "\treference_frames[%d].flags = %d\n", i, p->reference_frames[i].flags);
3714 }
3715
3716 va_TraceMsg(trace_ctx, "\tcoded_buf = %d\n", p->coded_buf);
3717 va_TraceMsg(trace_ctx, "\tcollocated_ref_pic_index = %d\n", p->collocated_ref_pic_index);
3718 va_TraceMsg(trace_ctx, "\tlast_picture = %d\n", p->last_picture);
3719 va_TraceMsg(trace_ctx, "\tpic_init_qp = %d\n", p->pic_init_qp);
3720 va_TraceMsg(trace_ctx, "\tdiff_cu_qp_delta_depth = %d\n", p->diff_cu_qp_delta_depth);
3721 va_TraceMsg(trace_ctx, "\tpps_cb_qp_offset = %d\n", p->pps_cb_qp_offset);
3722 va_TraceMsg(trace_ctx, "\tpps_cr_qp_offset = %d\n", p->pps_cr_qp_offset);
3723 va_TraceMsg(trace_ctx, "\tnum_tile_columns_minus1 = %d\n", p->num_tile_columns_minus1);
3724 va_TraceMsg(trace_ctx, "\tnum_tile_rows_minus1 = %d\n", p->num_tile_rows_minus1);
3725
3726 for (i = 0; i < 19; i ++) {
3727 va_TraceMsg(trace_ctx, "\tcolumn_width_minus1[%d] = %d\n", i, p->column_width_minus1[i]);
3728 }
3729
3730 for (i = 0; i < 21; i ++) {
3731 va_TraceMsg(trace_ctx, "\trow_height_minus1[%d] = %d\n", i, p->row_height_minus1[i]);
3732 }
3733
3734 va_TraceMsg(trace_ctx, "\tlog2_parallel_merge_level_minus2 = %d\n", p->log2_parallel_merge_level_minus2);
3735 va_TraceMsg(trace_ctx, "\tctu_max_bitsize_allowed = %d\n", p->ctu_max_bitsize_allowed);
3736 va_TraceMsg(trace_ctx, "\tnum_ref_idx_l0_default_active_minus1 = %d\n", p->num_ref_idx_l0_default_active_minus1);
3737 va_TraceMsg(trace_ctx, "\tnum_ref_idx_l1_default_active_minus1 = %d\n", p->num_ref_idx_l1_default_active_minus1);
3738 va_TraceMsg(trace_ctx, "\tslice_pic_parameter_set_id = %d\n", p->slice_pic_parameter_set_id);
3739 va_TraceMsg(trace_ctx, "\tnal_unit_type = %d\n", p->nal_unit_type);
3740 va_TraceMsg(trace_ctx, "\tidr_pic_flag = %d\n", p->pic_fields.bits.idr_pic_flag);
3741 va_TraceMsg(trace_ctx, "\tcoding_type = %d\n", p->pic_fields.bits.coding_type);
3742 va_TraceMsg(trace_ctx, "\treference_pic_flag = %d\n", p->pic_fields.bits.reference_pic_flag);
3743 va_TraceMsg(trace_ctx, "\tdependent_slice_segments_enabled_flag = %d\n", p->pic_fields.bits.dependent_slice_segments_enabled_flag);
3744 va_TraceMsg(trace_ctx, "\tsign_data_hiding_enabled_flag = %d\n", p->pic_fields.bits.sign_data_hiding_enabled_flag);
3745 va_TraceMsg(trace_ctx, "\tconstrained_intra_pred_flag = %d\n", p->pic_fields.bits.constrained_intra_pred_flag);
3746 va_TraceMsg(trace_ctx, "\ttransform_skip_enabled_flag = %d\n", p->pic_fields.bits.transform_skip_enabled_flag);
3747 va_TraceMsg(trace_ctx, "\tcu_qp_delta_enabled_flag = %d\n", p->pic_fields.bits.cu_qp_delta_enabled_flag);
3748 va_TraceMsg(trace_ctx, "\tweighted_pred_flag = %d\n", p->pic_fields.bits.weighted_pred_flag);
3749 va_TraceMsg(trace_ctx, "\tweighted_bipred_flag = %d\n", p->pic_fields.bits.weighted_bipred_flag);
3750 va_TraceMsg(trace_ctx, "\ttransquant_bypass_enabled_flag = %d\n", p->pic_fields.bits.transquant_bypass_enabled_flag);
3751 va_TraceMsg(trace_ctx, "\ttiles_enabled_flag = %d\n", p->pic_fields.bits.tiles_enabled_flag);
3752 va_TraceMsg(trace_ctx, "\tentropy_coding_sync_enabled_flag = %d\n", p->pic_fields.bits.entropy_coding_sync_enabled_flag);
3753 va_TraceMsg(trace_ctx, "\tloop_filter_across_tiles_enabled_flag = %d\n", p->pic_fields.bits.loop_filter_across_tiles_enabled_flag);
3754 va_TraceMsg(trace_ctx, "\tpps_loop_filter_across_slices_enabled_flag = %d\n", p->pic_fields.bits.pps_loop_filter_across_slices_enabled_flag);
3755 va_TraceMsg(trace_ctx, "\tscaling_list_data_present_flag = %d\n", p->pic_fields.bits.scaling_list_data_present_flag);
3756 va_TraceMsg(trace_ctx, "\tscreen_content_flag = %d\n", p->pic_fields.bits.screen_content_flag);
3757 va_TraceMsg(trace_ctx, "\tenable_gpu_weighted_prediction = %d\n", p->pic_fields.bits.enable_gpu_weighted_prediction);
3758 va_TraceMsg(trace_ctx, "\tno_output_of_prior_pics_flag = %d\n", p->pic_fields.bits.no_output_of_prior_pics_flag);
3759 va_TraceMsg(trace_ctx, "\treserved = %d\n", p->pic_fields.bits.reserved);
3760 va_TraceMsg(trace_ctx, "\thierarchical_level_plus1 = %d\n", p->hierarchical_level_plus1);
3761 va_TraceMsg(trace_ctx, "\tva_byte_reserved = %d\n", p->va_byte_reserved);
3762 va_TraceMsg(trace_ctx, "\tpps_curr_pic_ref_enabled_flag = %d\n", p->scc_fields.bits.pps_curr_pic_ref_enabled_flag);
3763 va_TraceMsg(trace_ctx, "\treserved = %d\n", p->scc_fields.bits.reserved);
3764
3765 return;
3766 }
3767
va_TraceVAEncSliceParameterBufferHEVC(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)3768 static void va_TraceVAEncSliceParameterBufferHEVC(
3769 VADisplay dpy,
3770 VAContextID context,
3771 VABufferID buffer,
3772 VABufferType type,
3773 unsigned int size,
3774 unsigned int num_elements,
3775 void *data)
3776 {
3777 int i;
3778 VAEncSliceParameterBufferHEVC *p = (VAEncSliceParameterBufferHEVC *)data;
3779
3780 DPY2TRACECTX(dpy, context, VA_INVALID_ID);
3781
3782 if (!p)
3783 return;
3784
3785 va_TraceMsg(trace_ctx, "\t--VAEncSliceParameterBufferHEVC\n");
3786
3787 va_TraceMsg(trace_ctx, "\tslice_segment_address = %d\n", p->slice_segment_address);
3788 va_TraceMsg(trace_ctx, "\tnum_ctu_in_slice = %d\n", p->num_ctu_in_slice);
3789 va_TraceMsg(trace_ctx, "\tslice_type = %d\n", p->slice_type);
3790 va_TraceMsg(trace_ctx, "\tslice_pic_parameter_set_id = %d\n", p->slice_pic_parameter_set_id);
3791 va_TraceMsg(trace_ctx, "\tnum_ref_idx_l0_active_minus1 = %d\n", p->num_ref_idx_l0_active_minus1);
3792 va_TraceMsg(trace_ctx, "\tnum_ref_idx_l1_active_minus1 = %d\n", p->num_ref_idx_l1_active_minus1);
3793
3794 for (i = 0; i < 15; i ++) {
3795 va_TraceMsg(trace_ctx, "\tref_pic_list0[%d].picture_id = 0x%08x\n", i, p->ref_pic_list0[i].picture_id);
3796 va_TraceMsg(trace_ctx, "\tref_pic_list0[%d].pic_order_cnt = %d\n", i, p->ref_pic_list0[i].pic_order_cnt);
3797 va_TraceMsg(trace_ctx, "\tref_pic_list0[%d].flags = %d\n", i, p->ref_pic_list0[i].flags);
3798 va_TraceMsg(trace_ctx, "\tref_pic_list1[%d].picture_id = 0x%08x\n", i, p->ref_pic_list1[i].picture_id);
3799 va_TraceMsg(trace_ctx, "\tref_pic_list1[%d].pic_order_cnt = %d\n", i, p->ref_pic_list1[i].pic_order_cnt);
3800 va_TraceMsg(trace_ctx, "\tref_pic_list1[%d].flags = %d\n", i, p->ref_pic_list1[i].flags);
3801 }
3802
3803 va_TraceMsg(trace_ctx, "\tluma_log2_weight_denom = %d\n", p->luma_log2_weight_denom);
3804 va_TraceMsg(trace_ctx, "\tdelta_chroma_log2_weight_denom = %d\n", p->delta_chroma_log2_weight_denom);
3805
3806 for (i = 0; i < 15; i ++) {
3807 va_TraceMsg(trace_ctx, "\tdelta_luma_weight_l0[%d] = %d\n", i, p->delta_luma_weight_l0[i]);
3808 va_TraceMsg(trace_ctx, "\tdelta_luma_weight_l1[%d] = %d\n", i, p->delta_luma_weight_l1[i]);
3809 }
3810
3811 for (i = 0; i < 15; i ++) {
3812 va_TraceMsg(trace_ctx, "\tluma_offset_l0[%d] = %d\n", i, p->luma_offset_l0[i]);
3813 va_TraceMsg(trace_ctx, "\tluma_offset_l1[%d] = %d\n", i, p->luma_offset_l1[i]);
3814 }
3815
3816 for (i = 0; i < 15; i ++) {
3817 va_TraceMsg(trace_ctx, "\tdelta_chroma_weight_l0[%d][0] = %d\n", i, p->delta_chroma_weight_l0[i][0]);
3818 va_TraceMsg(trace_ctx, "\tdelta_chroma_weight_l0[%d][1] = %d\n", i, p->delta_chroma_weight_l0[i][1]);
3819 va_TraceMsg(trace_ctx, "\tdelta_chroma_weight_l1[%d][0] = %d\n", i, p->delta_chroma_weight_l1[i][0]);
3820 va_TraceMsg(trace_ctx, "\tdelta_chroma_weight_l1[%d][1] = %d\n", i, p->delta_chroma_weight_l1[i][1]);
3821 }
3822
3823 for (i = 0; i < 15; i ++) {
3824 va_TraceMsg(trace_ctx, "\tchroma_offset_l0[%d][0] = %d\n", i, p->chroma_offset_l0[i][0]);
3825 va_TraceMsg(trace_ctx, "\tchroma_offset_l0[%d][1] = %d\n", i, p->chroma_offset_l0[i][1]);
3826 va_TraceMsg(trace_ctx, "\tchroma_offset_l1[%d][0] = %d\n", i, p->chroma_offset_l1[i][0]);
3827 va_TraceMsg(trace_ctx, "\tchroma_offset_l1[%d][1] = %d\n", i, p->chroma_offset_l1[i][1]);
3828 }
3829
3830 va_TraceMsg(trace_ctx, "\tmax_num_merge_cand = %d\n", p->max_num_merge_cand);
3831 va_TraceMsg(trace_ctx, "\tslice_qp_delta = %d\n", p->slice_qp_delta);
3832 va_TraceMsg(trace_ctx, "\tslice_cb_qp_offset = %d\n", p->slice_cb_qp_offset);
3833 va_TraceMsg(trace_ctx, "\tslice_cr_qp_offset = %d\n", p->slice_cr_qp_offset);
3834 va_TraceMsg(trace_ctx, "\tslice_beta_offset_div2 = %d\n", p->slice_beta_offset_div2);
3835 va_TraceMsg(trace_ctx, "\tslice_tc_offset_div2 = %d\n", p->slice_tc_offset_div2);
3836 va_TraceMsg(trace_ctx, "\tlast_slice_of_pic_flag = %d\n", p->slice_fields.bits.last_slice_of_pic_flag);
3837 va_TraceMsg(trace_ctx, "\tdependent_slice_segment_flag = %d\n", p->slice_fields.bits.dependent_slice_segment_flag);
3838 va_TraceMsg(trace_ctx, "\tcolour_plane_id = %d\n", p->slice_fields.bits.colour_plane_id);
3839 va_TraceMsg(trace_ctx, "\tslice_temporal_mvp_enabled_flag = %d\n", p->slice_fields.bits.slice_temporal_mvp_enabled_flag);
3840 va_TraceMsg(trace_ctx, "\tslice_sao_luma_flag = %d\n", p->slice_fields.bits.slice_sao_luma_flag);
3841 va_TraceMsg(trace_ctx, "\tslice_sao_chroma_flag = %d\n", p->slice_fields.bits.slice_sao_chroma_flag);
3842 va_TraceMsg(trace_ctx, "\tnum_ref_idx_active_override_flag = %d\n", p->slice_fields.bits.num_ref_idx_active_override_flag);
3843 va_TraceMsg(trace_ctx, "\tmvd_l1_zero_flag = %d\n", p->slice_fields.bits.mvd_l1_zero_flag);
3844 va_TraceMsg(trace_ctx, "\tcabac_init_flag = %d\n", p->slice_fields.bits.cabac_init_flag);
3845 va_TraceMsg(trace_ctx, "\tslice_deblocking_filter_disabled_flag = %d\n", p->slice_fields.bits.slice_deblocking_filter_disabled_flag);
3846 va_TraceMsg(trace_ctx, "\tslice_loop_filter_across_slices_enabled_flag = %d\n", p->slice_fields.bits.slice_loop_filter_across_slices_enabled_flag);
3847 va_TraceMsg(trace_ctx, "\tcollocated_from_l0_flag = %d\n", p->slice_fields.bits.collocated_from_l0_flag);
3848
3849 return;
3850 }
3851
va_TraceVAPictureParameterBufferH264(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)3852 static void va_TraceVAPictureParameterBufferH264(
3853 VADisplay dpy,
3854 VAContextID context,
3855 VABufferID buffer,
3856 VABufferType type,
3857 unsigned int size,
3858 unsigned int num_elements,
3859 void *data)
3860 {
3861 int i;
3862 VAPictureParameterBufferH264 *p = (VAPictureParameterBufferH264*)data;
3863
3864 DPY2TRACECTX(dpy, context, VA_INVALID_ID);
3865
3866 va_TraceMsg(trace_ctx, "\t--VAPictureParameterBufferH264\n");
3867
3868 va_TraceMsg(trace_ctx, "\tCurrPic.picture_id = 0x%08x\n", p->CurrPic.picture_id);
3869 va_TraceMsg(trace_ctx, "\tCurrPic.frame_idx = %u\n", p->CurrPic.frame_idx);
3870 va_TraceMsg(trace_ctx, "\tCurrPic.flags = 0x%08x\n", p->CurrPic.flags);
3871 va_TraceMsg(trace_ctx, "\tCurrPic.TopFieldOrderCnt = %d\n", p->CurrPic.TopFieldOrderCnt);
3872 va_TraceMsg(trace_ctx, "\tCurrPic.BottomFieldOrderCnt = %d\n", p->CurrPic.BottomFieldOrderCnt);
3873
3874 va_TraceMsg(trace_ctx, "\tReferenceFrames (TopFieldOrderCnt-BottomFieldOrderCnt-picture_id-frame_idx-flags):\n");
3875 for (i = 0; i < 16; i++) {
3876 if ((p->ReferenceFrames[i].picture_id != VA_INVALID_SURFACE) &&
3877 ((p->ReferenceFrames[i].flags & VA_PICTURE_H264_INVALID) == 0)) {
3878 va_TraceMsg(trace_ctx, "\t\t%08d-%08d-0x%08x-%08u-0x%08x\n",
3879 p->ReferenceFrames[i].TopFieldOrderCnt,
3880 p->ReferenceFrames[i].BottomFieldOrderCnt,
3881 p->ReferenceFrames[i].picture_id,
3882 p->ReferenceFrames[i].frame_idx,
3883 p->ReferenceFrames[i].flags);
3884 } else
3885 break;
3886 }
3887 va_TraceMsg(trace_ctx, "\tpicture_width_in_mbs_minus1 = %d\n", p->picture_width_in_mbs_minus1);
3888 va_TraceMsg(trace_ctx, "\tpicture_height_in_mbs_minus1 = %d\n", p->picture_height_in_mbs_minus1);
3889 va_TraceMsg(trace_ctx, "\tbit_depth_luma_minus8 = %d\n", p->bit_depth_luma_minus8);
3890 va_TraceMsg(trace_ctx, "\tbit_depth_chroma_minus8 = %d\n", p->bit_depth_chroma_minus8);
3891 va_TraceMsg(trace_ctx, "\tnum_ref_frames = %d\n", p->num_ref_frames);
3892 va_TraceMsg(trace_ctx, "\tseq fields = %d\n", p->seq_fields.value);
3893 va_TraceMsg(trace_ctx, "\tchroma_format_idc = %d\n", p->seq_fields.bits.chroma_format_idc);
3894 va_TraceMsg(trace_ctx, "\tresidual_colour_transform_flag = %d\n", p->seq_fields.bits.residual_colour_transform_flag);
3895 va_TraceMsg(trace_ctx, "\tframe_mbs_only_flag = %d\n", p->seq_fields.bits.frame_mbs_only_flag);
3896 va_TraceMsg(trace_ctx, "\tmb_adaptive_frame_field_flag = %d\n", p->seq_fields.bits.mb_adaptive_frame_field_flag);
3897 va_TraceMsg(trace_ctx, "\tdirect_8x8_inference_flag = %d\n", p->seq_fields.bits.direct_8x8_inference_flag);
3898 va_TraceMsg(trace_ctx, "\tMinLumaBiPredSize8x8 = %d\n", p->seq_fields.bits.MinLumaBiPredSize8x8);
3899 va_TraceMsg(trace_ctx, "\tpic_init_qp_minus26 = %d\n", p->pic_init_qp_minus26);
3900 va_TraceMsg(trace_ctx, "\tpic_init_qs_minus26 = %d\n", p->pic_init_qs_minus26);
3901 va_TraceMsg(trace_ctx, "\tchroma_qp_index_offset = %d\n", p->chroma_qp_index_offset);
3902 va_TraceMsg(trace_ctx, "\tsecond_chroma_qp_index_offset = %d\n", p->second_chroma_qp_index_offset);
3903 va_TraceMsg(trace_ctx, "\tpic_fields = 0x%03x\n", p->pic_fields.value);
3904 va_TraceFlagIfNotZero(trace_ctx, "\t\tentropy_coding_mode_flag", p->pic_fields.bits.entropy_coding_mode_flag);
3905 va_TraceFlagIfNotZero(trace_ctx, "\t\tweighted_pred_flag", p->pic_fields.bits.weighted_pred_flag);
3906 va_TraceFlagIfNotZero(trace_ctx, "\t\tweighted_bipred_idc", p->pic_fields.bits.weighted_bipred_idc);
3907 va_TraceFlagIfNotZero(trace_ctx, "\t\ttransform_8x8_mode_flag", p->pic_fields.bits.transform_8x8_mode_flag);
3908 va_TraceFlagIfNotZero(trace_ctx, "\t\tfield_pic_flag", p->pic_fields.bits.field_pic_flag);
3909 va_TraceFlagIfNotZero(trace_ctx, "\t\tconstrained_intra_pred_flag", p->pic_fields.bits.constrained_intra_pred_flag);
3910 va_TraceFlagIfNotZero(trace_ctx, "\t\tpic_order_present_flag", p->pic_fields.bits.pic_order_present_flag);
3911 va_TraceFlagIfNotZero(trace_ctx, "\t\tdeblocking_filter_control_present_flag", p->pic_fields.bits.deblocking_filter_control_present_flag);
3912 va_TraceFlagIfNotZero(trace_ctx, "\t\tredundant_pic_cnt_present_flag", p->pic_fields.bits.redundant_pic_cnt_present_flag);
3913 va_TraceFlagIfNotZero(trace_ctx, "\t\treference_pic_flag", p->pic_fields.bits.reference_pic_flag);
3914 va_TraceMsg(trace_ctx, "\tframe_num = %d\n", p->frame_num);
3915 va_TraceMsg(trace_ctx, NULL);
3916
3917 return;
3918 }
3919
va_TraceVASliceParameterBufferH264(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)3920 static void va_TraceVASliceParameterBufferH264(
3921 VADisplay dpy,
3922 VAContextID context,
3923 VABufferID buffer,
3924 VABufferType type,
3925 unsigned int size,
3926 unsigned int num_elements,
3927 void *data)
3928 {
3929 int i;
3930 VASliceParameterBufferH264* p = (VASliceParameterBufferH264*)data;
3931 DPY2TRACECTX(dpy, context, VA_INVALID_ID);
3932
3933 trace_ctx->trace_slice_no++;
3934 trace_ctx->trace_slice_size = p->slice_data_size;
3935
3936 va_TraceMsg(trace_ctx, "\t--VASliceParameterBufferH264\n");
3937 va_TraceMsg(trace_ctx, "\tslice_data_size = %u\n", p->slice_data_size);
3938 va_TraceMsg(trace_ctx, "\tslice_data_offset = %u\n", p->slice_data_offset);
3939 va_TraceMsg(trace_ctx, "\tslice_data_flag = 0x%08x\n", p->slice_data_flag);
3940 va_TraceMsg(trace_ctx, "\tslice_data_bit_offset = %d\n", p->slice_data_bit_offset);
3941 va_TraceMsg(trace_ctx, "\tfirst_mb_in_slice = %d\n", p->first_mb_in_slice);
3942 va_TraceMsg(trace_ctx, "\tslice_type = %d\n", p->slice_type);
3943 va_TraceMsg(trace_ctx, "\tdirect_spatial_mv_pred_flag = %d\n", p->direct_spatial_mv_pred_flag);
3944 va_TraceMsg(trace_ctx, "\tnum_ref_idx_l0_active_minus1 = %d\n", p->num_ref_idx_l0_active_minus1);
3945 va_TraceMsg(trace_ctx, "\tnum_ref_idx_l1_active_minus1 = %d\n", p->num_ref_idx_l1_active_minus1);
3946 va_TraceMsg(trace_ctx, "\tcabac_init_idc = %d\n", p->cabac_init_idc);
3947 va_TraceMsg(trace_ctx, "\tslice_qp_delta = %d\n", p->slice_qp_delta);
3948 va_TraceMsg(trace_ctx, "\tdisable_deblocking_filter_idc = %d\n", p->disable_deblocking_filter_idc);
3949 va_TraceMsg(trace_ctx, "\tslice_alpha_c0_offset_div2 = %d\n", p->slice_alpha_c0_offset_div2);
3950 va_TraceMsg(trace_ctx, "\tslice_beta_offset_div2 = %d\n", p->slice_beta_offset_div2);
3951
3952 va_TraceMsg(trace_ctx, "\tRefPicList0 =\n");
3953 for (i = 0; i < 32; i++) {
3954 if ((p->RefPicList0[i].picture_id != VA_INVALID_SURFACE) &&
3955 ((p->RefPicList0[i].flags & VA_PICTURE_H264_INVALID) == 0))
3956 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);
3957 else
3958 break;
3959 }
3960 va_TraceMsg(trace_ctx, "\tRefPicList1 =\n");
3961 for (i = 0; i < 32; i++) {
3962 if ((p->RefPicList1[i].picture_id != VA_INVALID_SURFACE) &&
3963 ((p->RefPicList1[i].flags & VA_PICTURE_H264_INVALID) == 0))
3964 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);
3965 else
3966 break;
3967 }
3968
3969 va_TraceMsg(trace_ctx, "\tluma_log2_weight_denom = %d\n", p->luma_log2_weight_denom);
3970 va_TraceMsg(trace_ctx, "\tchroma_log2_weight_denom = %d\n", p->chroma_log2_weight_denom);
3971 va_TraceMsg(trace_ctx, "\tluma_weight_l0_flag = %d\n", p->luma_weight_l0_flag);
3972
3973 for (i = 0; (i <= p->num_ref_idx_l0_active_minus1) && (i < 32); i++) {
3974 va_TraceMsg(trace_ctx, "\t\t%d\t%d\n",
3975 p->luma_weight_l0[i],
3976 p->luma_offset_l0[i]);
3977 }
3978
3979
3980 va_TraceMsg(trace_ctx, "\tchroma_weight_l0_flag = %d\n", p->chroma_weight_l0_flag);
3981
3982 for (i = 0; (i <= p->num_ref_idx_l0_active_minus1) && (i < 32); i++) {
3983 va_TraceMsg(trace_ctx, "\t\t%d\t%d\t%d\t%d\n",
3984 p->chroma_weight_l0[i][0],
3985 p->chroma_offset_l0[i][0],
3986 p->chroma_weight_l0[i][1],
3987 p->chroma_offset_l0[i][1]);
3988 }
3989
3990
3991 va_TraceMsg(trace_ctx, "\tluma_weight_l1_flag = %d\n", p->luma_weight_l1_flag);
3992
3993 for (i = 0; (i <= p->num_ref_idx_l1_active_minus1) && (i < 32); i++) {
3994 va_TraceMsg(trace_ctx, "\t\t%d\t%d\n",
3995 p->luma_weight_l1[i],
3996 p->luma_offset_l1[i]);
3997 }
3998
3999
4000 va_TraceMsg(trace_ctx, "\tchroma_weight_l1_flag = %d\n", p->chroma_weight_l1_flag);
4001
4002 for (i = 0; (i <= p->num_ref_idx_l1_active_minus1) && (i < 32); i++) {
4003 va_TraceMsg(trace_ctx, "\t\t%d\t%d\t%d\t%d\n",
4004 p->chroma_weight_l1[i][0],
4005 p->chroma_offset_l1[i][0],
4006 p->chroma_weight_l1[i][1],
4007 p->chroma_offset_l1[i][1]);
4008
4009 }
4010 va_TraceMsg(trace_ctx, NULL);
4011 }
4012
va_TraceVAIQMatrixBufferH264(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)4013 static void va_TraceVAIQMatrixBufferH264(
4014 VADisplay dpy,
4015 VAContextID context,
4016 VABufferID buffer,
4017 VABufferType type,
4018 unsigned int size,
4019 unsigned int num_elements,
4020 void *data
4021 )
4022 {
4023 int i, j;
4024 VAIQMatrixBufferH264* p = (VAIQMatrixBufferH264*)data;
4025 FILE *fp = NULL;
4026
4027 DPY2TRACECTX(dpy, context, VA_INVALID_ID);
4028
4029 if (trace_ctx->plog_file)
4030 fp = trace_ctx->plog_file->fp_log;
4031
4032 va_TraceMsg(trace_ctx, "\t--VAIQMatrixBufferH264\n");
4033
4034 va_TraceMsg(trace_ctx, "\tScalingList4x4[6][16]=\n");
4035 for (i = 0; i < 6; i++) {
4036 for (j = 0; j < 16; j++) {
4037 if (fp) {
4038 fprintf(fp, "\t%d", p->ScalingList4x4[i][j]);
4039 if ((j + 1) % 8 == 0)
4040 fprintf(fp, "\n");
4041 }
4042 }
4043 }
4044
4045 va_TraceMsg(trace_ctx, "\tScalingList8x8[2][64]=\n");
4046 for (i = 0; i < 2; i++) {
4047 for (j = 0; j < 64; j++) {
4048 if (fp) {
4049 fprintf(fp, "\t%d", p->ScalingList8x8[i][j]);
4050 if ((j + 1) % 8 == 0)
4051 fprintf(fp, "\n");
4052 }
4053 }
4054 }
4055
4056 va_TraceMsg(trace_ctx, NULL);
4057 }
4058
4059
4060
va_TraceVAEncSequenceParameterBufferH264(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)4061 static void va_TraceVAEncSequenceParameterBufferH264(
4062 VADisplay dpy,
4063 VAContextID context,
4064 VABufferID buffer,
4065 VABufferType type,
4066 unsigned int size,
4067 unsigned int num_elements,
4068 void *data)
4069 {
4070 VAEncSequenceParameterBufferH264 *p = (VAEncSequenceParameterBufferH264 *)data;
4071 DPY2TRACECTX(dpy, context, VA_INVALID_ID);
4072 unsigned int i;
4073
4074 va_TraceMsg(trace_ctx, "\t--VAEncSequenceParameterBufferH264\n");
4075
4076 va_TraceMsg(trace_ctx, "\tseq_parameter_set_id = %d\n", p->seq_parameter_set_id);
4077 va_TraceMsg(trace_ctx, "\tlevel_idc = %d\n", p->level_idc);
4078 va_TraceMsg(trace_ctx, "\tintra_period = %u\n", p->intra_period);
4079 va_TraceMsg(trace_ctx, "\tintra_idr_period = %u\n", p->intra_idr_period);
4080 va_TraceMsg(trace_ctx, "\tip_period = %u\n", p->ip_period);
4081 va_TraceMsg(trace_ctx, "\tbits_per_second = %u\n", p->bits_per_second);
4082 va_TraceMsg(trace_ctx, "\tmax_num_ref_frames = %u\n", p->max_num_ref_frames);
4083 va_TraceMsg(trace_ctx, "\tpicture_width_in_mbs = %d\n", p->picture_width_in_mbs);
4084 va_TraceMsg(trace_ctx, "\tpicture_height_in_mbs = %d\n", p->picture_height_in_mbs);
4085 va_TraceMsg(trace_ctx, "\tchroma_format_idc = %d\n", p->seq_fields.bits.chroma_format_idc);
4086 va_TraceMsg(trace_ctx, "\tframe_mbs_only_flag = %d\n", p->seq_fields.bits.frame_mbs_only_flag);
4087 va_TraceMsg(trace_ctx, "\tmb_adaptive_frame_field_flag = %d\n", p->seq_fields.bits.mb_adaptive_frame_field_flag);
4088 va_TraceMsg(trace_ctx, "\tseq_scaling_matrix_present_flag = %d\n", p->seq_fields.bits.seq_scaling_matrix_present_flag);
4089 va_TraceMsg(trace_ctx, "\tdirect_8x8_inference_flag = %d\n", p->seq_fields.bits.direct_8x8_inference_flag);
4090 va_TraceMsg(trace_ctx, "\tlog2_max_frame_num_minus4 = %d\n", p->seq_fields.bits.log2_max_frame_num_minus4);
4091 va_TraceMsg(trace_ctx, "\tpic_order_cnt_type = %d\n", p->seq_fields.bits.pic_order_cnt_type);
4092 va_TraceMsg(trace_ctx, "\tlog2_max_pic_order_cnt_lsb_minus4 = %d\n", p->seq_fields.bits.log2_max_pic_order_cnt_lsb_minus4);
4093 va_TraceMsg(trace_ctx, "\tdelta_pic_order_always_zero_flag = %d\n", p->seq_fields.bits.delta_pic_order_always_zero_flag);
4094 va_TraceMsg(trace_ctx, "\tbit_depth_luma_minus8 = %d\n", p->bit_depth_luma_minus8);
4095 va_TraceMsg(trace_ctx, "\tbit_depth_chroma_minus8 = %d\n", p->bit_depth_chroma_minus8);
4096 va_TraceMsg(trace_ctx, "\tnum_ref_frames_in_pic_order_cnt_cycle = %d\n", p->num_ref_frames_in_pic_order_cnt_cycle);
4097 va_TraceMsg(trace_ctx, "\toffset_for_non_ref_pic = %d\n", p->offset_for_non_ref_pic);
4098 va_TraceMsg(trace_ctx, "\toffset_for_top_to_bottom_field = %d\n", p->offset_for_top_to_bottom_field);
4099 for (i = 0; (i < p->max_num_ref_frames) && (i < 32); ++i)
4100 va_TraceMsg(trace_ctx, "\toffset_for_ref_frame[%d] = %d\n", i, p->offset_for_ref_frame[i]);
4101 va_TraceMsg(trace_ctx, "\tframe_cropping_flag = %d\n", p->frame_cropping_flag);
4102 va_TraceMsg(trace_ctx, "\tframe_crop_left_offset = %u\n", p->frame_crop_left_offset);
4103 va_TraceMsg(trace_ctx, "\tframe_crop_right_offset = %u\n", p->frame_crop_right_offset);
4104 va_TraceMsg(trace_ctx, "\tframe_crop_top_offset = %u\n", p->frame_crop_top_offset);
4105 va_TraceMsg(trace_ctx, "\tframe_crop_bottom_offset = %u\n", p->frame_crop_bottom_offset);
4106 va_TraceMsg(trace_ctx, "\tvui_parameters_present_flag = %d\n", p->vui_parameters_present_flag);
4107 va_TraceMsg(trace_ctx, "\taspect_ratio_info_present_flag = %d\n", p->vui_fields.bits.aspect_ratio_info_present_flag);
4108 va_TraceMsg(trace_ctx, "\ttiming_info_present_flag = %d\n", p->vui_fields.bits.timing_info_present_flag);
4109 va_TraceMsg(trace_ctx, "\tbitstream_restriction_flag = %d\n", p->vui_fields.bits.bitstream_restriction_flag);
4110 va_TraceMsg(trace_ctx, "\tlog2_max_mv_length_horizontal = %d\n", p->vui_fields.bits.log2_max_mv_length_horizontal);
4111 va_TraceMsg(trace_ctx, "\tlog2_max_mv_length_vertical = %d\n", p->vui_fields.bits.log2_max_mv_length_vertical);
4112 va_TraceMsg(trace_ctx, "\taspect_ratio_idc = %d\n", p->aspect_ratio_idc);
4113 va_TraceMsg(trace_ctx, "\tsar_width = %u\n", p->sar_width);
4114 va_TraceMsg(trace_ctx, "\tsar_height = %u\n", p->sar_height);
4115 va_TraceMsg(trace_ctx, "\tnum_units_in_tick = %u\n", p->num_units_in_tick);
4116 va_TraceMsg(trace_ctx, "\ttime_scale = %u\n", p->time_scale);
4117
4118 va_TraceMsg(trace_ctx, NULL);
4119
4120 return;
4121 }
4122
4123
va_TraceVAEncPictureParameterBufferH264(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)4124 static void va_TraceVAEncPictureParameterBufferH264(
4125 VADisplay dpy,
4126 VAContextID context,
4127 VABufferID buffer,
4128 VABufferType type,
4129 unsigned int size,
4130 unsigned int num_elements,
4131 void *data)
4132 {
4133 VAEncPictureParameterBufferH264 *p = (VAEncPictureParameterBufferH264 *)data;
4134 DPY2TRACECTX(dpy, context, VA_INVALID_ID);
4135 int i;
4136
4137 va_TraceMsg(trace_ctx, "\t--VAEncPictureParameterBufferH264\n");
4138
4139 va_TraceMsg(trace_ctx, "\tCurrPic.picture_id = 0x%08x\n", p->CurrPic.picture_id);
4140 va_TraceMsg(trace_ctx, "\tCurrPic.frame_idx = %u\n", p->CurrPic.frame_idx);
4141 va_TraceMsg(trace_ctx, "\tCurrPic.flags = 0x%08x\n", p->CurrPic.flags);
4142 va_TraceMsg(trace_ctx, "\tCurrPic.TopFieldOrderCnt = %d\n", p->CurrPic.TopFieldOrderCnt);
4143 va_TraceMsg(trace_ctx, "\tCurrPic.BottomFieldOrderCnt = %d\n", p->CurrPic.BottomFieldOrderCnt);
4144 va_TraceMsg(trace_ctx, "\tReferenceFrames (TopFieldOrderCnt-BottomFieldOrderCnt-picture_id-frame_idx-flags):\n");
4145 for (i = 0; i < 16; i++) {
4146 if ((p->ReferenceFrames[i].picture_id != VA_INVALID_SURFACE) &&
4147 ((p->ReferenceFrames[i].flags & VA_PICTURE_H264_INVALID) == 0)) {
4148 va_TraceMsg(trace_ctx, "\t\t%08d-%08d-0x%08x-%08u-0x%08x\n",
4149 p->ReferenceFrames[i].TopFieldOrderCnt,
4150 p->ReferenceFrames[i].BottomFieldOrderCnt,
4151 p->ReferenceFrames[i].picture_id,
4152 p->ReferenceFrames[i].frame_idx,
4153 p->ReferenceFrames[i].flags
4154 );
4155 } else
4156 break;
4157 }
4158 va_TraceMsg(trace_ctx, "\tcoded_buf = %08x\n", p->coded_buf);
4159 va_TraceMsg(trace_ctx, "\tpic_parameter_set_id = %d\n", p->pic_parameter_set_id);
4160 va_TraceMsg(trace_ctx, "\tseq_parameter_set_id = %d\n", p->seq_parameter_set_id);
4161 va_TraceMsg(trace_ctx, "\tlast_picture = 0x%08x\n", p->last_picture);
4162 va_TraceMsg(trace_ctx, "\tframe_num = %d\n", p->frame_num);
4163 va_TraceMsg(trace_ctx, "\tpic_init_qp = %d\n", p->pic_init_qp);
4164 va_TraceMsg(trace_ctx, "\tnum_ref_idx_l0_active_minus1 = %d\n", p->num_ref_idx_l0_active_minus1);
4165 va_TraceMsg(trace_ctx, "\tnum_ref_idx_l1_active_minus1 = %d\n", p->num_ref_idx_l1_active_minus1);
4166 va_TraceMsg(trace_ctx, "\tchroma_qp_index_offset = %d\n", p->chroma_qp_index_offset);
4167 va_TraceMsg(trace_ctx, "\tsecond_chroma_qp_index_offset = %d\n", p->second_chroma_qp_index_offset);
4168 va_TraceMsg(trace_ctx, "\tpic_fields = 0x%03x\n", p->pic_fields.value);
4169 va_TraceMsg(trace_ctx, "\tidr_pic_flag = %d\n", p->pic_fields.bits.idr_pic_flag);
4170 va_TraceMsg(trace_ctx, "\treference_pic_flag = %d\n", p->pic_fields.bits.reference_pic_flag);
4171 va_TraceMsg(trace_ctx, "\tentropy_coding_mode_flag = %d\n", p->pic_fields.bits.entropy_coding_mode_flag);
4172 va_TraceMsg(trace_ctx, "\tweighted_pred_flag = %d\n", p->pic_fields.bits.weighted_pred_flag);
4173 va_TraceMsg(trace_ctx, "\tweighted_bipred_idc = %d\n", p->pic_fields.bits.weighted_bipred_idc);
4174 va_TraceMsg(trace_ctx, "\tconstrained_intra_pred_flag = %d\n", p->pic_fields.bits.constrained_intra_pred_flag);
4175 va_TraceMsg(trace_ctx, "\ttransform_8x8_mode_flag = %d\n", p->pic_fields.bits.transform_8x8_mode_flag);
4176 va_TraceMsg(trace_ctx, "\tdeblocking_filter_control_present_flag = %d\n", p->pic_fields.bits.deblocking_filter_control_present_flag);
4177 va_TraceMsg(trace_ctx, "\tredundant_pic_cnt_present_flag = %d\n", p->pic_fields.bits.redundant_pic_cnt_present_flag);
4178 va_TraceMsg(trace_ctx, "\tpic_order_present_flag = %d\n", p->pic_fields.bits.pic_order_present_flag);
4179 va_TraceMsg(trace_ctx, "\tpic_scaling_matrix_present_flag = %d\n", p->pic_fields.bits.pic_scaling_matrix_present_flag);
4180
4181 va_TraceMsg(trace_ctx, NULL);
4182
4183 return;
4184 }
4185
va_TraceVAEncSliceParameterBuffer(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)4186 static void va_TraceVAEncSliceParameterBuffer(
4187 VADisplay dpy,
4188 VAContextID context,
4189 VABufferID buffer,
4190 VABufferType type,
4191 unsigned int size,
4192 unsigned int num_elements,
4193 void *data)
4194 {
4195 VAEncSliceParameterBuffer* p = (VAEncSliceParameterBuffer*)data;
4196 DPY2TRACECTX(dpy, context, VA_INVALID_ID);
4197
4198 va_TraceMsg(trace_ctx, "\t--VAEncSliceParameterBuffer\n");
4199 va_TraceMsg(trace_ctx, "\tstart_row_number = %d\n", p->start_row_number);
4200 va_TraceMsg(trace_ctx, "\tslice_height = %d\n", p->slice_height);
4201 va_TraceMsg(trace_ctx, "\tslice_flags.is_intra = %d\n", p->slice_flags.bits.is_intra);
4202 va_TraceMsg(trace_ctx, "\tslice_flags.disable_deblocking_filter_idc = %d\n", p->slice_flags.bits.disable_deblocking_filter_idc);
4203 va_TraceMsg(trace_ctx, "\tslice_flags.uses_long_term_ref = %d\n", p->slice_flags.bits.uses_long_term_ref);
4204 va_TraceMsg(trace_ctx, "\tslice_flags.is_long_term_ref = %d\n", p->slice_flags.bits.is_long_term_ref);
4205 va_TraceMsg(trace_ctx, NULL);
4206
4207 return;
4208 }
4209
va_TraceVAEncSliceParameterBufferH264(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)4210 static void va_TraceVAEncSliceParameterBufferH264(
4211 VADisplay dpy,
4212 VAContextID context,
4213 VABufferID buffer,
4214 VABufferType type,
4215 unsigned int size,
4216 unsigned int num_elements,
4217 void *data)
4218 {
4219 VAEncSliceParameterBufferH264* p = (VAEncSliceParameterBufferH264*)data;
4220 DPY2TRACECTX(dpy, context, VA_INVALID_ID);
4221 int i;
4222
4223 if (!p)
4224 return;
4225
4226 va_TraceMsg(trace_ctx, "\t--VAEncSliceParameterBufferH264\n");
4227 va_TraceMsg(trace_ctx, "\tmacroblock_address = %u\n", p->macroblock_address);
4228 va_TraceMsg(trace_ctx, "\tnum_macroblocks = %u\n", p->num_macroblocks);
4229 va_TraceMsg(trace_ctx, "\tmacroblock_info = %08x\n", p->macroblock_info);
4230 va_TraceMsg(trace_ctx, "\tslice_type = %d\n", p->slice_type);
4231 va_TraceMsg(trace_ctx, "\tpic_parameter_set_id = %d\n", p->pic_parameter_set_id);
4232 va_TraceMsg(trace_ctx, "\tidr_pic_id = %d\n", p->idr_pic_id);
4233 va_TraceMsg(trace_ctx, "\tpic_order_cnt_lsb = %d\n", p->pic_order_cnt_lsb);
4234 va_TraceMsg(trace_ctx, "\tdelta_pic_order_cnt_bottom = %d\n", p->delta_pic_order_cnt_bottom);
4235 va_TraceMsg(trace_ctx, "\tdelta_pic_order_cnt[0] = %d\n", p->delta_pic_order_cnt[0]);
4236 va_TraceMsg(trace_ctx, "\tdelta_pic_order_cnt[1] = %d\n", p->delta_pic_order_cnt[1]);
4237 va_TraceMsg(trace_ctx, "\tdirect_spatial_mv_pred_flag = %d\n", p->direct_spatial_mv_pred_flag);
4238 va_TraceMsg(trace_ctx, "\tnum_ref_idx_active_override_flag = %d\n", p->num_ref_idx_active_override_flag);
4239 va_TraceMsg(trace_ctx, "\tnum_ref_idx_l0_active_minus1 = %d\n", p->num_ref_idx_l0_active_minus1);
4240 va_TraceMsg(trace_ctx, "\tnum_ref_idx_l1_active_minus1 = %d\n", p->num_ref_idx_l1_active_minus1);
4241 va_TraceMsg(trace_ctx, "\tslice_beta_offset_div2 = %d\n", p->slice_beta_offset_div2);
4242
4243 va_TraceMsg(trace_ctx, "\tRefPicList0 (TopFieldOrderCnt-BottomFieldOrderCnt-picture_id-frame_idx-flags):\n");
4244
4245
4246
4247 for (i = 0; i < 32; i++) {
4248 if ((p->RefPicList0[i].picture_id != VA_INVALID_SURFACE) &&
4249 ((p->RefPicList0[i].flags & VA_PICTURE_H264_INVALID) == 0))
4250 va_TraceMsg(trace_ctx, "\t\t%08d-%08d-0x%08x-%08d-0x%08x\n",
4251 p->RefPicList0[i].TopFieldOrderCnt,
4252 p->RefPicList0[i].BottomFieldOrderCnt,
4253 p->RefPicList0[i].picture_id,
4254 p->RefPicList0[i].frame_idx,
4255 p->RefPicList0[i].flags);
4256 else
4257 break;
4258 }
4259
4260 va_TraceMsg(trace_ctx, "\tRefPicList1 (TopFieldOrderCnt-BottomFieldOrderCnt-picture_id-frame_idx-flags):\n");
4261 for (i = 0; i < 32; i++) {
4262 if ((p->RefPicList1[i].picture_id != VA_INVALID_SURFACE) &&
4263 ((p->RefPicList1[i].flags & VA_PICTURE_H264_INVALID) == 0))
4264 va_TraceMsg(trace_ctx, "\t\t%08d-%08d-0x%08x-%08d-0x%08d\n",
4265 p->RefPicList1[i].TopFieldOrderCnt,
4266 p->RefPicList1[i].BottomFieldOrderCnt,
4267 p->RefPicList1[i].picture_id,
4268 p->RefPicList1[i].frame_idx,
4269 p->RefPicList1[i].flags
4270 );
4271 else
4272 break;
4273 }
4274
4275 va_TraceMsg(trace_ctx, "\tluma_log2_weight_denom = %d\n", p->luma_log2_weight_denom);
4276 va_TraceMsg(trace_ctx, "\tchroma_log2_weight_denom = %d\n", p->chroma_log2_weight_denom);
4277 va_TraceMsg(trace_ctx, "\tluma_weight_l0_flag = %d\n", p->luma_weight_l0_flag);
4278 if (p->luma_weight_l0_flag) {
4279 for (i = 0; (i <= p->num_ref_idx_l0_active_minus1) && (i < 32); i++) {
4280 va_TraceMsg(trace_ctx, "\t\t%d\t%d\n",
4281 p->luma_weight_l0[i],
4282 p->luma_offset_l0[i]);
4283 }
4284 }
4285
4286 va_TraceMsg(trace_ctx, "\tchroma_weight_l0_flag = %d\n", p->chroma_weight_l0_flag);
4287 if (p->chroma_weight_l0_flag) {
4288 for (i = 0; (i <= p->num_ref_idx_l0_active_minus1) && (i < 32); i++) {
4289 va_TraceMsg(trace_ctx, "\t\t%d\t%d\t%d\t%d\n",
4290 p->chroma_weight_l0[i][0],
4291 p->chroma_offset_l0[i][0],
4292 p->chroma_weight_l0[i][1],
4293 p->chroma_offset_l0[i][1]);
4294 }
4295 }
4296
4297 va_TraceMsg(trace_ctx, "\tluma_weight_l1_flag = %d\n", p->luma_weight_l1_flag);
4298 if (p->luma_weight_l1_flag) {
4299 for (i = 0; (i <= p->num_ref_idx_l1_active_minus1) && (i < 32); i++) {
4300 va_TraceMsg(trace_ctx, "\t\t%d\t\t%d\n",
4301 p->luma_weight_l1[i],
4302 p->luma_offset_l1[i]);
4303 }
4304 }
4305
4306 va_TraceMsg(trace_ctx, "\tchroma_weight_l1_flag = %d\n", p->chroma_weight_l1_flag);
4307 if (p->chroma_weight_l1_flag && p->num_ref_idx_l1_active_minus1 < 32) {
4308 for (i = 0; (i <= p->num_ref_idx_l1_active_minus1) && (i < 32); i++) {
4309 va_TraceMsg(trace_ctx, "\t\t%d\t%d\t%d\t%d\n",
4310 p->chroma_weight_l1[i][0],
4311 p->chroma_offset_l1[i][0],
4312 p->chroma_weight_l1[i][1],
4313 p->chroma_offset_l1[i][1]);
4314 }
4315 }
4316 va_TraceMsg(trace_ctx, NULL);
4317
4318 va_TraceMsg(trace_ctx, "\tcabac_init_idc = %d\n", p->cabac_init_idc);
4319 va_TraceMsg(trace_ctx, "\tslice_qp_delta = %d\n", p->slice_qp_delta);
4320 va_TraceMsg(trace_ctx, "\tdisable_deblocking_filter_idc = %d\n", p->disable_deblocking_filter_idc);
4321 va_TraceMsg(trace_ctx, "\tslice_alpha_c0_offset_div2 = %d\n", p->slice_alpha_c0_offset_div2);
4322 va_TraceMsg(trace_ctx, "\tslice_beta_offset_div2 = %d\n", p->slice_beta_offset_div2);
4323 va_TraceMsg(trace_ctx, NULL);
4324
4325 return;
4326 }
4327
4328
va_TraceVAEncPackedHeaderParameterBufferType(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)4329 static void va_TraceVAEncPackedHeaderParameterBufferType(
4330 VADisplay dpy,
4331 VAContextID context,
4332 VABufferID buffer,
4333 VABufferType type,
4334 unsigned int size,
4335 unsigned int num_elements,
4336 void *data)
4337 {
4338 VAEncPackedHeaderParameterBuffer* p = (VAEncPackedHeaderParameterBuffer*)data;
4339 DPY2TRACECTX(dpy, context, VA_INVALID_ID);
4340
4341 if (!p)
4342 return;
4343 va_TraceMsg(trace_ctx, "\t--VAEncPackedHeaderParameterBuffer\n");
4344 va_TraceMsg(trace_ctx, "\ttype = 0x%08x\n", p->type);
4345 va_TraceMsg(trace_ctx, "\tbit_length = %d\n", p->bit_length);
4346 va_TraceMsg(trace_ctx, "\thas_emulation_bytes = %d\n", p->has_emulation_bytes);
4347 va_TraceMsg(trace_ctx, NULL);
4348
4349 return;
4350 }
4351
va_TraceVAEncMiscParameterBuffer(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)4352 static void va_TraceVAEncMiscParameterBuffer(
4353 VADisplay dpy,
4354 VAContextID context,
4355 VABufferID buffer,
4356 VABufferType type,
4357 unsigned int size,
4358 unsigned int num_elements,
4359 void *data)
4360 {
4361 VAEncMiscParameterBuffer* tmp = (VAEncMiscParameterBuffer*)data;
4362 DPY2TRACECTX(dpy, context, VA_INVALID_ID);
4363
4364 switch (tmp->type) {
4365 case VAEncMiscParameterTypeFrameRate: {
4366 VAEncMiscParameterFrameRate *p = (VAEncMiscParameterFrameRate *)tmp->data;
4367 va_TraceMsg(trace_ctx, "\t--VAEncMiscParameterFrameRate\n");
4368 va_TraceMsg(trace_ctx, "\tframerate = %d\n", p->framerate);
4369 va_TraceMsg(trace_ctx, "\tframerate_flags.temporal_id = %d\n", p->framerate_flags.bits.temporal_id);
4370 break;
4371 }
4372 case VAEncMiscParameterTypeRateControl: {
4373 VAEncMiscParameterRateControl *p = (VAEncMiscParameterRateControl *)tmp->data;
4374
4375 va_TraceMsg(trace_ctx, "\t--VAEncMiscParameterRateControl\n");
4376 va_TraceMsg(trace_ctx, "\tbits_per_second = %d\n", p->bits_per_second);
4377 va_TraceMsg(trace_ctx, "\ttarget_percentage = %d\n", p->target_percentage);
4378 va_TraceMsg(trace_ctx, "\twindow_size = %d\n", p->window_size);
4379 va_TraceMsg(trace_ctx, "\tinitial_qp = %d\n", p->initial_qp);
4380 va_TraceMsg(trace_ctx, "\tmin_qp = %d\n", p->min_qp);
4381 va_TraceMsg(trace_ctx, "\tbasic_unit_size = %d\n", p->basic_unit_size);
4382 va_TraceMsg(trace_ctx, "\trc_flags.reset = %d \n", p->rc_flags.bits.reset);
4383 va_TraceMsg(trace_ctx, "\trc_flags.disable_frame_skip = %d\n", p->rc_flags.bits.disable_frame_skip);
4384 va_TraceMsg(trace_ctx, "\trc_flags.disable_bit_stuffing = %d\n", p->rc_flags.bits.disable_bit_stuffing);
4385 va_TraceMsg(trace_ctx, "\trc_flags.mb_rate_control = %d\n", p->rc_flags.bits.mb_rate_control);
4386 va_TraceMsg(trace_ctx, "\trc_flags.temporal_id = %d\n", p->rc_flags.bits.temporal_id);
4387 va_TraceMsg(trace_ctx, "\trc_flags.cfs_I_frames = %d\n", p->rc_flags.bits.cfs_I_frames);
4388 va_TraceMsg(trace_ctx, "\trc_flags.enable_parallel_brc = %d\n", p->rc_flags.bits.enable_parallel_brc);
4389 va_TraceMsg(trace_ctx, "\trc_flags.enable_dynamic_scaling = %d\n", p->rc_flags.bits.enable_dynamic_scaling);
4390 va_TraceMsg(trace_ctx, "\trc_flags.frame_tolerance_mode = %d\n", p->rc_flags.bits.frame_tolerance_mode);
4391 va_TraceMsg(trace_ctx, "\tICQ_quality_factor = %d\n", p->ICQ_quality_factor);
4392 va_TraceMsg(trace_ctx, "\tmax_qp = %d\n", p->max_qp);
4393 va_TraceMsg(trace_ctx, "\tquality_factor = %d\n", p->quality_factor);
4394 va_TraceMsg(trace_ctx, "\ttarget_frame_size = %d\n", p->target_frame_size);
4395 break;
4396 }
4397 case VAEncMiscParameterTypeMaxSliceSize: {
4398 VAEncMiscParameterMaxSliceSize *p = (VAEncMiscParameterMaxSliceSize *)tmp->data;
4399
4400 va_TraceMsg(trace_ctx, "\t--VAEncMiscParameterTypeMaxSliceSize\n");
4401 va_TraceMsg(trace_ctx, "\tmax_slice_size = %d\n", p->max_slice_size);
4402 break;
4403 }
4404 case VAEncMiscParameterTypeAIR: {
4405 VAEncMiscParameterAIR *p = (VAEncMiscParameterAIR *)tmp->data;
4406
4407 va_TraceMsg(trace_ctx, "\t--VAEncMiscParameterAIR\n");
4408 va_TraceMsg(trace_ctx, "\tair_num_mbs = %d\n", p->air_num_mbs);
4409 va_TraceMsg(trace_ctx, "\tair_threshold = %d\n", p->air_threshold);
4410 va_TraceMsg(trace_ctx, "\tair_auto = %d\n", p->air_auto);
4411 break;
4412 }
4413 case VAEncMiscParameterTypeHRD: {
4414 VAEncMiscParameterHRD *p = (VAEncMiscParameterHRD *)tmp->data;
4415
4416 va_TraceMsg(trace_ctx, "\t--VAEncMiscParameterHRD\n");
4417 va_TraceMsg(trace_ctx, "\tinitial_buffer_fullness = %d\n", p->initial_buffer_fullness);
4418 va_TraceMsg(trace_ctx, "\tbuffer_size = %d\n", p->buffer_size);
4419 break;
4420 }
4421 case VAEncMiscParameterTypeMaxFrameSize: {
4422 VAEncMiscParameterBufferMaxFrameSize *p = (VAEncMiscParameterBufferMaxFrameSize *)tmp->data;
4423
4424 va_TraceMsg(trace_ctx, "\t--VAEncMiscParameterTypeMaxFrameSize\n");
4425 va_TraceMsg(trace_ctx, "\tmax_frame_size = %d\n", p->max_frame_size);
4426 break;
4427 }
4428 case VAEncMiscParameterTypeMultiPassFrameSize: {
4429 int i;
4430 VAEncMiscParameterBufferMultiPassFrameSize *p = (VAEncMiscParameterBufferMultiPassFrameSize *)tmp->data;
4431
4432 va_TraceMsg(trace_ctx, "\t--VAEncMiscParameterTypeMultiPassFrameSize\n");
4433 va_TraceMsg(trace_ctx, "\tmax_frame_size = %d\n", p->max_frame_size);
4434 va_TraceMsg(trace_ctx, "\tnum_passes = %d\n", p->num_passes);
4435 for (i = 0; i < p->num_passes; ++i)
4436 va_TraceMsg(trace_ctx, "\tdelta_qp[%d] = %d\n", i, p->delta_qp[i]);
4437 break;
4438 }
4439 case VAEncMiscParameterTypeQualityLevel: {
4440 VAEncMiscParameterBufferQualityLevel *p = (VAEncMiscParameterBufferQualityLevel *)tmp->data;
4441
4442 va_TraceMsg(trace_ctx, "\t--VAEncMiscParameterBufferQualityLevel\n");
4443 va_TraceMsg(trace_ctx, "\tquality_level = %d\n", p->quality_level);
4444 break;
4445 }
4446 case VAEncMiscParameterTypeROI: {
4447 int i;
4448 VAEncMiscParameterBufferROI *p = (VAEncMiscParameterBufferROI *)tmp->data;
4449
4450 va_TraceMsg(trace_ctx, "\t--VAEncMiscParameterBufferROI\n");
4451 va_TraceMsg(trace_ctx, "\tnum_roi = %d\n", p->num_roi);
4452 va_TraceMsg(trace_ctx, "\tmax_delta_qp = %d\n", p->max_delta_qp);
4453 va_TraceMsg(trace_ctx, "\tmin_delta_qp = %d\n", p->min_delta_qp);
4454 va_TraceMsg(trace_ctx, "\troi_flags.bits.roi_value_is_qp_delta = %d\n", p->roi_flags.bits.roi_value_is_qp_delta);
4455 for (i = 0; i < p->num_roi; i++) {
4456 va_TraceMsg(trace_ctx, "\troi[%d].roi_rectangle.x = %d\n", i, p->roi[i].roi_rectangle.x);
4457 va_TraceMsg(trace_ctx, "\troi[%d].roi_rectangle.y = %d\n", i, p->roi[i].roi_rectangle.y);
4458 va_TraceMsg(trace_ctx, "\troi[%d].roi_rectangle.width = %d\n", i, p->roi[i].roi_rectangle.width);
4459 va_TraceMsg(trace_ctx, "\troi[%d].roi_rectangle.height = %d\n", i, p->roi[i].roi_rectangle.height);
4460 va_TraceMsg(trace_ctx, "\troi[%d].roi_value = %d\n", i, p->roi[i].roi_value);
4461 }
4462 break;
4463 }
4464 case VAEncMiscParameterTypeRIR: {
4465 VAEncMiscParameterRIR *p = (VAEncMiscParameterRIR *)tmp->data;
4466
4467 va_TraceMsg(trace_ctx, "\t--VAEncMiscParameterRIR\n");
4468 va_TraceMsg(trace_ctx, "\trir_flags.bits.enable_rir_column = %d\n", p->rir_flags.bits.enable_rir_column);
4469 va_TraceMsg(trace_ctx, "\trir_flags.bits.enable_rir_row = %d\n", p->rir_flags.bits.enable_rir_row);
4470 va_TraceMsg(trace_ctx, "\tintra_insertion_location = %d\n", p->intra_insertion_location);
4471 va_TraceMsg(trace_ctx, "\tintra_insert_size = %d\n", p->intra_insert_size);
4472 va_TraceMsg(trace_ctx, "\tqp_delta_for_inserted_intra = %d\n", p->qp_delta_for_inserted_intra);
4473 break;
4474 }
4475 case VAEncMiscParameterTypeEncQuality: {
4476 int i;
4477 VAEncMiscParameterEncQuality *p = (VAEncMiscParameterEncQuality *)tmp->data;
4478
4479 va_TraceMsg(trace_ctx, "\t--VAEncMiscParameterEncQuality\n");
4480 va_TraceMsg(trace_ctx, "\tuseRawPicForRef = %d\n", p->useRawPicForRef);
4481 va_TraceMsg(trace_ctx, "\tskipCheckDisable = %d\n", p->skipCheckDisable);
4482 va_TraceMsg(trace_ctx, "\tFTQOverride = %d\n", p->FTQOverride);
4483 va_TraceMsg(trace_ctx, "\tFTQEnable = %d\n", p->FTQEnable);
4484 va_TraceMsg(trace_ctx, "\tFTQSkipThresholdLUTInput = %d\n", p->FTQSkipThresholdLUTInput);
4485 va_TraceMsg(trace_ctx, "\tNonFTQSkipThresholdLUTInput = %d\n", p->NonFTQSkipThresholdLUTInput);
4486 va_TraceMsg(trace_ctx, "\tReservedBit = %d\n", p->ReservedBit);
4487 va_TraceMsg(trace_ctx, "\tdirectBiasAdjustmentEnable = %d\n", p->directBiasAdjustmentEnable);
4488 va_TraceMsg(trace_ctx, "\tglobalMotionBiasAdjustmentEnable = %d\n", p->globalMotionBiasAdjustmentEnable);
4489 va_TraceMsg(trace_ctx, "\tHMEMVCostScalingFactor = %d\n", p->HMEMVCostScalingFactor);
4490 va_TraceMsg(trace_ctx, "\tHMEDisable = %d\n", p->HMEDisable);
4491 va_TraceMsg(trace_ctx, "\tSuperHMEDisable = %d\n", p->SuperHMEDisable);
4492 va_TraceMsg(trace_ctx, "\tUltraHMEDisable = %d\n", p->UltraHMEDisable);
4493 va_TraceMsg(trace_ctx, "\tPanicModeDisable = %d\n", p->PanicModeDisable);
4494 va_TraceMsg(trace_ctx, "\tForceRepartitionCheck = %d\n", p->ForceRepartitionCheck);
4495 if (p->FTQSkipThresholdLUTInput) {
4496 va_TraceMsg(trace_ctx, "\tFTQSkipThresholdLUT[52]=\n");
4497 for (i = 0; i < 52; i++) {
4498 va_TraceMsg(trace_ctx, "\t%d", p->FTQSkipThresholdLUT[i]);
4499 if ((i + 1) % 8 == 0)
4500 TRACE_NEWLINE();
4501 }
4502 va_TracePrint(trace_ctx, "\n");
4503 }
4504 if (p->NonFTQSkipThresholdLUTInput) {
4505 va_TraceMsg(trace_ctx, "\tNonFTQSkipThresholdLUT[52]=\n");
4506 for (i = 0; i < 52; i++) {
4507 va_TraceMsg(trace_ctx, "\t%d", p->NonFTQSkipThresholdLUT[i]);
4508 if ((i + 1) % 8 == 0)
4509 TRACE_NEWLINE();
4510 }
4511 va_TracePrint(trace_ctx, "\n");
4512 }
4513 break;
4514 }
4515 case VAEncMiscParameterTypeSkipFrame: {
4516 VAEncMiscParameterSkipFrame *p = (VAEncMiscParameterSkipFrame *)tmp->data;
4517 va_TraceMsg(trace_ctx, "\t--VAEncMiscParameterSkipFrame\n");
4518 va_TraceMsg(trace_ctx, "\tskip_frame_flag = %d\n", p->skip_frame_flag);
4519 va_TraceMsg(trace_ctx, "\tnum_skip_frames = %d\n", p->num_skip_frames);
4520 va_TraceMsg(trace_ctx, "\tsize_skip_frames = %d\n", p->size_skip_frames);
4521 break;
4522 }
4523 case VAEncMiscParameterTypeTemporalLayerStructure: {
4524 int i;
4525 VAEncMiscParameterTemporalLayerStructure *p = (VAEncMiscParameterTemporalLayerStructure *)tmp->data;
4526 va_TraceMsg(trace_ctx, "\t--VAEncMiscParameterTemporalLayerStructure\n");
4527 va_TraceMsg(trace_ctx, "\tnumber_of_layers = %d\n", p->number_of_layers);
4528 va_TraceMsg(trace_ctx, "\tperiodicity = %d\n", p->periodicity);
4529 va_TraceMsg(trace_ctx, "\tlayer_id =\n");
4530 va_TraceMsg(trace_ctx, "");
4531 for (i = 0; i < 32; i++) {
4532 if (i % 8 == 0)
4533 va_TracePrint(trace_ctx, "\t");
4534
4535 va_TracePrint(trace_ctx, "\t%u", p->layer_id[i]);
4536 if ((i + 1) % 8 == 0) {
4537 if (i == 31)
4538 va_TracePrint(trace_ctx, "\n");
4539 else
4540 TRACE_NEWLINE();
4541 }
4542 }
4543 break;
4544 }
4545 default:
4546 va_TraceMsg(trace_ctx, "Unknown VAEncMiscParameterBuffer(type = %d):\n", tmp->type);
4547 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, data);
4548 break;
4549 }
4550 va_TraceMsg(trace_ctx, NULL);
4551
4552 return;
4553 }
4554
4555
va_TraceVAPictureParameterBufferVC1(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)4556 static void va_TraceVAPictureParameterBufferVC1(
4557 VADisplay dpy,
4558 VAContextID context,
4559 VABufferID buffer,
4560 VABufferType type,
4561 unsigned int size,
4562 unsigned int num_elements,
4563 void *data
4564 )
4565 {
4566 VAPictureParameterBufferVC1* p = (VAPictureParameterBufferVC1*)data;
4567 DPY2TRACECTX(dpy, context, VA_INVALID_ID);
4568
4569 va_TraceMsg(trace_ctx, "\t--VAPictureParameterBufferVC1\n");
4570
4571 va_TraceMsg(trace_ctx, "\tforward_reference_picture = 0x%08x\n", p->forward_reference_picture);
4572 va_TraceMsg(trace_ctx, "\tbackward_reference_picture = 0x%08x\n", p->backward_reference_picture);
4573 va_TraceMsg(trace_ctx, "\tinloop_decoded_picture = 0x%08x\n", p->inloop_decoded_picture);
4574
4575 va_TraceMsg(trace_ctx, "\tpulldown = %d\n", p->sequence_fields.bits.pulldown);
4576 va_TraceMsg(trace_ctx, "\tinterlace = %d\n", p->sequence_fields.bits.interlace);
4577 va_TraceMsg(trace_ctx, "\ttfcntrflag = %d\n", p->sequence_fields.bits.tfcntrflag);
4578 va_TraceMsg(trace_ctx, "\tfinterpflag = %d\n", p->sequence_fields.bits.finterpflag);
4579 va_TraceMsg(trace_ctx, "\tpsf = %d\n", p->sequence_fields.bits.psf);
4580 va_TraceMsg(trace_ctx, "\tmultires = %d\n", p->sequence_fields.bits.multires);
4581 va_TraceMsg(trace_ctx, "\toverlap = %d\n", p->sequence_fields.bits.overlap);
4582 va_TraceMsg(trace_ctx, "\tsyncmarker = %d\n", p->sequence_fields.bits.syncmarker);
4583 va_TraceMsg(trace_ctx, "\trangered = %d\n", p->sequence_fields.bits.rangered);
4584 va_TraceMsg(trace_ctx, "\tmax_b_frames = %d\n", p->sequence_fields.bits.max_b_frames);
4585 va_TraceMsg(trace_ctx, "\tprofile = %d\n", p->sequence_fields.bits.profile);
4586 va_TraceMsg(trace_ctx, "\tcoded_width = %d\n", p->coded_width);
4587 va_TraceMsg(trace_ctx, "\tcoded_height = %d\n", p->coded_height);
4588 va_TraceMsg(trace_ctx, "\tclosed_entry = %d\n", p->entrypoint_fields.bits.closed_entry);
4589 va_TraceMsg(trace_ctx, "\tbroken_link = %d\n", p->entrypoint_fields.bits.broken_link);
4590 va_TraceMsg(trace_ctx, "\tclosed_entry = %d\n", p->entrypoint_fields.bits.closed_entry);
4591 va_TraceMsg(trace_ctx, "\tpanscan_flag = %d\n", p->entrypoint_fields.bits.panscan_flag);
4592 va_TraceMsg(trace_ctx, "\tloopfilter = %d\n", p->entrypoint_fields.bits.loopfilter);
4593 va_TraceMsg(trace_ctx, "\tconditional_overlap_flag = %d\n", p->conditional_overlap_flag);
4594 va_TraceMsg(trace_ctx, "\tfast_uvmc_flag = %d\n", p->fast_uvmc_flag);
4595 va_TraceMsg(trace_ctx, "\trange_mapping_luma_flag = %d\n", p->range_mapping_fields.bits.luma_flag);
4596 va_TraceMsg(trace_ctx, "\trange_mapping_luma = %d\n", p->range_mapping_fields.bits.luma);
4597 va_TraceMsg(trace_ctx, "\trange_mapping_chroma_flag = %d\n", p->range_mapping_fields.bits.chroma_flag);
4598 va_TraceMsg(trace_ctx, "\trange_mapping_chroma = %d\n", p->range_mapping_fields.bits.chroma);
4599 va_TraceMsg(trace_ctx, "\tb_picture_fraction = %d\n", p->b_picture_fraction);
4600 va_TraceMsg(trace_ctx, "\tcbp_table = %d\n", p->cbp_table);
4601 va_TraceMsg(trace_ctx, "\tmb_mode_table = %d\n", p->mb_mode_table);
4602 va_TraceMsg(trace_ctx, "\trange_reduction_frame = %d\n", p->range_reduction_frame);
4603 va_TraceMsg(trace_ctx, "\trounding_control = %d\n", p->rounding_control);
4604 va_TraceMsg(trace_ctx, "\tpost_processing = %d\n", p->post_processing);
4605 va_TraceMsg(trace_ctx, "\tpicture_resolution_index = %d\n", p->picture_resolution_index);
4606 va_TraceMsg(trace_ctx, "\tluma_scale = %d\n", p->luma_scale);
4607 va_TraceMsg(trace_ctx, "\tluma_shift = %d\n", p->luma_shift);
4608 va_TraceMsg(trace_ctx, "\tpicture_type = %d\n", p->picture_fields.bits.picture_type);
4609 va_TraceMsg(trace_ctx, "\tframe_coding_mode = %d\n", p->picture_fields.bits.frame_coding_mode);
4610 va_TraceMsg(trace_ctx, "\ttop_field_first = %d\n", p->picture_fields.bits.top_field_first);
4611 va_TraceMsg(trace_ctx, "\tis_first_field = %d\n", p->picture_fields.bits.is_first_field);
4612 va_TraceMsg(trace_ctx, "\tintensity_compensation = %d\n", p->picture_fields.bits.intensity_compensation);
4613 va_TraceMsg(trace_ctx, "\tmv_type_mb = %d\n", p->raw_coding.flags.mv_type_mb);
4614 va_TraceMsg(trace_ctx, "\tdirect_mb = %d\n", p->raw_coding.flags.direct_mb);
4615 va_TraceMsg(trace_ctx, "\tskip_mb = %d\n", p->raw_coding.flags.skip_mb);
4616 va_TraceMsg(trace_ctx, "\tfield_tx = %d\n", p->raw_coding.flags.field_tx);
4617 va_TraceMsg(trace_ctx, "\tforward_mb = %d\n", p->raw_coding.flags.forward_mb);
4618 va_TraceMsg(trace_ctx, "\tac_pred = %d\n", p->raw_coding.flags.ac_pred);
4619 va_TraceMsg(trace_ctx, "\toverflags = %d\n", p->raw_coding.flags.overflags);
4620 va_TraceMsg(trace_ctx, "\tbp_mv_type_mb = %d\n", p->bitplane_present.flags.bp_mv_type_mb);
4621 va_TraceMsg(trace_ctx, "\tbp_direct_mb = %d\n", p->bitplane_present.flags.bp_direct_mb);
4622 va_TraceMsg(trace_ctx, "\tbp_skip_mb = %d\n", p->bitplane_present.flags.bp_skip_mb);
4623 va_TraceMsg(trace_ctx, "\tbp_field_tx = %d\n", p->bitplane_present.flags.bp_field_tx);
4624 va_TraceMsg(trace_ctx, "\tbp_forward_mb = %d\n", p->bitplane_present.flags.bp_forward_mb);
4625 va_TraceMsg(trace_ctx, "\tbp_ac_pred = %d\n", p->bitplane_present.flags.bp_ac_pred);
4626 va_TraceMsg(trace_ctx, "\tbp_overflags = %d\n", p->bitplane_present.flags.bp_overflags);
4627 va_TraceMsg(trace_ctx, "\treference_distance_flag = %d\n", p->reference_fields.bits.reference_distance_flag);
4628 va_TraceMsg(trace_ctx, "\treference_distance = %d\n", p->reference_fields.bits.reference_distance);
4629 va_TraceMsg(trace_ctx, "\tnum_reference_pictures = %d\n", p->reference_fields.bits.num_reference_pictures);
4630 va_TraceMsg(trace_ctx, "\treference_field_pic_indicator = %d\n", p->reference_fields.bits.reference_field_pic_indicator);
4631 va_TraceMsg(trace_ctx, "\tmv_mode = %d\n", p->mv_fields.bits.mv_mode);
4632 va_TraceMsg(trace_ctx, "\tmv_mode2 = %d\n", p->mv_fields.bits.mv_mode2);
4633 va_TraceMsg(trace_ctx, "\tmv_table = %d\n", p->mv_fields.bits.mv_table);
4634 va_TraceMsg(trace_ctx, "\ttwo_mv_block_pattern_table = %d\n", p->mv_fields.bits.two_mv_block_pattern_table);
4635 va_TraceMsg(trace_ctx, "\tfour_mv_switch = %d\n", p->mv_fields.bits.four_mv_switch);
4636 va_TraceMsg(trace_ctx, "\tfour_mv_block_pattern_table = %d\n", p->mv_fields.bits.four_mv_block_pattern_table);
4637 va_TraceMsg(trace_ctx, "\textended_mv_flag = %d\n", p->mv_fields.bits.extended_mv_flag);
4638 va_TraceMsg(trace_ctx, "\textended_mv_range = %d\n", p->mv_fields.bits.extended_mv_range);
4639 va_TraceMsg(trace_ctx, "\textended_dmv_flag = %d\n", p->mv_fields.bits.extended_dmv_flag);
4640 va_TraceMsg(trace_ctx, "\textended_dmv_range = %d\n", p->mv_fields.bits.extended_dmv_range);
4641 va_TraceMsg(trace_ctx, "\tdquant = %d\n", p->pic_quantizer_fields.bits.dquant);
4642 va_TraceMsg(trace_ctx, "\tquantizer = %d\n", p->pic_quantizer_fields.bits.quantizer);
4643 va_TraceMsg(trace_ctx, "\thalf_qp = %d\n", p->pic_quantizer_fields.bits.half_qp);
4644 va_TraceMsg(trace_ctx, "\tpic_quantizer_scale = %d\n", p->pic_quantizer_fields.bits.pic_quantizer_scale);
4645 va_TraceMsg(trace_ctx, "\tpic_quantizer_type = %d\n", p->pic_quantizer_fields.bits.pic_quantizer_type);
4646 va_TraceMsg(trace_ctx, "\tdq_frame = %d\n", p->pic_quantizer_fields.bits.dq_frame);
4647 va_TraceMsg(trace_ctx, "\tdq_profile = %d\n", p->pic_quantizer_fields.bits.dq_profile);
4648 va_TraceMsg(trace_ctx, "\tdq_sb_edge = %d\n", p->pic_quantizer_fields.bits.dq_sb_edge);
4649 va_TraceMsg(trace_ctx, "\tdq_db_edge = %d\n", p->pic_quantizer_fields.bits.dq_db_edge);
4650 va_TraceMsg(trace_ctx, "\tdq_binary_level = %d\n", p->pic_quantizer_fields.bits.dq_binary_level);
4651 va_TraceMsg(trace_ctx, "\talt_pic_quantizer = %d\n", p->pic_quantizer_fields.bits.alt_pic_quantizer);
4652 va_TraceMsg(trace_ctx, "\tvariable_sized_transform_flag = %d\n", p->transform_fields.bits.variable_sized_transform_flag);
4653 va_TraceMsg(trace_ctx, "\tmb_level_transform_type_flag = %d\n", p->transform_fields.bits.mb_level_transform_type_flag);
4654 va_TraceMsg(trace_ctx, "\tframe_level_transform_type = %d\n", p->transform_fields.bits.frame_level_transform_type);
4655 va_TraceMsg(trace_ctx, "\ttransform_ac_codingset_idx1 = %d\n", p->transform_fields.bits.transform_ac_codingset_idx1);
4656 va_TraceMsg(trace_ctx, "\ttransform_ac_codingset_idx2 = %d\n", p->transform_fields.bits.transform_ac_codingset_idx2);
4657 va_TraceMsg(trace_ctx, "\tintra_transform_dc_table = %d\n", p->transform_fields.bits.intra_transform_dc_table);
4658 va_TraceMsg(trace_ctx, NULL);
4659 }
4660
va_TraceVASliceParameterBufferVC1(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)4661 static void va_TraceVASliceParameterBufferVC1(
4662 VADisplay dpy,
4663 VAContextID context,
4664 VABufferID buffer,
4665 VABufferType type,
4666 unsigned int size,
4667 unsigned int num_elements,
4668 void* data
4669 )
4670 {
4671 VASliceParameterBufferVC1 *p = (VASliceParameterBufferVC1*)data;
4672 DPY2TRACECTX(dpy, context, VA_INVALID_ID);
4673
4674 trace_ctx->trace_slice_no++;
4675 trace_ctx->trace_slice_size = p->slice_data_size;
4676
4677 va_TraceMsg(trace_ctx, "\t--VASliceParameterBufferVC1\n");
4678 va_TraceMsg(trace_ctx, "\tslice_data_size = %d\n", p->slice_data_size);
4679 va_TraceMsg(trace_ctx, "\tslice_data_offset = %d\n", p->slice_data_offset);
4680 va_TraceMsg(trace_ctx, "\tslice_data_flag = %d\n", p->slice_data_flag);
4681 va_TraceMsg(trace_ctx, "\tmacroblock_offset = %d\n", p->macroblock_offset);
4682 va_TraceMsg(trace_ctx, "\tslice_vertical_position = %d\n", p->slice_vertical_position);
4683 va_TraceMsg(trace_ctx, NULL);
4684 }
4685
va_TraceVAPictureParameterBufferVP8(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)4686 static void va_TraceVAPictureParameterBufferVP8(
4687 VADisplay dpy,
4688 VAContextID context,
4689 VABufferID buffer,
4690 VABufferType type,
4691 unsigned int size,
4692 unsigned int num_elements,
4693 void *data)
4694 {
4695 char tmp[1024];
4696 VAPictureParameterBufferVP8 *p = (VAPictureParameterBufferVP8 *)data;
4697 DPY2TRACECTX(dpy, context, VA_INVALID_ID);
4698 int i, j;
4699
4700 va_TraceMsg(trace_ctx, "\t--VAPictureParameterBufferVP8\n");
4701
4702 va_TraceMsg(trace_ctx, "\tframe_width = %d\n", p->frame_width);
4703 va_TraceMsg(trace_ctx, "\tframe_height = %d\n", p->frame_height);
4704 va_TraceMsg(trace_ctx, "\tlast_ref_frame = %x\n", p->last_ref_frame);
4705 va_TraceMsg(trace_ctx, "\tgolden_ref_frame = %x\n", p->golden_ref_frame);
4706 va_TraceMsg(trace_ctx, "\talt_ref_frame = %x\n", p->alt_ref_frame);
4707 va_TraceMsg(trace_ctx, "\tout_of_loop_frame = %x\n", p->out_of_loop_frame);
4708
4709 va_TraceMsg(trace_ctx, "\tkey_frame = %d\n", p->pic_fields.bits.key_frame);
4710 va_TraceMsg(trace_ctx, "\tversion = %d\n", p->pic_fields.bits.version);
4711 va_TraceMsg(trace_ctx, "\tsegmentation_enabled = %d\n", p->pic_fields.bits.segmentation_enabled);
4712 va_TraceMsg(trace_ctx, "\tupdate_mb_segmentation_map = %d\n", p->pic_fields.bits.update_mb_segmentation_map);
4713 va_TraceMsg(trace_ctx, "\tupdate_segment_feature_data = %d\n", p->pic_fields.bits.update_segment_feature_data);
4714 va_TraceMsg(trace_ctx, "\tfilter_type = %d\n", p->pic_fields.bits.filter_type);
4715 va_TraceMsg(trace_ctx, "\tsharpness_level = %d\n", p->pic_fields.bits.sharpness_level);
4716 va_TraceMsg(trace_ctx, "\tloop_filter_adj_enable = %d\n", p->pic_fields.bits.loop_filter_adj_enable);
4717 va_TraceMsg(trace_ctx, "\tmode_ref_lf_delta_update = %d\n", p->pic_fields.bits.mode_ref_lf_delta_update);
4718 va_TraceMsg(trace_ctx, "\tsign_bias_golden = %d\n", p->pic_fields.bits.sign_bias_golden);
4719 va_TraceMsg(trace_ctx, "\tsign_bias_alternate = %d\n", p->pic_fields.bits.sign_bias_alternate);
4720 va_TraceMsg(trace_ctx, "\tmb_no_coeff_skip = %d\n", p->pic_fields.bits.mb_no_coeff_skip);
4721 va_TraceMsg(trace_ctx, "\tloop_filter_disable = %d\n", p->pic_fields.bits.loop_filter_disable);
4722
4723 va_TraceMsg(trace_ctx, "\tmb_segment_tree_probs: 0x%2x, 0x%2x, 0x%2x\n",
4724 p->mb_segment_tree_probs[0], p->mb_segment_tree_probs[1], p->mb_segment_tree_probs[2]);
4725
4726 va_TraceMsg(trace_ctx, "\tloop_filter_level: %d, %d, %d, %d\n",
4727 p->loop_filter_level[0], p->loop_filter_level[1], p->loop_filter_level[2], p->loop_filter_level[3]);
4728
4729 va_TraceMsg(trace_ctx, "\tloop_filter_deltas_ref_frame: %d, %d, %d, %d\n",
4730 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]);
4731
4732 va_TraceMsg(trace_ctx, "\tloop_filter_deltas_mode: %d, %d, %d, %d\n",
4733 p->loop_filter_deltas_mode[0], p->loop_filter_deltas_mode[1], p->loop_filter_deltas_mode[2], p->loop_filter_deltas_mode[3]);
4734
4735 va_TraceMsg(trace_ctx, "\tprob_skip_false = %2x\n", p->prob_skip_false);
4736 va_TraceMsg(trace_ctx, "\tprob_intra = %2x\n", p->prob_intra);
4737 va_TraceMsg(trace_ctx, "\tprob_last = %2x\n", p->prob_last);
4738 va_TraceMsg(trace_ctx, "\tprob_gf = %2x\n", p->prob_gf);
4739
4740 va_TraceMsg(trace_ctx, "\ty_mode_probs: 0x%2x, 0x%2x, 0x%2x, 0x%2x\n",
4741 p->y_mode_probs[0], p->y_mode_probs[1], p->y_mode_probs[2], p->y_mode_probs[3]);
4742
4743 va_TraceMsg(trace_ctx, "\tuv_mode_probs: 0x%2x, 0x%2x, 0x%2x\n",
4744 p->uv_mode_probs[0], p->uv_mode_probs[1], p->uv_mode_probs[2]);
4745
4746 va_TraceMsg(trace_ctx, "\tmv_probs[2][19]:\n");
4747 for (i = 0; i < 2; ++i) {
4748 memset(tmp, 0, sizeof tmp);
4749 for (j = 0; j < 19; j++)
4750 sprintf(tmp + strlen(tmp), "%2x ", p->mv_probs[i][j]);
4751 va_TraceMsg(trace_ctx, "\t\t[%d] = %s\n", i, tmp);
4752 }
4753
4754 va_TraceMsg(trace_ctx, "\tbool_coder_ctx: range = %02x, value = %02x, count = %d\n",
4755 p->bool_coder_ctx.range, p->bool_coder_ctx.value, p->bool_coder_ctx.count);
4756
4757 va_TraceMsg(trace_ctx, NULL);
4758
4759 return;
4760 }
4761
va_TraceVASliceParameterBufferVP8(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)4762 static void va_TraceVASliceParameterBufferVP8(
4763 VADisplay dpy,
4764 VAContextID context,
4765 VABufferID buffer,
4766 VABufferType type,
4767 unsigned int size,
4768 unsigned int num_elements,
4769 void *data)
4770 {
4771 VASliceParameterBufferVP8 *p = (VASliceParameterBufferVP8 *)data;
4772 DPY2TRACECTX(dpy, context, VA_INVALID_ID);
4773 int i;
4774
4775 va_TraceMsg(trace_ctx, "\t--VASliceParameterBufferVP8\n");
4776
4777 va_TraceMsg(trace_ctx, "\tslice_data_size = %d\n", p->slice_data_size);
4778 va_TraceMsg(trace_ctx, "\tslice_data_offset = %d\n", p->slice_data_offset);
4779 va_TraceMsg(trace_ctx, "\tslice_data_flag = %d\n", p->slice_data_flag);
4780 va_TraceMsg(trace_ctx, "\tmacroblock_offset = %d\n", p->macroblock_offset);
4781 va_TraceMsg(trace_ctx, "\tnum_of_partitions = %d\n", p->num_of_partitions);
4782
4783 for (i = 0; i < 9; ++i)
4784 va_TraceMsg(trace_ctx, "\tpartition_size[%d] = %d\n", i, p->partition_size[i]);
4785
4786 va_TraceMsg(trace_ctx, NULL);
4787
4788 return;
4789 }
4790
va_TraceVAIQMatrixBufferVP8(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)4791 static void va_TraceVAIQMatrixBufferVP8(
4792 VADisplay dpy,
4793 VAContextID context,
4794 VABufferID buffer,
4795 VABufferType type,
4796 unsigned int size,
4797 unsigned int num_elements,
4798 void *data)
4799 {
4800 char tmp[1024];
4801 VAIQMatrixBufferVP8 *p = (VAIQMatrixBufferVP8 *)data;
4802 DPY2TRACECTX(dpy, context, VA_INVALID_ID);
4803 int i, j;
4804
4805 va_TraceMsg(trace_ctx, "\t--VAIQMatrixBufferVP8\n");
4806
4807 va_TraceMsg(trace_ctx, "\tquantization_index[4][6]=\n");
4808 for (i = 0; i < 4; i++) {
4809 memset(tmp, 0, sizeof tmp);
4810 for (j = 0; j < 6; j++)
4811 sprintf(tmp + strlen(tmp), "%4x, ", p->quantization_index[i][j]);
4812 va_TraceMsg(trace_ctx, "\t\t[%d] = %s\n", i, tmp);
4813 }
4814
4815 va_TraceMsg(trace_ctx, NULL);
4816
4817 return;
4818 }
va_TraceVAProbabilityBufferVP8(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)4819 static void va_TraceVAProbabilityBufferVP8(
4820 VADisplay dpy,
4821 VAContextID context,
4822 VABufferID buffer,
4823 VABufferType type,
4824 unsigned int size,
4825 unsigned int num_elements,
4826 void *data)
4827 {
4828 char tmp[1024];
4829 VAProbabilityDataBufferVP8 *p = (VAProbabilityDataBufferVP8 *)data;
4830 DPY2TRACECTX(dpy, context, VA_INVALID_ID);
4831 int i, j, k, l;
4832
4833 va_TraceMsg(trace_ctx, "\t--VAProbabilityDataBufferVP8\n");
4834
4835 for (i = 0; i < 4; i++)
4836 for (j = 0; j < 8; j++) {
4837 memset(tmp, 0, sizeof tmp);
4838 for (k = 0; k < 3; k++)
4839 for (l = 0; l < 11; l++)
4840 sprintf(tmp + strlen(tmp), "%2x, ", p->dct_coeff_probs[i][j][k][l]);
4841 va_TraceMsg(trace_ctx, "\t\t[%d, %d] = %s\n", i, j, tmp);
4842 }
4843
4844 va_TraceMsg(trace_ctx, NULL);
4845
4846 return;
4847 }
4848
va_TraceVAEncSequenceParameterBufferVP8(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)4849 static void va_TraceVAEncSequenceParameterBufferVP8(
4850 VADisplay dpy,
4851 VAContextID context,
4852 VABufferID buffer,
4853 VABufferType type,
4854 unsigned int size,
4855 unsigned int num_elements,
4856 void *data)
4857 {
4858 VAEncSequenceParameterBufferVP8 *p = (VAEncSequenceParameterBufferVP8 *)data;
4859 DPY2TRACECTX(dpy, context, VA_INVALID_ID);
4860 int i;
4861
4862 va_TraceMsg(trace_ctx, "\t--VAEncSequenceParameterBufferVP8\n");
4863
4864 va_TraceMsg(trace_ctx, "\tbits_per_second = %d\n", p->bits_per_second);
4865 va_TraceMsg(trace_ctx, "\terror_resilient = %d\n", p->error_resilient);
4866 va_TraceMsg(trace_ctx, "\tframe_height = %d\n", p->frame_height);
4867 va_TraceMsg(trace_ctx, "\tframe_width = %d\n", p->frame_width);
4868 va_TraceMsg(trace_ctx, "\tframe_height_scale = %d\n", p->frame_height_scale);
4869 va_TraceMsg(trace_ctx, "\tframe_width_scale = %d\n", p->frame_width_scale);
4870 va_TraceMsg(trace_ctx, "\tkf_auto = %d\n", p->kf_auto);
4871 va_TraceMsg(trace_ctx, "\tkf_max_dist = %d\n", p->kf_max_dist);
4872 va_TraceMsg(trace_ctx, "\tkf_min_dist = %d\n", p->kf_min_dist);
4873 va_TraceMsg(trace_ctx, "\tintra_period = %d\n", p->intra_period);
4874
4875 for (i = 0; i < 4; ++i)
4876 va_TraceMsg(trace_ctx, "\treference_frames[%d] = 0x%08x\n", i, p->reference_frames[i]);
4877
4878 va_TraceMsg(trace_ctx, NULL);
4879
4880 return;
4881 }
4882
va_TraceVAEncSequenceParameterBufferVP9(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)4883 static void va_TraceVAEncSequenceParameterBufferVP9(
4884 VADisplay dpy,
4885 VAContextID context,
4886 VABufferID buffer,
4887 VABufferType type,
4888 unsigned int size,
4889 unsigned int num_elements,
4890 void *data)
4891 {
4892 VAEncSequenceParameterBufferVP9 *p = (VAEncSequenceParameterBufferVP9 *)data;
4893 DPY2TRACECTX(dpy, context, VA_INVALID_ID);
4894
4895 va_TraceMsg(trace_ctx, "\t--VAEncSequenceParameterBufferVP9\n");
4896
4897 va_TraceMsg(trace_ctx, "\tmax_frame_height = %d\n", p->max_frame_height);
4898 va_TraceMsg(trace_ctx, "\tmax_frame_width = %d\n", p->max_frame_width);
4899 va_TraceMsg(trace_ctx, "\tkf_auto = %d\n", p->kf_auto);
4900 va_TraceMsg(trace_ctx, "\tkf_min_dist = %d\n", p->kf_min_dist);
4901 va_TraceMsg(trace_ctx, "\tkf_max_dist = %d\n", p->kf_max_dist);
4902 va_TraceMsg(trace_ctx, "\tbits_per_second = %d\n", p->bits_per_second);
4903 va_TraceMsg(trace_ctx, "\tintra_period = %d\n", p->intra_period);
4904
4905 va_TraceMsg(trace_ctx, NULL);
4906
4907 return;
4908 }
4909
va_TraceVAPictureParameterBufferVP9(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)4910 static void va_TraceVAPictureParameterBufferVP9(
4911 VADisplay dpy,
4912 VAContextID context,
4913 VABufferID buffer,
4914 VABufferType type,
4915 unsigned int size,
4916 unsigned int num_elements,
4917 void *data)
4918 {
4919 VADecPictureParameterBufferVP9 *p = (VADecPictureParameterBufferVP9 *)data;
4920 DPY2TRACECTX(dpy, context, VA_INVALID_ID);
4921 int i;
4922
4923 va_TraceMsg(trace_ctx, "\t--VAPictureParameterBufferVP9\n");
4924
4925 va_TraceMsg(trace_ctx, "\tframe_width = %d\n", p->frame_width);
4926 va_TraceMsg(trace_ctx, "\tframe_height = %d\n", p->frame_height);
4927 va_TraceMsg(trace_ctx, "\treference_frames[8] =\n");
4928 for (i = 0; i < 8; i++) {
4929 va_TraceMsg(trace_ctx, "\t\t0x%x\n", p->reference_frames[i]);
4930 }
4931 va_TraceMsg(trace_ctx, "\tsubsampling_x = %d\n", p->pic_fields.bits.subsampling_x);
4932 va_TraceMsg(trace_ctx, "\tsubsampling_y = %d\n", p->pic_fields.bits.subsampling_y);
4933 va_TraceMsg(trace_ctx, "\tframe_type = %d\n", p->pic_fields.bits.frame_type);
4934 va_TraceMsg(trace_ctx, "\tshow_frame = %d\n", p->pic_fields.bits.show_frame);
4935 va_TraceMsg(trace_ctx, "\terror_resilient_mode = %d\n", p->pic_fields.bits.error_resilient_mode);
4936 va_TraceMsg(trace_ctx, "\tintra_only = %d\n", p->pic_fields.bits.intra_only);
4937 va_TraceMsg(trace_ctx, "\tallow_high_precision_mv = %d\n", p->pic_fields.bits.allow_high_precision_mv);
4938 va_TraceMsg(trace_ctx, "\tmcomp_filter_type = %d\n", p->pic_fields.bits.mcomp_filter_type);
4939 va_TraceMsg(trace_ctx, "\tframe_parallel_decoding_mode = %d\n", p->pic_fields.bits.frame_parallel_decoding_mode);
4940 va_TraceMsg(trace_ctx, "\treset_frame_context = %d\n", p->pic_fields.bits.reset_frame_context);
4941 va_TraceMsg(trace_ctx, "\trefresh_frame_context = %d\n", p->pic_fields.bits.refresh_frame_context);
4942 va_TraceMsg(trace_ctx, "\tframe_context_idx = %d\n", p->pic_fields.bits.frame_context_idx);
4943 va_TraceMsg(trace_ctx, "\tsegmentation_enabled = %d\n", p->pic_fields.bits.segmentation_enabled);
4944 va_TraceMsg(trace_ctx, "\tsegmentation_temporal_update = %d\n", p->pic_fields.bits.segmentation_temporal_update);
4945 va_TraceMsg(trace_ctx, "\tsegmentation_update_map = %d\n", p->pic_fields.bits.segmentation_update_map);
4946 va_TraceMsg(trace_ctx, "\tlast_ref_frame = %d\n", p->pic_fields.bits.last_ref_frame);
4947 va_TraceMsg(trace_ctx, "\tlast_ref_frame_sign_bias = %d\n", p->pic_fields.bits.last_ref_frame_sign_bias);
4948 va_TraceMsg(trace_ctx, "\tgolden_ref_frame = %d\n", p->pic_fields.bits.golden_ref_frame);
4949 va_TraceMsg(trace_ctx, "\tgolden_ref_frame_sign_bias = %d\n", p->pic_fields.bits.golden_ref_frame_sign_bias);
4950 va_TraceMsg(trace_ctx, "\talt_ref_frame = %d\n", p->pic_fields.bits.alt_ref_frame);
4951 va_TraceMsg(trace_ctx, "\talt_ref_frame_sign_bias = %d\n", p->pic_fields.bits.alt_ref_frame_sign_bias);
4952 va_TraceMsg(trace_ctx, "\tlossless_flag = %d\n", p->pic_fields.bits.lossless_flag);
4953
4954 va_TraceMsg(trace_ctx, "\tfilter_level = %d\n", p->filter_level);
4955 va_TraceMsg(trace_ctx, "\tsharpness_level = %d\n", p->sharpness_level);
4956 va_TraceMsg(trace_ctx, "\tlog2_tile_rows = %d\n", p->log2_tile_rows);
4957 va_TraceMsg(trace_ctx, "\tlog2_tile_columns = %d\n", p->log2_tile_columns);
4958 va_TraceMsg(trace_ctx, "\tframe_header_length_in_bytes = %d\n", p->frame_header_length_in_bytes);
4959 va_TraceMsg(trace_ctx, "\tfirst_partition_size = %d\n", p->first_partition_size);
4960
4961 va_TraceMsg(trace_ctx, "\tmb_segment_tree_probs[7]: [0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x]\n",
4962 p->mb_segment_tree_probs[0], p->mb_segment_tree_probs[1],
4963 p->mb_segment_tree_probs[2], p->mb_segment_tree_probs[3],
4964 p->mb_segment_tree_probs[4], p->mb_segment_tree_probs[5],
4965 p->mb_segment_tree_probs[6]);
4966
4967 va_TraceMsg(trace_ctx, "\tsegment_pred_probs[3]: [0x%02x, 0x%02x, 0x%02x]\n", p->segment_pred_probs[0], p->segment_pred_probs[1], p->segment_pred_probs[2]);
4968
4969 va_TraceMsg(trace_ctx, "\tprofile = %d\n", p->profile);
4970 va_TraceMsg(trace_ctx, "\tbit_depth = %d\n", p->bit_depth);
4971
4972 va_TraceMsg(trace_ctx, NULL);
4973
4974 return;
4975 }
4976
va_TraceVAEncSequenceParameterBufferAV1(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)4977 static void va_TraceVAEncSequenceParameterBufferAV1(
4978 VADisplay dpy,
4979 VAContextID context,
4980 VABufferID buffer,
4981 VABufferType type,
4982 unsigned int size,
4983 unsigned int num_elements,
4984 void *data)
4985 {
4986 VAEncSequenceParameterBufferAV1 *p = (VAEncSequenceParameterBufferAV1 *)data;
4987 DPY2TRACECTX(dpy, context, VA_INVALID_ID);
4988
4989 va_TraceMsg(trace_ctx, "\t--VAEncSequenceParameterBufferAV1\n");
4990
4991 va_TraceMsg(trace_ctx, "\tseq_profile = %d\n", p->seq_profile);
4992 va_TraceMsg(trace_ctx, "\tseq_level_idx = %d\n", p->seq_level_idx);
4993 va_TraceMsg(trace_ctx, "\tseq_tier = %d\n", p->seq_tier);
4994 va_TraceMsg(trace_ctx, "\thierarchical_flag = %d\n", p->hierarchical_flag);
4995 va_TraceMsg(trace_ctx, "\tintra_period = %d\n", p->intra_period);
4996 va_TraceMsg(trace_ctx, "\tip_period = %d\n", p->ip_period);
4997 va_TraceMsg(trace_ctx, "\tbits_per_second = %d\n", p->bits_per_second);
4998
4999 va_TraceMsg(trace_ctx, "\tseq_fields.still_picture = %d\n", p->seq_fields.bits.still_picture);
5000 va_TraceMsg(trace_ctx, "\tseq_fields.use_128x128_superblock = %d\n", p->seq_fields.bits.use_128x128_superblock);
5001 va_TraceMsg(trace_ctx, "\tseq_fields.enable_filter_intra = %d\n", p->seq_fields.bits.enable_filter_intra);
5002 va_TraceMsg(trace_ctx, "\tseq_fields.enable_intra_edge_filter = %d\n", p->seq_fields.bits.enable_intra_edge_filter);
5003 va_TraceMsg(trace_ctx, "\tseq_fields.enable_interintra_compound = %d\n", p->seq_fields.bits.enable_interintra_compound);
5004 va_TraceMsg(trace_ctx, "\tseq_fields.enable_masked_compound = %d\n", p->seq_fields.bits.enable_masked_compound);
5005 va_TraceMsg(trace_ctx, "\tseq_fields.enable_warped_motion = %d\n", p->seq_fields.bits.enable_warped_motion);
5006 va_TraceMsg(trace_ctx, "\tseq_fields.enable_dual_filter = %d\n", p->seq_fields.bits.enable_dual_filter);
5007 va_TraceMsg(trace_ctx, "\tseq_fields.enable_order_hint = %d\n", p->seq_fields.bits.enable_order_hint);
5008 va_TraceMsg(trace_ctx, "\tseq_fields.enable_jnt_comp = %d\n", p->seq_fields.bits.enable_jnt_comp);
5009 va_TraceMsg(trace_ctx, "\tseq_fields.enable_ref_frame_mvs = %d\n", p->seq_fields.bits.enable_ref_frame_mvs);
5010 va_TraceMsg(trace_ctx, "\tseq_fields.enable_superres = %d\n", p->seq_fields.bits.enable_superres);
5011 va_TraceMsg(trace_ctx, "\tseq_fields.enable_cdef = %d\n", p->seq_fields.bits.enable_cdef);
5012 va_TraceMsg(trace_ctx, "\tseq_fields.enable_restoration = %d\n", p->seq_fields.bits.enable_restoration);
5013 va_TraceMsg(trace_ctx, "\tseq_fields.bit_depth_minus8 = %d\n", p->seq_fields.bits.bit_depth_minus8);
5014 va_TraceMsg(trace_ctx, "\tseq_fields.subsampling_x = %d\n", p->seq_fields.bits.subsampling_x);
5015 va_TraceMsg(trace_ctx, "\tseq_fields.subsampling_y = %d\n", p->seq_fields.bits.subsampling_y);
5016
5017 va_TraceMsg(trace_ctx, "\torder_hint_bits_minus_1 = %d\n", p->order_hint_bits_minus_1);
5018
5019 va_TraceMsg(trace_ctx, NULL);
5020
5021 return;
5022 }
5023
va_TraceVAEncPictureParameterBufferAV1(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)5024 static void va_TraceVAEncPictureParameterBufferAV1(
5025 VADisplay dpy,
5026 VAContextID context,
5027 VABufferID buffer,
5028 VABufferType type,
5029 unsigned int size,
5030 unsigned int num_elements,
5031 void *data)
5032 {
5033 VAEncPictureParameterBufferAV1 *p = (VAEncPictureParameterBufferAV1 *)data;
5034 DPY2TRACECTX(dpy, context, VA_INVALID_ID);
5035 int i, j;
5036
5037 va_TraceMsg(trace_ctx, "\t--VAEncPictureParameterBufferAV1\n");
5038
5039 va_TraceMsg(trace_ctx, "\tframe_width_minus_1 = %d\n", p->frame_width_minus_1);
5040 va_TraceMsg(trace_ctx, "\tframe_height_minus_1 = %d\n", p->frame_height_minus_1);
5041 va_TraceMsg(trace_ctx, "\treconstructed_frame = 0x%08x\n", p->reconstructed_frame);
5042 va_TraceMsg(trace_ctx, "\tcoded_buf = 0x%08x\n", p->coded_buf);
5043
5044 for (i = 0; i < 8; i++)
5045 va_TraceMsg(trace_ctx, "\treference_frames[%d] = 0x%08x\n", i, p->reference_frames[i]);
5046 for (i = 0; i < 7; i++)
5047 va_TraceMsg(trace_ctx, "\tref_frame_idx[%d] = %d\n", i, p->ref_frame_idx[i]);
5048
5049 va_TraceMsg(trace_ctx, "\thierarchical_level_plus1 = %d\n", p->hierarchical_level_plus1);
5050 va_TraceMsg(trace_ctx, "\tprimary_ref_frame = %d\n", p->primary_ref_frame);
5051 va_TraceMsg(trace_ctx, "\torder_hint = %d\n", p->order_hint);
5052 va_TraceMsg(trace_ctx, "\trefresh_frame_flags = %d\n", p->refresh_frame_flags);
5053
5054 va_TraceMsg(trace_ctx, "\tref_frame_ctrl_l0.fields.search_idx0 = %d\n", p->ref_frame_ctrl_l0.fields.search_idx0);
5055 va_TraceMsg(trace_ctx, "\tref_frame_ctrl_l0.fields.search_idx1 = %d\n", p->ref_frame_ctrl_l0.fields.search_idx1);
5056 va_TraceMsg(trace_ctx, "\tref_frame_ctrl_l0.fields.search_idx2 = %d\n", p->ref_frame_ctrl_l0.fields.search_idx2);
5057 va_TraceMsg(trace_ctx, "\tref_frame_ctrl_l0.fields.search_idx3 = %d\n", p->ref_frame_ctrl_l0.fields.search_idx3);
5058 va_TraceMsg(trace_ctx, "\tref_frame_ctrl_l0.fields.search_idx4 = %d\n", p->ref_frame_ctrl_l0.fields.search_idx4);
5059 va_TraceMsg(trace_ctx, "\tref_frame_ctrl_l0.fields.search_idx5 = %d\n", p->ref_frame_ctrl_l0.fields.search_idx5);
5060 va_TraceMsg(trace_ctx, "\tref_frame_ctrl_l0.fields.search_idx6 = %d\n", p->ref_frame_ctrl_l0.fields.search_idx6);
5061 va_TraceMsg(trace_ctx, "\tref_frame_ctrl_l1.fields.search_idx0 = %d\n", p->ref_frame_ctrl_l1.fields.search_idx0);
5062 va_TraceMsg(trace_ctx, "\tref_frame_ctrl_l1.fields.search_idx1 = %d\n", p->ref_frame_ctrl_l1.fields.search_idx1);
5063 va_TraceMsg(trace_ctx, "\tref_frame_ctrl_l1.fields.search_idx2 = %d\n", p->ref_frame_ctrl_l1.fields.search_idx2);
5064 va_TraceMsg(trace_ctx, "\tref_frame_ctrl_l1.fields.search_idx3 = %d\n", p->ref_frame_ctrl_l1.fields.search_idx3);
5065 va_TraceMsg(trace_ctx, "\tref_frame_ctrl_l1.fields.search_idx4 = %d\n", p->ref_frame_ctrl_l1.fields.search_idx4);
5066 va_TraceMsg(trace_ctx, "\tref_frame_ctrl_l1.fields.search_idx5 = %d\n", p->ref_frame_ctrl_l1.fields.search_idx5);
5067 va_TraceMsg(trace_ctx, "\tref_frame_ctrl_l1.fields.search_idx6 = %d\n", p->ref_frame_ctrl_l1.fields.search_idx6);
5068
5069 va_TraceMsg(trace_ctx, "\tpicture_flags.bits.frame_type = %d\n", p->picture_flags.bits.frame_type);
5070 va_TraceMsg(trace_ctx, "\tpicture_flags.bits.error_resilient_mode = %d\n", p->picture_flags.bits.error_resilient_mode);
5071 va_TraceMsg(trace_ctx, "\tpicture_flags.bits.disable_cdf_update = %d\n", p->picture_flags.bits.disable_cdf_update);
5072 va_TraceMsg(trace_ctx, "\tpicture_flags.bits.use_superres = %d\n", p->picture_flags.bits.use_superres);
5073 va_TraceMsg(trace_ctx, "\tpicture_flags.bits.allow_high_precision_mv = %d\n", p->picture_flags.bits.allow_high_precision_mv);
5074 va_TraceMsg(trace_ctx, "\tpicture_flags.bits.use_ref_frame_mvs = %d\n", p->picture_flags.bits.use_ref_frame_mvs);
5075 va_TraceMsg(trace_ctx, "\tpicture_flags.bits.disable_frame_end_update_cdf = %d\n", p->picture_flags.bits.disable_frame_end_update_cdf);
5076 va_TraceMsg(trace_ctx, "\tpicture_flags.bits.reduced_tx_set = %d\n", p->picture_flags.bits.reduced_tx_set);
5077 va_TraceMsg(trace_ctx, "\tpicture_flags.bits.enable_frame_obu = %d\n", p->picture_flags.bits.enable_frame_obu);
5078 va_TraceMsg(trace_ctx, "\tpicture_flags.bits.long_term_reference = %d\n", p->picture_flags.bits.long_term_reference);
5079 va_TraceMsg(trace_ctx, "\tpicture_flags.bits.disable_frame_recon = %d\n", p->picture_flags.bits.disable_frame_recon);
5080 va_TraceMsg(trace_ctx, "\tpicture_flags.bits.allow_intrabc = %d\n", p->picture_flags.bits.allow_intrabc);
5081 va_TraceMsg(trace_ctx, "\tpicture_flags.bits.palette_mode_enable = %d\n", p->picture_flags.bits.palette_mode_enable);
5082
5083 va_TraceMsg(trace_ctx, "\tseg_id_block_size = %d\n", p->seg_id_block_size);
5084 va_TraceMsg(trace_ctx, "\tnum_tile_groups_minus1 = %d\n", p->num_tile_groups_minus1);
5085 va_TraceMsg(trace_ctx, "\ttemporal_id = %d\n", p->temporal_id);
5086
5087 for (i = 0; i < 2; i++)
5088 va_TraceMsg(trace_ctx, "\tfilter_level[%d] = %d\n", i, p->filter_level[i]);
5089
5090 va_TraceMsg(trace_ctx, "\tfilter_level_u = %d\n", p->filter_level_u);
5091 va_TraceMsg(trace_ctx, "\tfilter_level_v = %d\n", p->filter_level_v);
5092
5093 va_TraceMsg(trace_ctx, "\tloop_filter_flags.bits.sharpness_level = %d\n", p->loop_filter_flags.bits.sharpness_level);
5094 va_TraceMsg(trace_ctx, "\tloop_filter_flags.bits.mode_ref_delta_enabled = %d\n", p->loop_filter_flags.bits.mode_ref_delta_enabled);
5095 va_TraceMsg(trace_ctx, "\tloop_filter_flags.bits.mode_ref_delta_update = %d\n", p->loop_filter_flags.bits.mode_ref_delta_update);
5096
5097 va_TraceMsg(trace_ctx, "\tsuperres_scale_denominator = %d\n", p->superres_scale_denominator);
5098 va_TraceMsg(trace_ctx, "\tinterpolation_filter = %d\n", p->interpolation_filter);
5099
5100 for (i = 0; i < 8; i++)
5101 va_TraceMsg(trace_ctx, "\tref_deltas[%d] = %d\n", i, p->ref_deltas[i]);
5102 for (i = 0; i < 2; i++)
5103 va_TraceMsg(trace_ctx, "\tmode_deltas[%d] = %d\n", i, p->mode_deltas[i]);
5104
5105 va_TraceMsg(trace_ctx, "\tbase_qindex = %d\n", p->base_qindex);
5106 va_TraceMsg(trace_ctx, "\ty_dc_delta_q = %d\n", p->y_dc_delta_q);
5107 va_TraceMsg(trace_ctx, "\tu_dc_delta_q = %d\n", p->u_dc_delta_q);
5108 va_TraceMsg(trace_ctx, "\tu_ac_delta_q = %d\n", p->u_ac_delta_q);
5109 va_TraceMsg(trace_ctx, "\tv_dc_delta_q = %d\n", p->v_dc_delta_q);
5110 va_TraceMsg(trace_ctx, "\tv_ac_delta_q = %d\n", p->v_ac_delta_q);
5111 va_TraceMsg(trace_ctx, "\tmin_base_qindex = %d\n", p->min_base_qindex);
5112 va_TraceMsg(trace_ctx, "\tmax_base_qindex = %d\n", p->max_base_qindex);
5113
5114 va_TraceMsg(trace_ctx, "\tqmatrix_flags.bits.using_qmatrix = %d\n", p->qmatrix_flags.bits.using_qmatrix);
5115 va_TraceMsg(trace_ctx, "\tqmatrix_flags.bits.qm_y = %d\n", p->qmatrix_flags.bits.qm_y);
5116 va_TraceMsg(trace_ctx, "\tqmatrix_flags.bits.qm_u = %d\n", p->qmatrix_flags.bits.qm_u);
5117 va_TraceMsg(trace_ctx, "\tqmatrix_flags.bits.qm_v = %d\n", p->qmatrix_flags.bits.qm_v);
5118
5119 va_TraceMsg(trace_ctx, "\tmode_control_flags.bits.delta_q_present = %d\n", p->mode_control_flags.bits.delta_q_present);
5120 va_TraceMsg(trace_ctx, "\tmode_control_flags.bits.delta_q_res = %d\n", p->mode_control_flags.bits.delta_q_res);
5121 va_TraceMsg(trace_ctx, "\tmode_control_flags.bits.delta_lf_present = %d\n", p->mode_control_flags.bits.delta_lf_present);
5122 va_TraceMsg(trace_ctx, "\tmode_control_flags.bits.delta_lf_res = %d\n", p->mode_control_flags.bits.delta_lf_res);
5123 va_TraceMsg(trace_ctx, "\tmode_control_flags.bits.delta_lf_multi = %d\n", p->mode_control_flags.bits.delta_lf_multi);
5124 va_TraceMsg(trace_ctx, "\tmode_control_flags.bits.tx_mode = %d\n", p->mode_control_flags.bits.tx_mode);
5125 va_TraceMsg(trace_ctx, "\tmode_control_flags.bits.reference_mode = %d\n", p->mode_control_flags.bits.reference_mode);
5126 va_TraceMsg(trace_ctx, "\tmode_control_flags.bits.skip_mode_present = %d\n", p->mode_control_flags.bits.skip_mode_present);
5127
5128 va_TraceMsg(trace_ctx, "\tsegments.seg_flags.bits.segmentation_enabled = %d\n", p->segments.seg_flags.bits.segmentation_enabled);
5129 va_TraceMsg(trace_ctx, "\tsegments.seg_flags.bits.segmentation_update_map = %d\n", p->segments.seg_flags.bits.segmentation_update_map);
5130 va_TraceMsg(trace_ctx, "\tsegments.seg_flags.bits.segmentation_temporal_update = %d\n", p->segments.seg_flags.bits.segmentation_temporal_update);
5131 va_TraceMsg(trace_ctx, "\tsegments.segment_number = %d\n", p->segments.segment_number);
5132
5133 for (i = 0; i < 8; i++) {
5134 for (j = 0; j < 8; j++)
5135 va_TraceMsg(trace_ctx, "\tsegments.feature_data[%d][%d] = %d\n", i, j, p->segments.feature_data[i][j]);
5136 }
5137 for (i = 0; i < 8; i++)
5138 va_TraceMsg(trace_ctx, "\tsegments.feature_mask[%d] = %d\n", i, p->segments.feature_mask[i]);
5139
5140 va_TraceMsg(trace_ctx, "\ttile_cols = %d\n", p->tile_cols);
5141 va_TraceMsg(trace_ctx, "\ttile_rows = %d\n", p->tile_rows);
5142
5143 for (i = 0; i < 63; i++)
5144 va_TraceMsg(trace_ctx, "\twidth_in_sbs_minus_1[%d] = %d\n", i, p->width_in_sbs_minus_1[i]);
5145 for (i = 0; i < 63; i++)
5146 va_TraceMsg(trace_ctx, "\theight_in_sbs_minus_1[%d] = %d\n", i, p->height_in_sbs_minus_1[i]);
5147
5148 va_TraceMsg(trace_ctx, "\tcontext_update_tile_id = %d\n", p->context_update_tile_id);
5149 va_TraceMsg(trace_ctx, "\tcdef_damping_minus_3 = %d\n", p->cdef_damping_minus_3);
5150 va_TraceMsg(trace_ctx, "\tcdef_bits= %d\n", p->cdef_bits);
5151
5152 for (i = 0; i < 8; i++)
5153 va_TraceMsg(trace_ctx, "\tcdef_y_strengths[%d] = %d\n", i, p->cdef_y_strengths[i]);
5154 for (i = 0; i < 8; i++)
5155 va_TraceMsg(trace_ctx, "\tcdef_uv_strengths[%d] = %d\n", i, p->cdef_uv_strengths[i]);
5156
5157 va_TraceMsg(trace_ctx, "\tloop_restoration_flags.bits.yframe_restoration_type = %d\n", p->loop_restoration_flags.bits.yframe_restoration_type);
5158 va_TraceMsg(trace_ctx, "\tloop_restoration_flags.bits.cbframe_restoration_type = %d\n", p->loop_restoration_flags.bits.cbframe_restoration_type);
5159 va_TraceMsg(trace_ctx, "\tloop_restoration_flags.bits.crframe_restoration_type = %d\n", p->loop_restoration_flags.bits.crframe_restoration_type);
5160 va_TraceMsg(trace_ctx, "\tloop_restoration_flags.bits.lr_unit_shift = %d\n", p->loop_restoration_flags.bits.lr_unit_shift);
5161 va_TraceMsg(trace_ctx, "\tloop_restoration_flags.bits.lr_uv_shift = %d\n", p->loop_restoration_flags.bits.lr_uv_shift);
5162
5163 for (i = 0; i < 7; i++) {
5164 va_TraceMsg(trace_ctx, "\twm[%d].wmtype= %d\n", i, p->wm[i].wmtype);
5165 for (j = 0; j < 8; j++)
5166 va_TraceMsg(trace_ctx, "\twm[%d].wmmat[%d]= %d\n", i, j, p->wm[i].wmmat[j]);
5167 va_TraceMsg(trace_ctx, "\twm[%d].invalid= %d\n", i, p->wm[i].invalid);
5168 }
5169
5170 va_TraceMsg(trace_ctx, "\tbit_offset_qindex = %d\n", p->bit_offset_qindex);
5171 va_TraceMsg(trace_ctx, "\tbit_offset_segmentation = %d\n", p->bit_offset_segmentation);
5172 va_TraceMsg(trace_ctx, "\tbit_offset_loopfilter_params = %d\n", p->bit_offset_loopfilter_params);
5173 va_TraceMsg(trace_ctx, "\tbit_offset_cdef_params = %d\n", p->bit_offset_cdef_params);
5174 va_TraceMsg(trace_ctx, "\tsize_in_bits_cdef_params = %d\n", p->size_in_bits_cdef_params);
5175 va_TraceMsg(trace_ctx, "\tbyte_offset_frame_hdr_obu_size = %d\n", p->byte_offset_frame_hdr_obu_size);
5176 va_TraceMsg(trace_ctx, "\tsize_in_bits_frame_hdr_obu = %d\n", p->size_in_bits_frame_hdr_obu);
5177
5178 va_TraceMsg(trace_ctx, "\ttile_group_obu_hdr_info.bits.obu_extension_flag = %d\n", p->tile_group_obu_hdr_info.bits.obu_extension_flag);
5179 va_TraceMsg(trace_ctx, "\ttile_group_obu_hdr_info.bits.obu_has_size_field = %d\n", p->tile_group_obu_hdr_info.bits.obu_has_size_field);
5180 va_TraceMsg(trace_ctx, "\ttile_group_obu_hdr_info.bits.temporal_id = %d\n", p->tile_group_obu_hdr_info.bits.temporal_id);
5181 va_TraceMsg(trace_ctx, "\ttile_group_obu_hdr_info.bits.spatial_id = %d\n", p->tile_group_obu_hdr_info.bits.spatial_id);
5182
5183 va_TraceMsg(trace_ctx, "\tnumber_skip_frames = %d\n", p->number_skip_frames);
5184 va_TraceMsg(trace_ctx, "\tskip_frames_reduced_size = %d\n", p->skip_frames_reduced_size);
5185
5186 va_TraceMsg(trace_ctx, NULL);
5187
5188 return;
5189 }
5190
va_TraceVAEncSliceParameterBufferAV1(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)5191 static void va_TraceVAEncSliceParameterBufferAV1(
5192 VADisplay dpy,
5193 VAContextID context,
5194 VABufferID buffer,
5195 VABufferType type,
5196 unsigned int size,
5197 unsigned int num_elements,
5198 void *data)
5199 {
5200 VAEncTileGroupBufferAV1* p = (VAEncTileGroupBufferAV1*)data;
5201 DPY2TRACECTX(dpy, context, VA_INVALID_ID);
5202
5203 if (!p)
5204 return;
5205
5206 va_TraceMsg(trace_ctx, "\t--VAEncTileGroupBufferAV1\n");
5207 va_TraceMsg(trace_ctx, "\ttg_start = %u\n", p->tg_start);
5208 va_TraceMsg(trace_ctx, "\ttg_end = %u\n", p->tg_end);
5209
5210 va_TraceMsg(trace_ctx, NULL);
5211
5212 return;
5213 }
5214
va_TraceVAPictureParameterBufferAV1(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)5215 static void va_TraceVAPictureParameterBufferAV1(
5216 VADisplay dpy,
5217 VAContextID context,
5218 VABufferID buffer,
5219 VABufferType type,
5220 unsigned int size,
5221 unsigned int num_elements,
5222 void *data)
5223 {
5224 VADecPictureParameterBufferAV1 *p = (VADecPictureParameterBufferAV1 *)data;
5225 DPY2TRACECTX(dpy, context, VA_INVALID_ID);
5226 int i, j;
5227
5228 va_TraceMsg(trace_ctx, "\t--VAPictureParameterBufferAV1\n");
5229
5230 va_TraceMsg(trace_ctx, "\tprofile = %d\n", p->profile);
5231 va_TraceMsg(trace_ctx, "\torder_hint_bits_minus_1 = %d\n", p->order_hint_bits_minus_1);
5232 va_TraceMsg(trace_ctx, "\tbit_depth_idx = %d\n", p->bit_depth_idx);
5233 va_TraceMsg(trace_ctx, "\tmatrix_coefficients = %d\n", p->matrix_coefficients);
5234
5235 va_TraceMsg(trace_ctx, "\tseq_info_fields = %X\n", p->seq_info_fields.value);
5236 va_TraceMsg(trace_ctx, "\t\tseq_info_fields.still_picture = %d\n", p->seq_info_fields.fields.still_picture);
5237 va_TraceMsg(trace_ctx, "\t\tseq_info_fields.use_128x128_superblock = %d\n", p->seq_info_fields.fields.use_128x128_superblock);
5238 va_TraceMsg(trace_ctx, "\t\tseq_info_fields.enable_filter_intra = %d\n", p->seq_info_fields.fields.enable_filter_intra);
5239 va_TraceMsg(trace_ctx, "\t\tseq_info_fields.enable_intra_edge_filter = %d\n", p->seq_info_fields.fields.enable_intra_edge_filter);
5240 va_TraceMsg(trace_ctx, "\t\tseq_info_fields.enable_interintra_compound = %d\n", p->seq_info_fields.fields.enable_interintra_compound);
5241 va_TraceMsg(trace_ctx, "\t\tseq_info_fields.enable_masked_compound = %d\n", p->seq_info_fields.fields.enable_masked_compound);
5242 va_TraceMsg(trace_ctx, "\t\tseq_info_fields.enable_dual_filter = %d\n", p->seq_info_fields.fields.enable_dual_filter);
5243 va_TraceMsg(trace_ctx, "\t\tseq_info_fields.enable_order_hint = %d\n", p->seq_info_fields.fields.enable_order_hint);
5244 va_TraceMsg(trace_ctx, "\t\tseq_info_fields.enable_jnt_comp = %d\n", p->seq_info_fields.fields.enable_jnt_comp);
5245 va_TraceMsg(trace_ctx, "\t\tseq_info_fields.enable_cdef = %d\n", p->seq_info_fields.fields.enable_cdef);
5246 va_TraceMsg(trace_ctx, "\t\tseq_info_fields.mono_chrome = %d\n", p->seq_info_fields.fields.mono_chrome);
5247 va_TraceMsg(trace_ctx, "\t\tseq_info_fields.color_range = %d\n", p->seq_info_fields.fields.color_range);
5248 va_TraceMsg(trace_ctx, "\t\tseq_info_fields.subsampling_x = %d\n", p->seq_info_fields.fields.subsampling_x);
5249 va_TraceMsg(trace_ctx, "\t\tseq_info_fields.subsampling_y = %d\n", p->seq_info_fields.fields.subsampling_y);
5250 va_TraceMsg(trace_ctx, "\t\tseq_info_fields.film_grain_params_present = %d\n", p->seq_info_fields.fields.film_grain_params_present);
5251
5252 va_TraceMsg(trace_ctx, "\tcurrent_frame = %X\n", p->current_frame);
5253 va_TraceMsg(trace_ctx, "\tcurrent_display_picture = %X\n", p->current_display_picture);
5254
5255 va_TraceMsg(trace_ctx, "\tanchor_frames_num = %d\n", p->anchor_frames_num);
5256 for (i = 0; i < p->anchor_frames_num; i++)
5257 va_TraceMsg(trace_ctx, "\t\tanchor_frames_list[%d] = %X\n", i, p->anchor_frames_list[i]);
5258
5259 va_TraceMsg(trace_ctx, "\tframe_width_minus_1 = %d\n", p->frame_width_minus1);
5260 va_TraceMsg(trace_ctx, "\tframe_height_minus1 = %d\n", p->frame_height_minus1);
5261 va_TraceMsg(trace_ctx, "\toutput_frame_width_in_tiles_minus_1 = %d\n", p->output_frame_width_in_tiles_minus_1);
5262 va_TraceMsg(trace_ctx, "\toutput_frame_height_in_tiles_minus_1 = %d\n", p->output_frame_height_in_tiles_minus_1);
5263
5264 for (i = 0; i < 8; i++)
5265 va_TraceMsg(trace_ctx, "\tref_frame_map[%d] = %X\n", i, p->ref_frame_map[i]);
5266 for (i = 0; i < 7; i++)
5267 va_TraceMsg(trace_ctx, "\tref_frame_idx[%d] = %d\n", i, p->ref_frame_idx[i]);
5268 va_TraceMsg(trace_ctx, "\tprimary_ref_frame = %d\n", p->primary_ref_frame);
5269
5270 va_TraceMsg(trace_ctx, "\torder_hint = %d\n", p->order_hint);
5271
5272 va_TraceMsg(trace_ctx, "\tseg_info:\n");
5273 va_TraceMsg(trace_ctx, "\t\tseg_info.segment_info_fields = %d\n", p->seg_info.segment_info_fields.value);
5274 va_TraceMsg(trace_ctx, "\t\t\tseg_info.segment_info_fields.bits.enabled = %d\n", p->seg_info.segment_info_fields.bits.enabled);
5275 va_TraceMsg(trace_ctx, "\t\t\tseg_info.segment_info_fields.bits.update_map = %d\n", p->seg_info.segment_info_fields.bits.update_map);
5276 va_TraceMsg(trace_ctx, "\t\t\tseg_info.segment_info_fields.bits.temporal_update = %d\n", p->seg_info.segment_info_fields.bits.temporal_update);
5277 va_TraceMsg(trace_ctx, "\t\t\tseg_info.segment_info_fields.bits.update_data = %d\n", p->seg_info.segment_info_fields.bits.update_data);
5278 for (i = 0; i < 8; i++)
5279 for (j = 0; j < 8; j++)
5280 va_TraceMsg(trace_ctx, "\t\tseg_info.feature_data[%d][%d] = %d\n", i, j, p->seg_info.feature_data[i][j]);
5281 for (i = 0; i < 8; i++)
5282 va_TraceMsg(trace_ctx, "\t\tseg_info.feature_mask[%d] = %d\n", i, p->seg_info.feature_mask[i]);
5283
5284 va_TraceMsg(trace_ctx, "\tfilm_grain_info:\n");
5285 va_TraceMsg(trace_ctx, "\t\tfilm_grain_info.film_grain_info_fields = %d\n", p->film_grain_info.film_grain_info_fields.value);
5286 va_TraceMsg(trace_ctx, "\t\t\tfilm_grain_info.film_grain_info_fields.apply_grain = %d\n", p->film_grain_info.film_grain_info_fields.bits.apply_grain);
5287 va_TraceMsg(trace_ctx, "\t\t\tfilm_grain_info.film_grain_info_fields.chroma_scaling_from_luma = %d\n", p->film_grain_info.film_grain_info_fields.bits.chroma_scaling_from_luma);
5288 va_TraceMsg(trace_ctx, "\t\t\tfilm_grain_info.film_grain_info_fields.grain_scaling_minus_8 = %d\n", p->film_grain_info.film_grain_info_fields.bits.grain_scaling_minus_8);
5289 va_TraceMsg(trace_ctx, "\t\t\tfilm_grain_info.film_grain_info_fields.ar_coeff_lag = %d\n", p->film_grain_info.film_grain_info_fields.bits.ar_coeff_lag);
5290 va_TraceMsg(trace_ctx, "\t\t\tfilm_grain_info.film_grain_info_fields.ar_coeff_shift_minus_6 = %d\n", p->film_grain_info.film_grain_info_fields.bits.ar_coeff_shift_minus_6);
5291 va_TraceMsg(trace_ctx, "\t\t\tfilm_grain_info.film_grain_info_fields.grain_scale_shift = %d\n", p->film_grain_info.film_grain_info_fields.bits.grain_scale_shift);
5292 va_TraceMsg(trace_ctx, "\t\t\tfilm_grain_info.film_grain_info_fields.overlap_flag = %d\n", p->film_grain_info.film_grain_info_fields.bits.overlap_flag);
5293 va_TraceMsg(trace_ctx, "\t\t\tfilm_grain_info.film_grain_info_fields.clip_to_restricted_range = %d\n", p->film_grain_info.film_grain_info_fields.bits.clip_to_restricted_range);
5294 va_TraceMsg(trace_ctx, "\t\tfilm_grain_info.grain_seed = %d\n", p->film_grain_info.grain_seed);
5295 va_TraceMsg(trace_ctx, "\t\tfilm_grain_info.num_y_points = %d\n", p->film_grain_info.num_y_points);
5296 for (i = 0; i < 14; i++)
5297 va_TraceMsg(trace_ctx, "\t\tfilm_grain_info.point_y_value[%d] = %d\n", i, p->film_grain_info.point_y_value[i]);
5298 for (i = 0; i < 14; i++)
5299 va_TraceMsg(trace_ctx, "\t\tfilm_grain_info.point_y_scaling[%d] = %d\n", i, p->film_grain_info.point_y_scaling[i]);
5300 va_TraceMsg(trace_ctx, "\t\tfilm_grain_info.num_cb_points = %d\n", p->film_grain_info.num_cb_points);
5301 for (i = 0; i < 10; i++)
5302 va_TraceMsg(trace_ctx, "\t\tfilm_grain_info.point_cb_value[%d] = %d\n", i, p->film_grain_info.point_cb_value[i]);
5303 for (i = 0; i < 10; i++)
5304 va_TraceMsg(trace_ctx, "\t\tfilm_grain_info.point_cb_scaling[%d] = %d\n", i, p->film_grain_info.point_cb_scaling[i]);
5305 va_TraceMsg(trace_ctx, "\t\tfilm_grain_info.num_cr_points = %d\n", p->film_grain_info.num_cr_points);
5306 for (i = 0; i < 10; i++)
5307 va_TraceMsg(trace_ctx, "\t\tfilm_grain_info.point_cr_value[%d] = %d\n", i, p->film_grain_info.point_cr_value[i]);
5308 for (i = 0; i < 10; i++)
5309 va_TraceMsg(trace_ctx, "\t\tfilm_grain_info.point_cr_scaling[%d] = %d\n", i, p->film_grain_info.point_cr_scaling[i]);
5310 for (i = 0; i < 24; i++)
5311 va_TraceMsg(trace_ctx, "\t\tfilm_grain_info.ar_coeffs_y[%d] = %d\n", i, p->film_grain_info.ar_coeffs_y[i]);
5312 for (i = 0; i < 25; i++)
5313 va_TraceMsg(trace_ctx, "\t\tfilm_grain_info.ar_coeffs_cb[%d] = %d\n", i, p->film_grain_info.ar_coeffs_cb[i]);
5314 for (i = 0; i < 25; i++)
5315 va_TraceMsg(trace_ctx, "\t\tfilm_grain_info.ar_coeffs_cr[%d] = %d\n", i, p->film_grain_info.ar_coeffs_cr[i]);
5316 va_TraceMsg(trace_ctx, "\t\tfilm_grain_info.cb_mult = %d\n", p->film_grain_info.cb_mult);
5317 va_TraceMsg(trace_ctx, "\t\tfilm_grain_info.cb_luma_mult = %d\n", p->film_grain_info.cb_luma_mult);
5318 va_TraceMsg(trace_ctx, "\t\tfilm_grain_info.cb_offset = %d\n", p->film_grain_info.cb_offset);
5319 va_TraceMsg(trace_ctx, "\t\tfilm_grain_info.cr_mult = %d\n", p->film_grain_info.cr_mult);
5320 va_TraceMsg(trace_ctx, "\t\tfilm_grain_info.cr_luma_mult = %d\n", p->film_grain_info.cr_luma_mult);
5321 va_TraceMsg(trace_ctx, "\t\tfilm_grain_info.cr_offset = %d\n", p->film_grain_info.cr_offset);
5322
5323 va_TraceMsg(trace_ctx, "\ttile_cols = %d\n", p->tile_cols);
5324 va_TraceMsg(trace_ctx, "\ttile_rows = %d\n", p->tile_rows);
5325 for (i = 0; i < 63; i++)
5326 va_TraceMsg(trace_ctx, "\twidth_in_sbs_minus_1[%d] = %d\n", i, p->width_in_sbs_minus_1[i]);
5327 for (i = 0; i < 63; i++)
5328 va_TraceMsg(trace_ctx, "\theight_in_sbs_minus_1[%d] = %d\n", i, p->height_in_sbs_minus_1[i]);
5329 va_TraceMsg(trace_ctx, "\ttile_count_minus_1 = %d\n", p->tile_count_minus_1);
5330 va_TraceMsg(trace_ctx, "\tcontext_update_tile_id = %d\n", p->context_update_tile_id);
5331
5332 va_TraceMsg(trace_ctx, "\tpic_info_fields = %X\n", p->pic_info_fields.value);
5333 va_TraceMsg(trace_ctx, "\t\tpic_info_fields.frame_type = %d\n", p->pic_info_fields.bits.frame_type);
5334 va_TraceMsg(trace_ctx, "\t\tpic_info_fields.show_frame = %d\n", p->pic_info_fields.bits.show_frame);
5335 va_TraceMsg(trace_ctx, "\t\tpic_info_fields.showable_frame = %d\n", p->pic_info_fields.bits.showable_frame);
5336 va_TraceMsg(trace_ctx, "\t\tpic_info_fields.error_resilient_mode = %d\n", p->pic_info_fields.bits.error_resilient_mode);
5337 va_TraceMsg(trace_ctx, "\t\tpic_info_fields.disable_cdf_update = %d\n", p->pic_info_fields.bits.disable_cdf_update);
5338 va_TraceMsg(trace_ctx, "\t\tpic_info_fields.allow_screen_content_tools = %d\n", p->pic_info_fields.bits.allow_screen_content_tools);
5339 va_TraceMsg(trace_ctx, "\t\tpic_info_fields.force_integer_mv = %d\n", p->pic_info_fields.bits.force_integer_mv);
5340 va_TraceMsg(trace_ctx, "\t\tpic_info_fields.allow_intrabc = %d\n", p->pic_info_fields.bits.allow_intrabc);
5341 va_TraceMsg(trace_ctx, "\t\tpic_info_fields.use_superres = %d\n", p->pic_info_fields.bits.use_superres);
5342 va_TraceMsg(trace_ctx, "\t\tpic_info_fields.allow_high_precision_mv = %d\n", p->pic_info_fields.bits.allow_high_precision_mv);
5343 va_TraceMsg(trace_ctx, "\t\tpic_info_fields.is_motion_mode_switchable = %d\n", p->pic_info_fields.bits.is_motion_mode_switchable);
5344 va_TraceMsg(trace_ctx, "\t\tpic_info_fields.use_ref_frame_mvs = %d\n", p->pic_info_fields.bits.use_ref_frame_mvs);
5345 va_TraceMsg(trace_ctx, "\t\tpic_info_fields.disable_frame_end_update_cdf = %d\n", p->pic_info_fields.bits.disable_frame_end_update_cdf);
5346 va_TraceMsg(trace_ctx, "\t\tpic_info_fields.uniform_tile_spacing_flag = %d\n", p->pic_info_fields.bits.uniform_tile_spacing_flag);
5347 va_TraceMsg(trace_ctx, "\t\tpic_info_fields.allow_warped_motion = %d\n", p->pic_info_fields.bits.allow_warped_motion);
5348 va_TraceMsg(trace_ctx, "\t\tpic_info_fields.large_scale_tile = %d\n", p->pic_info_fields.bits.large_scale_tile);
5349
5350 va_TraceMsg(trace_ctx, "\tsuperres_scale_denominator = %d\n", p->superres_scale_denominator);
5351
5352 va_TraceMsg(trace_ctx, "\tinterp_filter = %d\n", p->interp_filter);
5353 va_TraceMsg(trace_ctx, "\tfilter_level[0] = %d\n", p->filter_level[0]);
5354 va_TraceMsg(trace_ctx, "\tfilter_level[1] = %d\n", p->filter_level[1]);
5355 va_TraceMsg(trace_ctx, "\tfilter_level_u = %d\n", p->filter_level_u);
5356 va_TraceMsg(trace_ctx, "\tfilter_level_v = %d\n", p->filter_level_v);
5357
5358 va_TraceMsg(trace_ctx, "\tloop_filter_info_fields = %X\n", p->loop_filter_info_fields.value);
5359 va_TraceMsg(trace_ctx, "\t\tloop_filter_info_fields.bits.sharpness_level = %d\n", p->loop_filter_info_fields.bits.sharpness_level);
5360 va_TraceMsg(trace_ctx, "\t\tloop_filter_info_fields.bits.mode_ref_delta_enabled = %d\n", p->loop_filter_info_fields.bits.mode_ref_delta_enabled);
5361 va_TraceMsg(trace_ctx, "\t\tloop_filter_info_fields.bits.mode_ref_delta_update = %d\n", p->loop_filter_info_fields.bits.mode_ref_delta_update);
5362
5363 for (i = 0; i < 8; i++)
5364 va_TraceMsg(trace_ctx, "\tref_deltas[%d] = %d\n", i, p->ref_deltas[i]);
5365 for (i = 0; i < 2; i++)
5366 va_TraceMsg(trace_ctx, "\tmode_deltas[%d] = %d\n", i, p->mode_deltas[i]);
5367
5368 va_TraceMsg(trace_ctx, "\tbase_qindex = %d\n", p->base_qindex);
5369 va_TraceMsg(trace_ctx, "\ty_dc_delta_q = %d\n", p->y_dc_delta_q);
5370 va_TraceMsg(trace_ctx, "\tu_dc_delta_q = %d\n", p->u_dc_delta_q);
5371 va_TraceMsg(trace_ctx, "\tu_ac_delta_q = %d\n", p->u_ac_delta_q);
5372 va_TraceMsg(trace_ctx, "\tv_dc_delta_q = %d\n", p->v_dc_delta_q);
5373 va_TraceMsg(trace_ctx, "\tv_ac_delta_q = %d\n", p->v_ac_delta_q);
5374
5375 va_TraceMsg(trace_ctx, "\tqmatrix_fields = %X\n", p->qmatrix_fields.value);
5376 va_TraceMsg(trace_ctx, "\t\tqmatrix_fields.bits.using_qmatrix = %d\n", p->qmatrix_fields.bits.using_qmatrix);
5377 va_TraceMsg(trace_ctx, "\t\tqmatrix_fields.bits.qm_y = %d\n", p->qmatrix_fields.bits.qm_y);
5378 va_TraceMsg(trace_ctx, "\t\tqmatrix_fields.bits.qm_u = %d\n", p->qmatrix_fields.bits.qm_u);
5379 va_TraceMsg(trace_ctx, "\t\tqmatrix_fields.bits.qm_v = %d\n", p->qmatrix_fields.bits.qm_v);
5380
5381 va_TraceMsg(trace_ctx, "\tmode_control_fields = %X\n", p->mode_control_fields.value);
5382 va_TraceMsg(trace_ctx, "\t\tmode_control_fields.delta_q_present_flag = %d\n", p->mode_control_fields.bits.delta_q_present_flag);
5383 va_TraceMsg(trace_ctx, "\t\tmode_control_fields.log2_delta_q_res = %d\n", p->mode_control_fields.bits.log2_delta_q_res);
5384 va_TraceMsg(trace_ctx, "\t\tmode_control_fields.delta_lf_present_flag = %d\n", p->mode_control_fields.bits.delta_lf_present_flag);
5385 va_TraceMsg(trace_ctx, "\t\tmode_control_fields.log2_delta_lf_res = %d\n", p->mode_control_fields.bits.log2_delta_lf_res);
5386 va_TraceMsg(trace_ctx, "\t\tmode_control_fields.delta_lf_multi = %d\n", p->mode_control_fields.bits.delta_lf_multi);
5387 va_TraceMsg(trace_ctx, "\t\tmode_control_fields.tx_mode = %d\n", p->mode_control_fields.bits.tx_mode);
5388 va_TraceMsg(trace_ctx, "\t\tmode_control_fields.reference_select = %d\n", p->mode_control_fields.bits.reference_select);
5389 va_TraceMsg(trace_ctx, "\t\tmode_control_fields.reduced_tx_set_used = %d\n", p->mode_control_fields.bits.reduced_tx_set_used);
5390 va_TraceMsg(trace_ctx, "\t\tmode_control_fields.skip_mode_present = %d\n", p->mode_control_fields.bits.skip_mode_present);
5391
5392 va_TraceMsg(trace_ctx, "\tcdef_damping_minus_3 = %X\n", p->cdef_damping_minus_3);
5393 va_TraceMsg(trace_ctx, "\tcdef_bits = %X\n", p->cdef_bits);
5394 for (i = 0; i < 8; i++)
5395 va_TraceMsg(trace_ctx, "\tcdef_y_strengths[%d] = %d\n", i, p->cdef_y_strengths[i]);
5396 for (i = 0; i < 8; i++)
5397 va_TraceMsg(trace_ctx, "\tcdef_uv_strengths[%d] = %d\n", i, p->cdef_uv_strengths[i]);
5398
5399 va_TraceMsg(trace_ctx, "\tloop_restoration_fields = %X\n", p->loop_restoration_fields.value);
5400 va_TraceMsg(trace_ctx, "\t\tloop_restoration_fields.bits.yframe_restoration_type = %d\n", p->loop_restoration_fields.bits.yframe_restoration_type);
5401 va_TraceMsg(trace_ctx, "\t\tloop_restoration_fields.bits.cbframe_restoration_type = %d\n", p->loop_restoration_fields.bits.cbframe_restoration_type);
5402 va_TraceMsg(trace_ctx, "\t\tloop_restoration_fields.bits.crframe_restoration_type = %d\n", p->loop_restoration_fields.bits.crframe_restoration_type);
5403 va_TraceMsg(trace_ctx, "\t\tloop_restoration_fields.bits.lr_unit_shift = %d\n", p->loop_restoration_fields.bits.lr_unit_shift);
5404 va_TraceMsg(trace_ctx, "\t\tloop_restoration_fields.bits.lr_uv_shift = %d\n", p->loop_restoration_fields.bits.lr_uv_shift);
5405
5406 for (i = 0; i < 7; i++) {
5407 va_TraceMsg(trace_ctx, "\twm[%d]:\n", i);
5408 va_TraceMsg(trace_ctx, "\t\twm[%d].wmtype = %d:\n", i, p->wm[i].wmtype);
5409 for (j = 0; j < 8; j++)
5410 va_TraceMsg(trace_ctx, "\t\twm[%d].wmmat[%d] = %d:\n", i, j, p->wm[i].wmmat[j]);
5411 va_TraceMsg(trace_ctx, "\t\twm[%d].invalid = %d:\n", i, p->wm[i].invalid);
5412 }
5413
5414 va_TraceMsg(trace_ctx, NULL);
5415
5416 return;
5417 }
5418
va_TraceVAEncPictureParameterBufferVP8(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)5419 static void va_TraceVAEncPictureParameterBufferVP8(
5420 VADisplay dpy,
5421 VAContextID context,
5422 VABufferID buffer,
5423 VABufferType type,
5424 unsigned int size,
5425 unsigned int num_elements,
5426 void *data)
5427 {
5428 VAEncPictureParameterBufferVP8 *p = (VAEncPictureParameterBufferVP8 *)data;
5429 DPY2TRACECTX(dpy, context, VA_INVALID_ID);
5430 int i;
5431
5432 va_TraceMsg(trace_ctx, "\t--VAEncPictureParameterBufferVP8\n");
5433 va_TraceMsg(trace_ctx, "\treconstructed_frame = 0x%08x\n", p->reconstructed_frame);
5434 va_TraceMsg(trace_ctx, "\tref_last_frame = 0x%08x\n", p->ref_last_frame);
5435 va_TraceMsg(trace_ctx, "\tref_gf_frame = 0x%08x\n", p->ref_gf_frame);
5436 va_TraceMsg(trace_ctx, "\tref_arf_frame = 0x%08x\n", p->ref_arf_frame);
5437 va_TraceMsg(trace_ctx, "\tcoded_buf = 0x%08x\n", p->coded_buf);
5438
5439 va_TraceMsg(trace_ctx, "\tref_flags.bits.force_kf = %d\n", p->ref_flags.bits.force_kf);
5440 va_TraceMsg(trace_ctx, "\tref_flags.bits.no_ref_last = %d\n", p->ref_flags.bits.no_ref_last);
5441 va_TraceMsg(trace_ctx, "\tref_flags.bits.no_ref_gf = %d\n", p->ref_flags.bits.no_ref_gf);
5442 va_TraceMsg(trace_ctx, "\tref_flags.bits.no_ref_arf = %d\n", p->ref_flags.bits.no_ref_arf);
5443 va_TraceMsg(trace_ctx, "\tref_flags.bits.no_ref_arf = 0x%08x\n", p->ref_flags.bits.reserved);
5444
5445 va_TraceMsg(trace_ctx, "\tpic_flags.bits.frame_type = %d\n", p->pic_flags.bits.frame_type);
5446 va_TraceMsg(trace_ctx, "\tpic_flags.bits.version = %d\n", p->pic_flags.bits.version);
5447 va_TraceMsg(trace_ctx, "\tpic_flags.bits.show_frame = %d\n", p->pic_flags.bits.show_frame);
5448 va_TraceMsg(trace_ctx, "\tpic_flags.bits.color_space = %d\n", p->pic_flags.bits.color_space);
5449 va_TraceMsg(trace_ctx, "\tpic_flags.bits.recon_filter_type = %d\n", p->pic_flags.bits.recon_filter_type);
5450 va_TraceMsg(trace_ctx, "\tpic_flags.bits.loop_filter_type = %d\n", p->pic_flags.bits.loop_filter_type);
5451 va_TraceMsg(trace_ctx, "\tpic_flags.bits.auto_partitions = %d\n", p->pic_flags.bits.auto_partitions);
5452 va_TraceMsg(trace_ctx, "\tpic_flags.bits.num_token_partitions = %d\n", p->pic_flags.bits.num_token_partitions);
5453 va_TraceMsg(trace_ctx, "\tpic_flags.bits.clamping_type = %d\n", p->pic_flags.bits.clamping_type);
5454 va_TraceMsg(trace_ctx, "\tpic_flags.bits.segmentation_enabled = %d\n", p->pic_flags.bits.segmentation_enabled);
5455 va_TraceMsg(trace_ctx, "\tpic_flags.bits.update_mb_segmentation_map = %d\n", p->pic_flags.bits.update_mb_segmentation_map);
5456 va_TraceMsg(trace_ctx, "\tpic_flags.bits.update_segment_feature_data = %d\n", p->pic_flags.bits.update_segment_feature_data);
5457 va_TraceMsg(trace_ctx, "\tpic_flags.bits.loop_filter_adj_enable = %d\n", p->pic_flags.bits.loop_filter_adj_enable);
5458 va_TraceMsg(trace_ctx, "\tpic_flags.bits.refresh_entropy_probs = %d\n", p->pic_flags.bits.refresh_entropy_probs);
5459 va_TraceMsg(trace_ctx, "\tpic_flags.bits.refresh_golden_frame = %d\n", p->pic_flags.bits.refresh_golden_frame);
5460 va_TraceMsg(trace_ctx, "\tpic_flags.bits.refresh_alternate_frame = %d\n", p->pic_flags.bits.refresh_alternate_frame);
5461 va_TraceMsg(trace_ctx, "\tpic_flags.bits.refresh_last = %d\n", p->pic_flags.bits.refresh_last);
5462 va_TraceMsg(trace_ctx, "\tpic_flags.bits.copy_buffer_to_golden = %d\n", p->pic_flags.bits.copy_buffer_to_golden);
5463 va_TraceMsg(trace_ctx, "\tpic_flags.bits.copy_buffer_to_alternate = %d\n", p->pic_flags.bits.copy_buffer_to_alternate);
5464
5465 va_TraceMsg(trace_ctx, "\tpic_flags.bits.sign_bias_golden = %d\n", p->pic_flags.bits.sign_bias_golden);
5466 va_TraceMsg(trace_ctx, "\tpic_flags.bits.sign_bias_alternate = %d\n", p->pic_flags.bits.sign_bias_alternate);
5467 va_TraceMsg(trace_ctx, "\tpic_flags.bits.mb_no_coeff_skip = %d\n", p->pic_flags.bits.mb_no_coeff_skip);
5468 va_TraceMsg(trace_ctx, "\tpic_flags.bits.forced_lf_adjustment = %d\n", p->pic_flags.bits.forced_lf_adjustment);
5469 va_TraceMsg(trace_ctx, "\tpic_flags.bits.reserved = %d\n", p->pic_flags.bits.reserved);
5470
5471 for (i = 0; i < 4; i++)
5472 va_TraceMsg(trace_ctx, "\tloop_filter_level[%d] = %d\n", i, p->loop_filter_level[i]);
5473 for (i = 0; i < 4; i++)
5474 va_TraceMsg(trace_ctx, "\tref_lf_delta[%d] = %d\n", i, p->ref_lf_delta[i]);
5475 for (i = 0; i < 4; i++)
5476 va_TraceMsg(trace_ctx, "\tmode_lf_delta[%d] = %d\n", i, p->mode_lf_delta[i]);
5477
5478 va_TraceMsg(trace_ctx, "\tsharpness_level = %d\n", p->sharpness_level);
5479 va_TraceMsg(trace_ctx, "\tclamp_qindex_high = %d\n", p->clamp_qindex_high);
5480 va_TraceMsg(trace_ctx, "\tclamp_qindex_low = %d\n", p->clamp_qindex_low);
5481
5482 va_TraceMsg(trace_ctx, NULL);
5483
5484 return;
5485 }
5486
va_TraceVAEncPictureParameterBufferVP9(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)5487 static void va_TraceVAEncPictureParameterBufferVP9(
5488 VADisplay dpy,
5489 VAContextID context,
5490 VABufferID buffer,
5491 VABufferType type,
5492 unsigned int size,
5493 unsigned int num_elements,
5494 void *data)
5495 {
5496 VAEncPictureParameterBufferVP9 *p = (VAEncPictureParameterBufferVP9 *)data;
5497 DPY2TRACECTX(dpy, context, VA_INVALID_ID);
5498 int i;
5499
5500 va_TraceMsg(trace_ctx, "\t--VAEncPictureParameterBufferVP9\n");
5501 va_TraceMsg(trace_ctx, "\tframe_width_src = %d\n", p->frame_width_src);
5502 va_TraceMsg(trace_ctx, "\tframe_height_src = %d\n", p->frame_height_src);
5503 va_TraceMsg(trace_ctx, "\tframe_width_dst = %d\n", p->frame_width_dst);
5504 va_TraceMsg(trace_ctx, "\tframe_height_dst = %d\n", p->frame_height_dst);
5505 va_TraceMsg(trace_ctx, "\treconstructed_frame = 0x%08x\n", p->reconstructed_frame);
5506
5507 for (i = 0; i < 8; i++)
5508 va_TraceMsg(trace_ctx, "\treference_frames[%d] = 0x%08x\n", i, p->reference_frames[i]);
5509
5510 va_TraceMsg(trace_ctx, "\tcoded_buf = 0x%x\n", p->coded_buf);
5511
5512 va_TraceMsg(trace_ctx, "\tref_flags.bits.force_kf = %d\n", p->ref_flags.bits.force_kf);
5513 va_TraceMsg(trace_ctx, "\tref_flags.bits.ref_frame_ctrl_l0 = %d\n", p->ref_flags.bits.ref_frame_ctrl_l0);
5514 va_TraceMsg(trace_ctx, "\tref_flags.bits.ref_frame_ctrl_l1 = %d\n", p->ref_flags.bits.ref_frame_ctrl_l1);
5515 va_TraceMsg(trace_ctx, "\tref_flags.bits.ref_last_idx = %d\n", p->ref_flags.bits.ref_last_idx);
5516 va_TraceMsg(trace_ctx, "\tref_flags.bits.ref_last_sign_bias = %d\n", p->ref_flags.bits.ref_last_sign_bias);
5517 va_TraceMsg(trace_ctx, "\tref_flags.bits.ref_gf_idx = %d\n", p->ref_flags.bits.ref_gf_idx);
5518 va_TraceMsg(trace_ctx, "\tref_flags.bits.ref_gf_sign_bias = %d\n", p->ref_flags.bits.ref_gf_sign_bias);
5519 va_TraceMsg(trace_ctx, "\tref_flags.bits.ref_arf_idx = %d\n", p->ref_flags.bits.ref_arf_idx);
5520 va_TraceMsg(trace_ctx, "\tref_flags.bits.ref_arf_sign_bias = %d\n", p->ref_flags.bits.ref_arf_sign_bias);
5521 va_TraceMsg(trace_ctx, "\tref_flags.bits.temporal_id = %d\n", p->ref_flags.bits.temporal_id);
5522 va_TraceMsg(trace_ctx, "\tref_flags.bits.reserved = %d\n", p->ref_flags.bits.reserved);
5523
5524 va_TraceMsg(trace_ctx, "\tpic_flags.bits.frame_type = %d\n", p->pic_flags.bits.frame_type);
5525 va_TraceMsg(trace_ctx, "\tpic_flags.bits.show_frame = %d\n", p->pic_flags.bits.show_frame);
5526 va_TraceMsg(trace_ctx, "\tpic_flags.bits.error_resilient_mode = %d\n", p->pic_flags.bits.error_resilient_mode);
5527 va_TraceMsg(trace_ctx, "\tpic_flags.bits.intra_only = %d\n", p->pic_flags.bits.intra_only);
5528 va_TraceMsg(trace_ctx, "\tpic_flags.bits.allow_high_precision_mv = %d\n", p->pic_flags.bits.allow_high_precision_mv);
5529
5530 va_TraceMsg(trace_ctx, "\tpic_flags.bits.mcomp_filter_type = %d\n", p->pic_flags.bits.mcomp_filter_type);
5531 va_TraceMsg(trace_ctx, "\tpic_flags.bits.frame_parallel_decoding_mode = %d\n", p->pic_flags.bits.frame_parallel_decoding_mode);
5532 va_TraceMsg(trace_ctx, "\tpic_flags.bits.reset_frame_context = %d\n", p->pic_flags.bits.reset_frame_context);
5533 va_TraceMsg(trace_ctx, "\tpic_flags.bits.refresh_frame_context = %d\n", p->pic_flags.bits.refresh_frame_context);
5534 va_TraceMsg(trace_ctx, "\tpic_flags.bits.frame_context_idx = %d\n", p->pic_flags.bits.frame_context_idx);
5535 va_TraceMsg(trace_ctx, "\tpic_flags.bits.segmentation_enabled = %d\n", p->pic_flags.bits.segmentation_enabled);
5536 va_TraceMsg(trace_ctx, "\tpic_flags.bits.segmentation_temporal_update = %d\n", p->pic_flags.bits.segmentation_temporal_update);
5537 va_TraceMsg(trace_ctx, "\tpic_flags.bits.segmentation_update_map = %d\n", p->pic_flags.bits.segmentation_update_map);
5538 va_TraceMsg(trace_ctx, "\tpic_flags.bits.lossless_mode = %d\n", p->pic_flags.bits.lossless_mode);
5539 va_TraceMsg(trace_ctx, "\tpic_flags.bits.comp_prediction_mode = %d\n", p->pic_flags.bits.comp_prediction_mode);
5540 va_TraceMsg(trace_ctx, "\tpic_flags.bits.auto_segmentation = %d\n", p->pic_flags.bits.auto_segmentation);
5541 va_TraceMsg(trace_ctx, "\tpic_flags.bits.super_frame_flag = %d\n", p->pic_flags.bits.super_frame_flag);
5542 va_TraceMsg(trace_ctx, "\tpic_flags.bits.reserved = %d\n", p->pic_flags.bits.reserved);
5543
5544 va_TraceMsg(trace_ctx, "\trefresh_frame_flags = %d\n", p->refresh_frame_flags);
5545 va_TraceMsg(trace_ctx, "\tluma_ac_qindex = %d\n", p->luma_ac_qindex);
5546 va_TraceMsg(trace_ctx, "\tluma_dc_qindex_delta = %d\n", p->luma_dc_qindex_delta);
5547 va_TraceMsg(trace_ctx, "\tchroma_ac_qindex_delta = %d\n", p->chroma_ac_qindex_delta);
5548 va_TraceMsg(trace_ctx, "\tchroma_dc_qindex_delta = %d\n", p->chroma_dc_qindex_delta);
5549 va_TraceMsg(trace_ctx, "\tfilter_level = %d\n", p->filter_level);
5550 va_TraceMsg(trace_ctx, "\tsharpness_level = %d\n", p->sharpness_level);
5551
5552 for (i = 0; i < 4; i++)
5553 va_TraceMsg(trace_ctx, "\tref_lf_delta[%d] = %d\n", i, p->ref_lf_delta[i]);
5554 for (i = 0; i < 2; i++)
5555 va_TraceMsg(trace_ctx, "\tmode_lf_delta[%d] = %d\n", i, p->mode_lf_delta[i]);
5556
5557
5558 va_TraceMsg(trace_ctx, "\tbit_offset_ref_lf_delta = %d\n", p->bit_offset_ref_lf_delta);
5559 va_TraceMsg(trace_ctx, "\tbit_offset_mode_lf_delta = %d\n", p->bit_offset_mode_lf_delta);
5560 va_TraceMsg(trace_ctx, "\tbit_offset_lf_level = %d\n", p->bit_offset_lf_level);
5561 va_TraceMsg(trace_ctx, "\tbit_offset_qindex = %d\n", p->bit_offset_qindex);
5562 va_TraceMsg(trace_ctx, "\tbit_offset_first_partition_size = %d\n", p->bit_offset_first_partition_size);
5563 va_TraceMsg(trace_ctx, "\tbit_offset_segmentation = %d\n", p->bit_offset_segmentation);
5564 va_TraceMsg(trace_ctx, "\tbit_size_segmentation = %d\n", p->bit_size_segmentation);
5565 va_TraceMsg(trace_ctx, "\tlog2_tile_rows = %d\n", p->log2_tile_rows);
5566 va_TraceMsg(trace_ctx, "\tlog2_tile_columns = %d\n", p->log2_tile_columns);
5567 va_TraceMsg(trace_ctx, "\tskip_frame_flag = %d\n", p->skip_frame_flag);
5568 va_TraceMsg(trace_ctx, "\tnumber_skip_frames = %d\n", p->number_skip_frames);
5569 va_TraceMsg(trace_ctx, "\tskip_frames_size = %d\n", p->skip_frames_size);
5570
5571 va_TraceMsg(trace_ctx, NULL);
5572
5573 return;
5574 }
5575
va_TraceVASliceParameterBufferVP9(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)5576 static void va_TraceVASliceParameterBufferVP9(
5577 VADisplay dpy,
5578 VAContextID context,
5579 VABufferID buffer,
5580 VABufferType type,
5581 unsigned int size,
5582 unsigned int num_elements,
5583 void *data)
5584 {
5585
5586 VASliceParameterBufferVP9 *p = (VASliceParameterBufferVP9 *)data;
5587 DPY2TRACECTX(dpy, context, VA_INVALID_ID);
5588 int i, j;
5589
5590 va_TraceMsg(trace_ctx, "\t--VASliceParameterBufferVP9\n");
5591
5592 va_TraceMsg(trace_ctx, "\tslice_data_size = %d\n", p->slice_data_size);
5593 va_TraceMsg(trace_ctx, "\tslice_data_offset = %d\n", p->slice_data_offset);
5594 va_TraceMsg(trace_ctx, "\tslice_data_flag = %d\n", p->slice_data_flag);
5595
5596 for (i = 0; i < 8; i++) {
5597 VASegmentParameterVP9* seg = p->seg_param + i;
5598 va_TraceMsg(trace_ctx, "\tseg_param[%d] = \n", i);
5599 va_TraceMsg(trace_ctx, "\t\tsegment_reference_enabled = %d\n", seg->segment_flags.fields.segment_reference_enabled);
5600 va_TraceMsg(trace_ctx, "\t\tsegment_reference = %d\n", seg->segment_flags.fields.segment_reference);
5601 va_TraceMsg(trace_ctx, "\t\tsegment_reference_skipped = %d\n", seg->segment_flags.fields.segment_reference_skipped);
5602 va_TraceMsg(trace_ctx, "\t\tfilter_level[4][2] = \n");
5603 for (j = 0; j < 4; j++) {
5604 va_TraceMsg(trace_ctx, "\t\t\t[%3d, %3d]\n", seg->filter_level[j][0], seg->filter_level[j][1]);
5605 }
5606 va_TraceMsg(trace_ctx, "\t\tluma_ac_quant_scale = %d\n", seg->luma_ac_quant_scale);
5607 va_TraceMsg(trace_ctx, "\t\tluma_dc_quant_scale = %d\n", seg->luma_dc_quant_scale);
5608 va_TraceMsg(trace_ctx, "\t\tchroma_ac_quant_scale = %d\n", seg->chroma_ac_quant_scale);
5609 va_TraceMsg(trace_ctx, "\t\tchroma_dc_quant_scale = %d\n", seg->chroma_dc_quant_scale);
5610 }
5611
5612 va_TraceMsg(trace_ctx, NULL);
5613
5614 return;
5615 }
5616
va_TraceVASliceParameterBufferAV1(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)5617 static void va_TraceVASliceParameterBufferAV1(
5618 VADisplay dpy,
5619 VAContextID context,
5620 VABufferID buffer,
5621 VABufferType type,
5622 unsigned int size,
5623 unsigned int num_elements,
5624 void *data)
5625 {
5626
5627 VASliceParameterBufferAV1 *p = (VASliceParameterBufferAV1 *)data;
5628 DPY2TRACECTX(dpy, context, VA_INVALID_ID);
5629
5630 va_TraceMsg(trace_ctx, "\t--VASliceParameterBufferAV1\n");
5631
5632 va_TraceMsg(trace_ctx, "\tslice_data_size = %d\n", p->slice_data_size);
5633 va_TraceMsg(trace_ctx, "\tslice_data_offset = %d\n", p->slice_data_offset);
5634 va_TraceMsg(trace_ctx, "\tslice_data_flag = %d\n", p->slice_data_flag);
5635
5636 va_TraceMsg(trace_ctx, "\ttile_row = %d\n", p->tile_row);
5637 va_TraceMsg(trace_ctx, "\ttile_column = %d\n", p->tile_column);
5638
5639 va_TraceMsg(trace_ctx, "\tanchor_frame_idx = %d\n", p->anchor_frame_idx);
5640 va_TraceMsg(trace_ctx, "\ttile_idx_in_tile_list = %d\n", p->tile_idx_in_tile_list);
5641
5642 va_TraceMsg(trace_ctx, NULL);
5643
5644 return;
5645 }
5646
va_TraceBeginPicture(VADisplay dpy,VAContextID context,VASurfaceID render_target)5647 void va_TraceBeginPicture(
5648 VADisplay dpy,
5649 VAContextID context,
5650 VASurfaceID render_target
5651 )
5652 {
5653 DPY2TRACECTX(dpy, context, VA_INVALID_ID);
5654
5655 TRACE_FUNCNAME(idx);
5656
5657 va_TraceMsg(trace_ctx, "\tcontext = 0x%08x\n", context);
5658 va_TraceMsg(trace_ctx, "\trender_targets = 0x%08x\n", render_target);
5659 va_TraceMsg(trace_ctx, "\tframe_count = #%d\n", trace_ctx->trace_frame_no);
5660 va_TraceMsg(trace_ctx, NULL);
5661
5662 trace_ctx->trace_rendertarget = render_target; /* for surface data dump after vaEndPicture */
5663
5664 trace_ctx->trace_frame_no++;
5665 trace_ctx->trace_slice_no = 0;
5666 }
5667
va_TraceMPEG2Buf(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * pbuf)5668 static void va_TraceMPEG2Buf(
5669 VADisplay dpy,
5670 VAContextID context,
5671 VABufferID buffer,
5672 VABufferType type,
5673 unsigned int size,
5674 unsigned int num_elements,
5675 void *pbuf
5676 )
5677 {
5678 switch (type) {
5679 case VAPictureParameterBufferType:
5680 va_TraceVAPictureParameterBufferMPEG2(dpy, context, buffer, type, size, num_elements, pbuf);
5681 break;
5682 case VAIQMatrixBufferType:
5683 va_TraceVAIQMatrixBufferMPEG2(dpy, context, buffer, type, size, num_elements, pbuf);
5684 break;
5685 case VABitPlaneBufferType:
5686 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
5687 break;
5688 case VASliceGroupMapBufferType:
5689 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
5690 break;
5691 case VASliceParameterBufferType:
5692 va_TraceVASliceParameterBufferMPEG2(dpy, context, buffer, type, size, num_elements, pbuf);
5693 break;
5694 case VASliceDataBufferType:
5695 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
5696 break;
5697 case VAMacroblockParameterBufferType:
5698 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
5699 break;
5700 case VAResidualDataBufferType:
5701 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
5702 break;
5703 case VADeblockingParameterBufferType:
5704 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
5705 break;
5706 case VAImageBufferType:
5707 break;
5708 case VAProtectedSliceDataBufferType:
5709 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
5710 break;
5711 case VAEncCodedBufferType:
5712 break;
5713 case VAEncSequenceParameterBufferType:
5714 va_TraceVAEncSequenceParameterBufferMPEG2(dpy, context, buffer, type, size, num_elements, pbuf);
5715 break;
5716 case VAEncPictureParameterBufferType:
5717 break;
5718 case VAEncSliceParameterBufferType:
5719 break;
5720 case VAEncMiscParameterBufferType:
5721 va_TraceVAEncMiscParameterBuffer(dpy, context, buffer, type, size, num_elements, pbuf);
5722 break;
5723 default:
5724 break;
5725 }
5726 }
5727
va_TraceVAEncSequenceParameterBufferH263(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)5728 static void va_TraceVAEncSequenceParameterBufferH263(
5729 VADisplay dpy,
5730 VAContextID context,
5731 VABufferID buffer,
5732 VABufferType type,
5733 unsigned int size,
5734 unsigned int num_elements,
5735 void *data)
5736 {
5737 VAEncSequenceParameterBufferH263 *p = (VAEncSequenceParameterBufferH263 *)data;
5738 DPY2TRACECTX(dpy, context, VA_INVALID_ID);
5739
5740 va_TraceMsg(trace_ctx, "\t--VAEncSequenceParameterBufferH263\n");
5741
5742 va_TraceMsg(trace_ctx, "\tintra_period = %d\n", p->intra_period);
5743 va_TraceMsg(trace_ctx, "\tbits_per_second = %d\n", p->bits_per_second);
5744 va_TraceMsg(trace_ctx, "\tframe_rate = %d\n", p->frame_rate);
5745 va_TraceMsg(trace_ctx, "\tinitial_qp = %d\n", p->initial_qp);
5746 va_TraceMsg(trace_ctx, "\tmin_qp = %d\n", p->min_qp);
5747 va_TraceMsg(trace_ctx, NULL);
5748
5749 return;
5750 }
5751
5752
va_TraceVAEncPictureParameterBufferH263(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)5753 static void va_TraceVAEncPictureParameterBufferH263(
5754 VADisplay dpy,
5755 VAContextID context,
5756 VABufferID buffer,
5757 VABufferType type,
5758 unsigned int size,
5759 unsigned int num_elements,
5760 void *data)
5761 {
5762 VAEncPictureParameterBufferH263 *p = (VAEncPictureParameterBufferH263 *)data;
5763 DPY2TRACECTX(dpy, context, VA_INVALID_ID);
5764
5765 va_TraceMsg(trace_ctx, "\t--VAEncPictureParameterBufferH263\n");
5766 va_TraceMsg(trace_ctx, "\treference_picture = 0x%08x\n", p->reference_picture);
5767 va_TraceMsg(trace_ctx, "\treconstructed_picture = 0x%08x\n", p->reconstructed_picture);
5768 va_TraceMsg(trace_ctx, "\tcoded_buf = %08x\n", p->coded_buf);
5769 va_TraceMsg(trace_ctx, "\tpicture_width = %d\n", p->picture_width);
5770 va_TraceMsg(trace_ctx, "\tpicture_height = %d\n", p->picture_height);
5771 va_TraceMsg(trace_ctx, "\tpicture_type = 0x%08x\n", p->picture_type);
5772 va_TraceMsg(trace_ctx, NULL);
5773
5774 return;
5775 }
5776
va_TraceVAEncPictureParameterBufferJPEG(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)5777 static void va_TraceVAEncPictureParameterBufferJPEG(
5778 VADisplay dpy,
5779 VAContextID context,
5780 VABufferID buffer,
5781 VABufferType type,
5782 unsigned int size,
5783 unsigned int num_elements,
5784 void *data)
5785 {
5786 VAEncPictureParameterBufferJPEG *p = (VAEncPictureParameterBufferJPEG *)data;
5787 int i;
5788
5789 DPY2TRACECTX(dpy, context, VA_INVALID_ID);
5790
5791 va_TraceMsg(trace_ctx, "\t--VAEncPictureParameterBufferJPEG\n");
5792 va_TraceMsg(trace_ctx, "\treconstructed_picture = 0x%08x\n", p->reconstructed_picture);
5793 va_TraceMsg(trace_ctx, "\tcoded_buf = %08x\n", p->coded_buf);
5794 va_TraceMsg(trace_ctx, "\tpicture_width = %d\n", p->picture_width);
5795 va_TraceMsg(trace_ctx, "\tpicture_height = %d\n", p->picture_height);
5796 va_TraceMsg(trace_ctx, "\tpic_flags.bits.profile = %d\n", p->pic_flags.bits.profile);
5797 va_TraceMsg(trace_ctx, "\tpic_flags.bits.progressive = %d\n", p->pic_flags.bits.profile);
5798 va_TraceMsg(trace_ctx, "\tpic_flags.bits.huffman = %d\n", p->pic_flags.bits.huffman);
5799 va_TraceMsg(trace_ctx, "\tpic_flags.bits.interleaved = %d\n", p->pic_flags.bits.interleaved);
5800 va_TraceMsg(trace_ctx, "\tpic_flags.bits.differential = %d\n", p->pic_flags.bits.differential);
5801 va_TraceMsg(trace_ctx, "\tsample_bit_depth = %d\n", p->sample_bit_depth);
5802 va_TraceMsg(trace_ctx, "\tnum_scan = %d\n", p->num_scan);
5803 va_TraceMsg(trace_ctx, "\tnum_components = %d\n", p->num_components);
5804 for (i = 0; i < p->num_components; i++)
5805 va_TraceMsg(trace_ctx, "\tcomponent_id[%d] = %d\n", i, p->component_id[i]);
5806
5807 if (p->quality > 0)
5808 va_TraceMsg(trace_ctx, "\tquality = %d\n", p->quality);
5809 else
5810 va_TraceMsg(trace_ctx, "\tquantiser_table_selector[] = %d %d %d %d\n",
5811 p->quantiser_table_selector[0],
5812 p->quantiser_table_selector[1],
5813 p->quantiser_table_selector[2],
5814 p->quantiser_table_selector[3]);
5815
5816 va_TraceMsg(trace_ctx, NULL);
5817
5818 return;
5819 }
5820
va_TraceVAEncQMatrixBufferJPEG(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)5821 static void va_TraceVAEncQMatrixBufferJPEG(
5822 VADisplay dpy,
5823 VAContextID context,
5824 VABufferID buffer,
5825 VABufferType type,
5826 unsigned int size,
5827 unsigned int num_elements,
5828 void *data)
5829 {
5830 VAQMatrixBufferJPEG *p = (VAQMatrixBufferJPEG *)data;
5831 DPY2TRACECTX(dpy, context, VA_INVALID_ID);
5832
5833 va_TraceMsg(trace_ctx, "\t--VAQMatrixBufferJPEG\n");
5834 va_TraceMsg(trace_ctx, "\tload_lum_quantiser_matrix = %d", p->load_lum_quantiser_matrix);
5835 if (p->load_lum_quantiser_matrix) {
5836 int i;
5837 for (i = 0; i < 64; i++) {
5838 if ((i % 8) == 0)
5839 va_TraceMsg(trace_ctx, "\n\t");
5840 va_TraceMsg(trace_ctx, "\t0x%02x", p->lum_quantiser_matrix[i]);
5841 }
5842 va_TraceMsg(trace_ctx, "\n");
5843 }
5844 va_TraceMsg(trace_ctx, "\tload_chroma_quantiser_matrix = %08x\n", p->load_chroma_quantiser_matrix);
5845 if (p->load_chroma_quantiser_matrix) {
5846 int i;
5847 for (i = 0; i < 64; i++) {
5848 if ((i % 8) == 0)
5849 va_TraceMsg(trace_ctx, "\n\t");
5850 va_TraceMsg(trace_ctx, "\t0x%02x", p->chroma_quantiser_matrix[i]);
5851 }
5852 va_TraceMsg(trace_ctx, "\n");
5853 }
5854
5855 va_TraceMsg(trace_ctx, NULL);
5856
5857 return;
5858 }
5859
5860
va_TraceVAEncSliceParameterBufferJPEG(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)5861 static void va_TraceVAEncSliceParameterBufferJPEG(
5862 VADisplay dpy,
5863 VAContextID context,
5864 VABufferID buffer,
5865 VABufferType type,
5866 unsigned int size,
5867 unsigned int num_elements,
5868 void *data)
5869 {
5870 VAEncSliceParameterBufferJPEG *p = (VAEncSliceParameterBufferJPEG *)data;
5871 int i;
5872
5873 DPY2TRACECTX(dpy, context, VA_INVALID_ID);
5874
5875 va_TraceMsg(trace_ctx, "\t--VAEncSliceParameterBufferJPEG\n");
5876 va_TraceMsg(trace_ctx, "\trestart_interval = 0x%04x\n", p->restart_interval);
5877 va_TraceMsg(trace_ctx, "\tnum_components = 0x%08x\n", p->num_components);
5878 for (i = 0; i < 4; i++) {
5879 va_TraceMsg(trace_ctx, "\tcomponents[%i] =\n", i);
5880 va_TraceMsg(trace_ctx, "\t\tcomponent_selector = %d\n", p->components[i].component_selector);
5881 va_TraceMsg(trace_ctx, "\t\tdc_table_selector = %d\n", p->components[i].dc_table_selector);
5882 va_TraceMsg(trace_ctx, "\t\tac_table_selector = %d\n", p->components[i].ac_table_selector);
5883 }
5884
5885 va_TraceMsg(trace_ctx, NULL);
5886
5887 return;
5888 }
5889
5890
va_TraceH263Buf(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * pbuf)5891 static void va_TraceH263Buf(
5892 VADisplay dpy,
5893 VAContextID context,
5894 VABufferID buffer,
5895 VABufferType type,
5896 unsigned int size,
5897 unsigned int num_elements,
5898 void *pbuf
5899 )
5900 {
5901 switch (type) {
5902 case VAPictureParameterBufferType:/* print MPEG4 buffer */
5903 va_TraceVAPictureParameterBufferMPEG4(dpy, context, buffer, type, size, num_elements, pbuf);
5904 break;
5905 case VAIQMatrixBufferType:/* print MPEG4 buffer */
5906 va_TraceVAIQMatrixBufferMPEG4(dpy, context, buffer, type, size, num_elements, pbuf);
5907 break;
5908 case VABitPlaneBufferType:/* print MPEG4 buffer */
5909 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
5910 break;
5911 case VASliceGroupMapBufferType:
5912 break;
5913 case VASliceParameterBufferType:/* print MPEG4 buffer */
5914 va_TraceVASliceParameterBufferMPEG4(dpy, context, buffer, type, size, num_elements, pbuf);
5915 break;
5916 case VASliceDataBufferType:
5917 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
5918 break;
5919 case VAMacroblockParameterBufferType:
5920 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
5921 break;
5922 case VAResidualDataBufferType:
5923 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
5924 break;
5925 case VADeblockingParameterBufferType:
5926 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
5927 break;
5928 case VAImageBufferType:
5929 break;
5930 case VAProtectedSliceDataBufferType:
5931 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
5932 break;
5933 case VAEncCodedBufferType:
5934 break;
5935 case VAEncSequenceParameterBufferType:
5936 va_TraceVAEncSequenceParameterBufferH263(dpy, context, buffer, type, size, num_elements, pbuf);
5937 break;
5938 case VAEncPictureParameterBufferType:
5939 va_TraceVAEncPictureParameterBufferH263(dpy, context, buffer, type, size, num_elements, pbuf);
5940 break;
5941 case VAEncSliceParameterBufferType:
5942 va_TraceVAEncSliceParameterBuffer(dpy, context, buffer, type, size, num_elements, pbuf);
5943 break;
5944 case VAEncPackedHeaderParameterBufferType:
5945 va_TraceVAEncPackedHeaderParameterBufferType(dpy, context, buffer, type, size, num_elements, pbuf);
5946 break;
5947 default:
5948 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
5949 break;
5950 }
5951 }
5952
5953
va_TraceJPEGBuf(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * pbuf)5954 static void va_TraceJPEGBuf(
5955 VADisplay dpy,
5956 VAContextID context,
5957 VABufferID buffer,
5958 VABufferType type,
5959 unsigned int size,
5960 unsigned int num_elements,
5961 void *pbuf
5962 )
5963 {
5964 switch (type) {
5965 case VABitPlaneBufferType:
5966 case VASliceGroupMapBufferType:
5967 case VASliceDataBufferType:
5968 case VAMacroblockParameterBufferType:
5969 case VAResidualDataBufferType:
5970 case VADeblockingParameterBufferType:
5971 case VAImageBufferType:
5972 case VAProtectedSliceDataBufferType:
5973 case VAEncCodedBufferType:
5974 case VAEncSequenceParameterBufferType:
5975 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
5976 break;
5977 case VAEncSliceParameterBufferType:
5978 va_TraceVAEncSliceParameterBufferJPEG(dpy, context, buffer, type, size, num_elements, pbuf);
5979 break;
5980 case VAPictureParameterBufferType:
5981 va_TraceVAPictureParameterBufferJPEG(dpy, context, buffer, type, size, num_elements, pbuf);
5982 break;
5983 case VAIQMatrixBufferType:
5984 va_TraceVAIQMatrixBufferJPEG(dpy, context, buffer, type, size, num_elements, pbuf);
5985 break;
5986 case VASliceParameterBufferType:
5987 va_TraceVASliceParameterBufferJPEG(dpy, context, buffer, type, size, num_elements, pbuf);
5988 break;
5989 case VAHuffmanTableBufferType:
5990 va_TraceVAHuffmanTableBufferJPEG(dpy, context, buffer, type, size, num_elements, pbuf);
5991 break;
5992 case VAEncPictureParameterBufferType:
5993 va_TraceVAEncPictureParameterBufferJPEG(dpy, context, buffer, type, size, num_elements, pbuf);
5994 break;
5995 case VAQMatrixBufferType:
5996 va_TraceVAEncQMatrixBufferJPEG(dpy, context, buffer, type, size, num_elements, pbuf);
5997 break;
5998 default:
5999 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
6000 break;
6001 }
6002 }
6003
va_TraceMPEG4Buf(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * pbuf)6004 static void va_TraceMPEG4Buf(
6005 VADisplay dpy,
6006 VAContextID context,
6007 VABufferID buffer,
6008 VABufferType type,
6009 unsigned int size,
6010 unsigned int num_elements,
6011 void *pbuf
6012 )
6013 {
6014 switch (type) {
6015 case VAPictureParameterBufferType:
6016 va_TraceVAPictureParameterBufferMPEG4(dpy, context, buffer, type, size, num_elements, pbuf);
6017 break;
6018 case VAIQMatrixBufferType:
6019 va_TraceVAIQMatrixBufferMPEG4(dpy, context, buffer, type, size, num_elements, pbuf);
6020 break;
6021 case VABitPlaneBufferType:
6022 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
6023 break;
6024 case VASliceGroupMapBufferType:
6025 break;
6026 case VASliceParameterBufferType:
6027 va_TraceVASliceParameterBufferMPEG4(dpy, context, buffer, type, size, num_elements, pbuf);
6028 break;
6029 case VASliceDataBufferType:
6030 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
6031 break;
6032 case VAMacroblockParameterBufferType:
6033 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
6034 break;
6035 case VAResidualDataBufferType:
6036 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
6037 break;
6038 case VADeblockingParameterBufferType:
6039 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
6040 break;
6041 case VAImageBufferType:
6042 break;
6043 case VAProtectedSliceDataBufferType:
6044 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
6045 break;
6046 case VAEncCodedBufferType:
6047 break;
6048 case VAEncSequenceParameterBufferType:
6049 va_TraceVAEncSequenceParameterBufferMPEG4(dpy, context, buffer, type, size, num_elements, pbuf);
6050 break;
6051 case VAEncPictureParameterBufferType:
6052 va_TraceVAEncPictureParameterBufferMPEG4(dpy, context, buffer, type, size, num_elements, pbuf);
6053 break;
6054 case VAEncSliceParameterBufferType:
6055 va_TraceVAEncSliceParameterBuffer(dpy, context, buffer, type, size, num_elements, pbuf);
6056 break;
6057 default:
6058 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
6059 break;
6060 }
6061 }
6062
va_TraceVVCBuf(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * pbuf)6063 static void va_TraceVVCBuf(
6064 VADisplay dpy,
6065 VAContextID context,
6066 VABufferID buffer,
6067 VABufferType type,
6068 unsigned int size,
6069 unsigned int num_elements,
6070 void* pbuf
6071 )
6072 {
6073 DPY2TRACECTX(dpy, context, VA_INVALID_ID);
6074
6075 switch (type) {
6076 case VAPictureParameterBufferType:
6077 va_TraceVAPictureParameterBufferVVC(dpy, context, buffer, type, size, num_elements, pbuf);
6078 break;
6079 case VASliceParameterBufferType:
6080 va_TraceVASliceParameterBufferVVC(dpy, context, buffer, type, size, num_elements, pbuf);
6081 break;
6082 case VAIQMatrixBufferType:
6083 va_TraceVAScalingListBufferVVC(dpy, context, buffer, type, size, num_elements, pbuf);
6084 break;
6085 case VAAlfBufferType:
6086 va_TraceVAAlfBufferVVC(dpy, context, buffer, type, size, num_elements, pbuf);
6087 break;
6088 case VALmcsBufferType:
6089 va_TraceVALmcsBufferVVC(dpy, context, buffer, type, size, num_elements, pbuf);
6090 break;
6091 case VASubPicBufferType:
6092 va_TraceVASubPicBufferVVC(dpy, context, buffer, type, size, num_elements, pbuf);
6093 break;
6094 case VATileBufferType:
6095 va_TraceVATileBufferVVC(dpy, context, buffer, type, size, num_elements, pbuf);
6096 break;
6097 case VASliceStructBufferType:
6098 va_TraceVASliceStructBufferVVC(dpy, context, buffer, type, size, num_elements, pbuf);
6099 break;
6100 default:
6101 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
6102 break;
6103 }
6104 }
6105
va_TraceHEVCBuf(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * pbuf)6106 static void va_TraceHEVCBuf(
6107 VADisplay dpy,
6108 VAContextID context,
6109 VABufferID buffer,
6110 VABufferType type,
6111 unsigned int size,
6112 unsigned int num_elements,
6113 void *pbuf
6114 )
6115 {
6116 DPY2TRACECTX(dpy, context, VA_INVALID_ID);
6117
6118 switch (type) {
6119 case VAPictureParameterBufferType:
6120 va_TraceVAPictureParameterBufferHEVC(dpy, context, buffer, type, size, num_elements, pbuf);
6121 break;
6122 case VASliceParameterBufferType:
6123 va_TraceVASliceParameterBufferHEVC(dpy, context, buffer, type, size, num_elements, pbuf);
6124 break;
6125 case VAIQMatrixBufferType:
6126 va_TraceVAIQMatrixBufferHEVC(dpy, context, buffer, type, size, num_elements, pbuf);
6127 break;
6128 case VAEncSequenceParameterBufferType:
6129 va_TraceVAEncSequenceParameterBufferHEVC(dpy, context, buffer, type, size, num_elements, pbuf);
6130 break;
6131 case VAEncPictureParameterBufferType:
6132 va_TraceVAEncPictureParameterBufferHEVC(dpy, context, buffer, type, size, num_elements, pbuf);
6133 break;
6134 case VAEncSliceParameterBufferType:
6135 va_TraceVAEncSliceParameterBufferHEVC(dpy, context, buffer, type, size, num_elements, pbuf);
6136 break;
6137 case VAEncMiscParameterBufferType:
6138 va_TraceVAEncMiscParameterBuffer(dpy, context, buffer, type, size, num_elements, pbuf);
6139 break;
6140 default:
6141 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
6142 break;
6143 }
6144 }
6145
va_TraceH264Buf(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * pbuf)6146 static void va_TraceH264Buf(
6147 VADisplay dpy,
6148 VAContextID context,
6149 VABufferID buffer,
6150 VABufferType type,
6151 unsigned int size,
6152 unsigned int num_elements,
6153 void *pbuf
6154 )
6155 {
6156 DPY2TRACECTX(dpy, context, VA_INVALID_ID);
6157
6158 switch (type) {
6159 case VAPictureParameterBufferType:
6160 va_TraceVAPictureParameterBufferH264(dpy, context, buffer, type, size, num_elements, pbuf);
6161 break;
6162 case VAIQMatrixBufferType:
6163 va_TraceVAIQMatrixBufferH264(dpy, context, buffer, type, size, num_elements, pbuf);
6164 break;
6165 case VABitPlaneBufferType:
6166 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
6167 break;
6168 case VASliceGroupMapBufferType:
6169 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
6170 break;
6171 case VASliceParameterBufferType:
6172 va_TraceVASliceParameterBufferH264(dpy, context, buffer, type, size, num_elements, pbuf);
6173 break;
6174 case VASliceDataBufferType:
6175 va_TraceVABuffers(dpy, context, buffer, type, trace_ctx->trace_slice_size, num_elements, pbuf);
6176 break;
6177 case VAMacroblockParameterBufferType:
6178 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
6179 break;
6180 case VAResidualDataBufferType:
6181 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
6182 break;
6183 case VADeblockingParameterBufferType:
6184 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
6185 break;
6186 case VAImageBufferType:
6187 break;
6188 case VAProtectedSliceDataBufferType:
6189 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
6190 break;
6191 case VAEncCodedBufferType:
6192 break;
6193 case VAEncSequenceParameterBufferType:
6194 va_TraceVAEncSequenceParameterBufferH264(dpy, context, buffer, type, size, num_elements, pbuf);
6195 break;
6196 case VAEncPictureParameterBufferType:
6197 va_TraceVAEncPictureParameterBufferH264(dpy, context, buffer, type, size, num_elements, pbuf);
6198 break;
6199 case VAEncSliceParameterBufferType:
6200 if (size == sizeof(VAEncSliceParameterBuffer))
6201 va_TraceVAEncSliceParameterBuffer(dpy, context, buffer, type, size, num_elements, pbuf);
6202 else
6203 va_TraceVAEncSliceParameterBufferH264(dpy, context, buffer, type, size, num_elements, pbuf);
6204 break;
6205 case VAEncPackedHeaderParameterBufferType:
6206 va_TraceVAEncPackedHeaderParameterBufferType(dpy, context, buffer, type, size, num_elements, pbuf);
6207 break;
6208
6209 case VAEncMiscParameterBufferType:
6210 va_TraceVAEncMiscParameterBuffer(dpy, context, buffer, type, size, num_elements, pbuf);
6211 break;
6212 default:
6213 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
6214 break;
6215 }
6216 }
6217
va_TraceVP8Buf(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * pbuf)6218 static void va_TraceVP8Buf(
6219 VADisplay dpy,
6220 VAContextID context,
6221 VABufferID buffer,
6222 VABufferType type,
6223 unsigned int size,
6224 unsigned int num_elements,
6225 void *pbuf
6226 )
6227 {
6228 DPY2TRACECTX(dpy, context, VA_INVALID_ID);
6229
6230 switch (type) {
6231 case VAPictureParameterBufferType:
6232 va_TraceVAPictureParameterBufferVP8(dpy, context, buffer, type, size, num_elements, pbuf);
6233 break;
6234 case VAIQMatrixBufferType:
6235 va_TraceVAIQMatrixBufferVP8(dpy, context, buffer, type, size, num_elements, pbuf);
6236 break;
6237 case VAQMatrixBufferType:
6238 break;
6239 case VABitPlaneBufferType:
6240 break;
6241 case VASliceGroupMapBufferType:
6242 break;
6243 case VASliceParameterBufferType:
6244 va_TraceVASliceParameterBufferVP8(dpy, context, buffer, type, size, num_elements, pbuf);
6245 break;
6246 case VASliceDataBufferType:
6247 break;
6248 case VAProbabilityBufferType:
6249 va_TraceVAProbabilityBufferVP8(dpy, context, buffer, type, size, num_elements, pbuf);
6250 break;
6251 case VAMacroblockParameterBufferType:
6252 break;
6253 case VAResidualDataBufferType:
6254 break;
6255 case VADeblockingParameterBufferType:
6256 break;
6257 case VAImageBufferType:
6258 break;
6259 case VAProtectedSliceDataBufferType:
6260 break;
6261 case VAEncCodedBufferType:
6262 break;
6263 case VAEncSequenceParameterBufferType:
6264 va_TraceVAEncSequenceParameterBufferVP8(dpy, context, buffer, type, size, num_elements, pbuf);
6265 break;
6266 case VAEncPictureParameterBufferType:
6267 va_TraceVAEncPictureParameterBufferVP8(dpy, context, buffer, type, size, num_elements, pbuf);
6268 break;
6269 case VAEncSliceParameterBufferType:
6270 break;
6271 case VAEncPackedHeaderParameterBufferType:
6272 break;
6273 case VAEncMiscParameterBufferType:
6274 va_TraceVAEncMiscParameterBuffer(dpy, context, buffer, type, size, num_elements, pbuf);
6275 break;
6276 default:
6277 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
6278 break;
6279 }
6280 }
6281
va_TraceVP9Buf(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * pbuf)6282 static void va_TraceVP9Buf(
6283 VADisplay dpy,
6284 VAContextID context,
6285 VABufferID buffer,
6286 VABufferType type,
6287 unsigned int size,
6288 unsigned int num_elements,
6289 void *pbuf
6290 )
6291 {
6292 DPY2TRACECTX(dpy, context, VA_INVALID_ID);
6293
6294 switch (type) {
6295 case VAPictureParameterBufferType:
6296 va_TraceVAPictureParameterBufferVP9(dpy, context, buffer, type, size, num_elements, pbuf);
6297 break;
6298 case VAEncSequenceParameterBufferType:
6299 va_TraceVAEncSequenceParameterBufferVP9(dpy, context, buffer, type, size, num_elements, pbuf);
6300 break;
6301 case VAEncPictureParameterBufferType:
6302 va_TraceVAEncPictureParameterBufferVP9(dpy, context, buffer, type, size, num_elements, pbuf);
6303 break;
6304 case VASliceParameterBufferType:
6305 va_TraceVASliceParameterBufferVP9(dpy, context, buffer, type, size, num_elements, pbuf);
6306 break;
6307 case VAEncMiscParameterBufferType:
6308 va_TraceVAEncMiscParameterBuffer(dpy, context, buffer, type, size, num_elements, pbuf);
6309 break;
6310 default:
6311 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
6312 break;
6313 }
6314 }
6315
va_TraceAV1Buf(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * pbuf)6316 static void va_TraceAV1Buf(
6317 VADisplay dpy,
6318 VAContextID context,
6319 VABufferID buffer,
6320 VABufferType type,
6321 unsigned int size,
6322 unsigned int num_elements,
6323 void *pbuf
6324 )
6325 {
6326 DPY2TRACECTX(dpy, context, VA_INVALID_ID);
6327
6328 switch (type) {
6329 case VAPictureParameterBufferType:
6330 va_TraceVAPictureParameterBufferAV1(dpy, context, buffer, type, size, num_elements, pbuf);
6331 break;
6332 case VASliceParameterBufferType:
6333 va_TraceVASliceParameterBufferAV1(dpy, context, buffer, type, size, num_elements, pbuf);
6334 break;
6335 case VAEncSequenceParameterBufferType:
6336 va_TraceVAEncSequenceParameterBufferAV1(dpy, context, buffer, type, size, num_elements, pbuf);
6337 break;
6338 case VAEncPictureParameterBufferType:
6339 va_TraceVAEncPictureParameterBufferAV1(dpy, context, buffer, type, size, num_elements, pbuf);
6340 break;
6341 case VAEncSliceParameterBufferType:
6342 va_TraceVAEncSliceParameterBufferAV1(dpy, context, buffer, type, size, num_elements, pbuf);
6343 break;
6344 case VAEncMiscParameterBufferType:
6345 va_TraceVAEncMiscParameterBuffer(dpy, context, buffer, type, size, num_elements, pbuf);
6346 break;
6347 case VAEncPackedHeaderParameterBufferType:
6348 va_TraceVAEncPackedHeaderParameterBufferType(dpy, context, buffer, type, size, num_elements, pbuf);
6349 break;
6350 default:
6351 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
6352 break;
6353 }
6354 }
6355
va_TraceVC1Buf(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * pbuf)6356 static void va_TraceVC1Buf(
6357 VADisplay dpy,
6358 VAContextID context,
6359 VABufferID buffer,
6360 VABufferType type,
6361 unsigned int size,
6362 unsigned int num_elements,
6363 void *pbuf
6364 )
6365 {
6366 DPY2TRACECTX(dpy, context, VA_INVALID_ID);
6367
6368 switch (type) {
6369 case VAPictureParameterBufferType:
6370 va_TraceVAPictureParameterBufferVC1(dpy, context, buffer, type, size, num_elements, pbuf);
6371 break;
6372 case VAIQMatrixBufferType:
6373 break;
6374 case VABitPlaneBufferType:
6375 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
6376 break;
6377 case VASliceGroupMapBufferType:
6378 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
6379 break;
6380 case VASliceParameterBufferType:
6381 va_TraceVASliceParameterBufferVC1(dpy, context, buffer, type, size, num_elements, pbuf);
6382 break;
6383 case VASliceDataBufferType:
6384 va_TraceVABuffers(dpy, context, buffer, type, trace_ctx->trace_slice_size, num_elements, pbuf);
6385 break;
6386 case VAMacroblockParameterBufferType:
6387 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
6388 break;
6389 case VAResidualDataBufferType:
6390 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
6391 break;
6392 case VADeblockingParameterBufferType:
6393 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
6394 break;
6395 case VAImageBufferType:
6396 break;
6397 case VAProtectedSliceDataBufferType:
6398 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
6399 break;
6400 case VAEncCodedBufferType:
6401 break;
6402 case VAEncSequenceParameterBufferType:
6403 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
6404 break;
6405 case VAEncPictureParameterBufferType:
6406 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
6407 break;
6408 case VAEncSliceParameterBufferType:
6409 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
6410 break;
6411 default:
6412 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
6413 break;
6414 }
6415 }
6416
6417 static void
va_TraceProcFilterParameterBufferDeinterlacing(VADisplay dpy,VAContextID context,VAProcFilterParameterBufferBase * base)6418 va_TraceProcFilterParameterBufferDeinterlacing(
6419 VADisplay dpy,
6420 VAContextID context,
6421 VAProcFilterParameterBufferBase *base
6422 )
6423 {
6424 VAProcFilterParameterBufferDeinterlacing *deint = (VAProcFilterParameterBufferDeinterlacing *)base;
6425
6426 DPY2TRACECTX(dpy, context, VA_INVALID_ID);
6427
6428 va_TraceMsg(trace_ctx, "\t type = %d\n", deint->type);
6429 va_TraceMsg(trace_ctx, "\t algorithm = %d\n", deint->algorithm);
6430 va_TraceMsg(trace_ctx, "\t flags = %d\n", deint->flags);
6431 }
6432
6433 static void
va_TraceProcFilterParameterBufferColorBalance(VADisplay dpy,VAContextID context,VAProcFilterParameterBufferBase * base)6434 va_TraceProcFilterParameterBufferColorBalance(
6435 VADisplay dpy,
6436 VAContextID context,
6437 VAProcFilterParameterBufferBase *base
6438 )
6439 {
6440 VAProcFilterParameterBufferColorBalance *color_balance = (VAProcFilterParameterBufferColorBalance *)base;
6441
6442 DPY2TRACECTX(dpy, context, VA_INVALID_ID);
6443
6444 va_TraceMsg(trace_ctx, "\t type = %d\n", color_balance->type);
6445 va_TraceMsg(trace_ctx, "\t attrib = %d\n", color_balance->attrib);
6446 va_TraceMsg(trace_ctx, "\t value = %f\n", color_balance->value);
6447 }
6448
6449 static void
va_TraceProcFilterParameterBufferBase(VADisplay dpy,VAContextID context,VAProcFilterParameterBufferBase * base)6450 va_TraceProcFilterParameterBufferBase(
6451 VADisplay dpy,
6452 VAContextID context,
6453 VAProcFilterParameterBufferBase *base
6454 )
6455 {
6456 DPY2TRACECTX(dpy, context, VA_INVALID_ID);
6457
6458 va_TraceMsg(trace_ctx, "\t type = %d\n", base->type);
6459 }
6460
6461 static void
va_TraceProcFilterParameterBuffer(VADisplay dpy,VAContextID context,VABufferID * filters,unsigned int num_filters)6462 va_TraceProcFilterParameterBuffer(
6463 VADisplay dpy,
6464 VAContextID context,
6465 VABufferID *filters,
6466 unsigned int num_filters
6467 )
6468 {
6469 VABufferType type;
6470 unsigned int size;
6471 unsigned int num_elements;
6472 VAProcFilterParameterBufferBase *base_filter = NULL;
6473 unsigned int i;
6474
6475 DPY2TRACECTX(dpy, context, VA_INVALID_ID);
6476
6477 if (num_filters == 0 || filters == NULL) {
6478 va_TraceMsg(trace_ctx, "\t num_filters = %d\n", num_filters);
6479 va_TraceMsg(trace_ctx, "\t filters = %p\n", filters);
6480 return;
6481 }
6482
6483 va_TraceMsg(trace_ctx, "\t num_filters = %d\n", num_filters);
6484
6485 /* get buffer type information */
6486 for (i = 0; i < num_filters; i++) {
6487 vaBufferInfo(dpy, context, filters[i], &type, &size, &num_elements);
6488
6489 if (type != VAProcFilterParameterBufferType) {
6490 va_TraceMsg(trace_ctx, "\t filters[%d] = 0x%08x (INVALID)\n", i, filters[i]);
6491 return;
6492 } else {
6493 va_TraceMsg(trace_ctx, "\t filters[%d] = 0x%08x\n", i, filters[i]);
6494 }
6495
6496 base_filter = NULL;
6497 vaMapBuffer(dpy, filters[i], (void **)&base_filter);
6498
6499 if (base_filter == NULL) {
6500 vaUnmapBuffer(dpy, filters[i]);
6501 return;
6502 }
6503
6504 switch (base_filter->type) {
6505 case VAProcFilterDeinterlacing:
6506 va_TraceProcFilterParameterBufferDeinterlacing(dpy,
6507 context,
6508 base_filter);
6509 break;
6510 case VAProcFilterColorBalance:
6511 va_TraceProcFilterParameterBufferColorBalance(dpy,
6512 context,
6513 base_filter);
6514 break;
6515 default:
6516 va_TraceProcFilterParameterBufferBase(dpy,
6517 context,
6518 base_filter);
6519 break;
6520 }
6521
6522 vaUnmapBuffer(dpy, filters[i]);
6523 }
6524 }
6525
6526 static void
va_TraceVAProcPipelineParameterBuffer(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)6527 va_TraceVAProcPipelineParameterBuffer(
6528 VADisplay dpy,
6529 VAContextID context,
6530 VABufferID buffer,
6531 VABufferType type,
6532 unsigned int size,
6533 unsigned int num_elements,
6534 void *data
6535 )
6536 {
6537 VAProcPipelineParameterBuffer *p = (VAProcPipelineParameterBuffer *)data;
6538 uint32_t i;
6539
6540 DPY2TRACECTX(dpy, context, VA_INVALID_ID);
6541
6542 va_TraceMsg(trace_ctx, "\t--VAProcPipelineParameterBuffer\n");
6543
6544 va_TraceMsg(trace_ctx, "\t surface = 0x%08x\n", p->surface);
6545
6546 if (p->surface_region) {
6547 va_TraceMsg(trace_ctx, "\t surface_region\n");
6548 va_TraceMsg(trace_ctx, "\t x = %d\n", p->surface_region->x);
6549 va_TraceMsg(trace_ctx, "\t y = %d\n", p->surface_region->y);
6550 va_TraceMsg(trace_ctx, "\t width = %d\n", p->surface_region->width);
6551 va_TraceMsg(trace_ctx, "\t height = %d\n", p->surface_region->height);
6552 } else {
6553 va_TraceMsg(trace_ctx, "\t surface_region = (NULL)\n");
6554 }
6555
6556 va_TraceMsg(trace_ctx, "\t surface_color_standard = %d\n", p->surface_color_standard);
6557
6558 if (p->output_region) {
6559 va_TraceMsg(trace_ctx, "\t output_region\n");
6560 va_TraceMsg(trace_ctx, "\t x = %d\n", p->output_region->x);
6561 va_TraceMsg(trace_ctx, "\t y = %d\n", p->output_region->y);
6562 va_TraceMsg(trace_ctx, "\t width = %d\n", p->output_region->width);
6563 va_TraceMsg(trace_ctx, "\t height = %d\n", p->output_region->height);
6564 } else {
6565 va_TraceMsg(trace_ctx, "\t output_region = (NULL)\n");
6566 }
6567
6568 va_TraceMsg(trace_ctx, "\t output_background_color = 0x%08x\n", p->output_background_color);
6569 va_TraceMsg(trace_ctx, "\t output_color_standard = %d\n", p->output_color_standard);
6570 va_TraceMsg(trace_ctx, "\t pipeline_flags = 0x%08x\n", p->pipeline_flags);
6571 va_TraceMsg(trace_ctx, "\t filter_flags = 0x%08x\n", p->filter_flags);
6572
6573 va_TraceProcFilterParameterBuffer(dpy, context, p->filters, p->num_filters);
6574
6575 va_TraceMsg(trace_ctx, "\t num_forward_references = 0x%08x\n", p->num_forward_references);
6576
6577 if (p->num_forward_references) {
6578 va_TraceMsg(trace_ctx, "\t forward_references\n");
6579
6580 if (p->forward_references) {
6581 /* only dump the first 5 forward references */
6582 for (i = 0; i < p->num_forward_references && i < 5; i++) {
6583 va_TraceMsg(trace_ctx, "\t forward_references[%d] = 0x%08x\n", i, p->forward_references[i]);
6584 }
6585 } else {
6586 for (i = 0; i < p->num_forward_references && i < 5; i++) {
6587 va_TraceMsg(trace_ctx, "\t forward_references[%d] = (NULL)\n", i);
6588 }
6589 }
6590 }
6591
6592 va_TraceMsg(trace_ctx, "\t num_backward_references = 0x%08x\n", p->num_backward_references);
6593
6594 if (p->num_backward_references) {
6595 va_TraceMsg(trace_ctx, "\t backward_references\n");
6596
6597 if (p->backward_references) {
6598 /* only dump the first 5 backward references */
6599 for (i = 0; i < p->num_backward_references && i < 5; i++) {
6600 va_TraceMsg(trace_ctx, "\t backward_references[%d] = 0x%08x\n", i, p->backward_references[i]);
6601 }
6602 } else {
6603 for (i = 0; i < p->num_backward_references && i < 5; i++) {
6604 va_TraceMsg(trace_ctx, "\t backward_references[%d] = (NULL)\n", i);
6605 }
6606 }
6607 }
6608
6609 /* FIXME: add other info later */
6610
6611 va_TraceMsg(trace_ctx, NULL);
6612 }
6613
6614 static void
va_TraceNoneBuf(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * pbuf)6615 va_TraceNoneBuf(
6616 VADisplay dpy,
6617 VAContextID context,
6618 VABufferID buffer,
6619 VABufferType type,
6620 unsigned int size,
6621 unsigned int num_elements,
6622 void *pbuf
6623 )
6624 {
6625 DPY2TRACECTX(dpy, context, VA_INVALID_ID);
6626
6627 switch (type) {
6628 case VAProcPipelineParameterBufferType:
6629 va_TraceVAProcPipelineParameterBuffer(dpy, context, buffer, type, size, num_elements, pbuf);
6630 break;
6631 default:
6632 va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
6633 break;
6634 }
6635 }
6636
va_TraceRenderPicture(VADisplay dpy,VAContextID context,VABufferID * buffers,int num_buffers)6637 void va_TraceRenderPicture(
6638 VADisplay dpy,
6639 VAContextID context,
6640 VABufferID *buffers,
6641 int num_buffers
6642 )
6643 {
6644 VABufferType type;
6645 unsigned int size;
6646 unsigned int num_elements;
6647 int i;
6648 DPY2TRACECTX(dpy, context, VA_INVALID_ID);
6649
6650 TRACE_FUNCNAME(idx);
6651
6652 va_TraceMsg(trace_ctx, "\tcontext = 0x%08x\n", context);
6653 va_TraceMsg(trace_ctx, "\tnum_buffers = %d\n", num_buffers);
6654 if (buffers == NULL)
6655 return;
6656
6657 for (i = 0; i < num_buffers; i++) {
6658 unsigned char *pbuf = NULL;
6659 unsigned int j;
6660
6661 /* get buffer type information */
6662 vaBufferInfo(dpy, context, buffers[i], &type, &size, &num_elements);
6663
6664 va_TraceMsg(trace_ctx, "\t---------------------------\n");
6665 va_TraceMsg(trace_ctx, "\tbuffers[%d] = 0x%08x\n", i, buffers[i]);
6666 va_TraceMsg(trace_ctx, "\t type = %s\n", vaBufferTypeStr(type));
6667 va_TraceMsg(trace_ctx, "\t size = %d\n", size);
6668 va_TraceMsg(trace_ctx, "\t num_elements = %d\n", num_elements);
6669
6670 vaMapBuffer(dpy, buffers[i], (void **)&pbuf);
6671 if (pbuf == NULL)
6672 continue;
6673
6674 switch (trace_ctx->trace_profile) {
6675 case VAProfileMPEG2Simple:
6676 case VAProfileMPEG2Main:
6677 for (j = 0; j < num_elements; j++) {
6678 va_TraceMsg(trace_ctx, "\telement[%d] =\n", j);
6679 va_TraceMPEG2Buf(dpy, context, buffers[i], type, size, num_elements, pbuf + size * j);
6680 }
6681 break;
6682 case VAProfileMPEG4Simple:
6683 case VAProfileMPEG4AdvancedSimple:
6684 case VAProfileMPEG4Main:
6685 for (j = 0; j < num_elements; j++) {
6686 va_TraceMsg(trace_ctx, "\telement[%d] =\n", j);
6687 va_TraceMPEG4Buf(dpy, context, buffers[i], type, size, num_elements, pbuf + size * j);
6688 }
6689 break;
6690 case VAProfileH264High10:
6691 case VAProfileH264Main:
6692 case VAProfileH264High:
6693 case VAProfileH264ConstrainedBaseline:
6694 for (j = 0; j < num_elements; j++) {
6695 va_TraceMsg(trace_ctx, "\telement[%d] =\n", j);
6696
6697 va_TraceH264Buf(dpy, context, buffers[i], type, size, num_elements, pbuf + size * j);
6698 }
6699 break;
6700 case VAProfileVC1Simple:
6701 case VAProfileVC1Main:
6702 case VAProfileVC1Advanced:
6703 for (j = 0; j < num_elements; j++) {
6704 va_TraceMsg(trace_ctx, "\telement[%d] =\n", j);
6705
6706 va_TraceVC1Buf(dpy, context, buffers[i], type, size, num_elements, pbuf + size * j);
6707 }
6708 break;
6709 case VAProfileH263Baseline:
6710 for (j = 0; j < num_elements; j++) {
6711 va_TraceMsg(trace_ctx, "\telement[%d] =\n", j);
6712
6713 va_TraceH263Buf(dpy, context, buffers[i], type, size, num_elements, pbuf + size * j);
6714 }
6715 break;
6716 case VAProfileJPEGBaseline:
6717 for (j = 0; j < num_elements; j++) {
6718 va_TraceMsg(trace_ctx, "\telement[%d] =\n", j);
6719
6720 va_TraceJPEGBuf(dpy, context, buffers[i], type, size, num_elements, pbuf + size * j);
6721 }
6722 break;
6723
6724 case VAProfileNone:
6725 for (j = 0; j < num_elements; j++) {
6726 va_TraceMsg(trace_ctx, "\telement[%d] =\n", j);
6727
6728 va_TraceNoneBuf(dpy, context, buffers[i], type, size, num_elements, pbuf + size * j);
6729 }
6730 break;
6731
6732 case VAProfileVP8Version0_3:
6733 for (j = 0; j < num_elements; j++) {
6734 va_TraceMsg(trace_ctx, "\telement[%d] =\n", j);
6735
6736 va_TraceVP8Buf(dpy, context, buffers[i], type, size, num_elements, pbuf + size * j);
6737 }
6738 break;
6739
6740 case VAProfileHEVCMain12:
6741 case VAProfileHEVCMain422_10:
6742 case VAProfileHEVCMain422_12:
6743 case VAProfileHEVCMain444:
6744 case VAProfileHEVCMain444_10:
6745 case VAProfileHEVCMain444_12:
6746 case VAProfileHEVCMain:
6747 case VAProfileHEVCMain10:
6748 case VAProfileHEVCSccMain:
6749 case VAProfileHEVCSccMain10:
6750 case VAProfileHEVCSccMain444:
6751 case VAProfileHEVCSccMain444_10:
6752 for (j = 0; j < num_elements; j++) {
6753 va_TraceMsg(trace_ctx, "\telement[%d] = \n", j);
6754
6755 va_TraceHEVCBuf(dpy, context, buffers[i], type, size, num_elements, pbuf + size * j);
6756 }
6757 break;
6758 case VAProfileVVCMain10:
6759 case VAProfileVVCMultilayerMain10:
6760 for (j = 0; j < num_elements; j++) {
6761 va_TraceMsg(trace_ctx, "\telement[%d] = \n", j);
6762
6763 va_TraceVVCBuf(dpy, context, buffers[i], type, size, num_elements, pbuf + size * j);
6764 }
6765 break;
6766 case VAProfileVP9Profile0:
6767 case VAProfileVP9Profile1:
6768 case VAProfileVP9Profile2:
6769 case VAProfileVP9Profile3:
6770 for (j = 0; j < num_elements; j++) {
6771 va_TraceMsg(trace_ctx, "\telement[%d] = \n", j);
6772
6773 va_TraceVP9Buf(dpy, context, buffers[i], type, size, num_elements, pbuf + size * j);
6774 }
6775 break;
6776 case VAProfileAV1Profile0:
6777 case VAProfileAV1Profile1:
6778 for (j = 0; j < num_elements; j++) {
6779 va_TraceMsg(trace_ctx, "\telement[%d] = \n", j);
6780
6781 va_TraceAV1Buf(dpy, context, buffers[i], type, size, num_elements, pbuf + size * j);
6782 }
6783 break;
6784 default:
6785 break;
6786 }
6787
6788 vaUnmapBuffer(dpy, buffers[i]);
6789 }
6790
6791 va_TraceMsg(trace_ctx, NULL);
6792 }
6793
va_TraceEndPicture(VADisplay dpy,VAContextID context,int endpic_done)6794 void va_TraceEndPicture(
6795 VADisplay dpy,
6796 VAContextID context,
6797 int endpic_done
6798 )
6799 {
6800 DPY2TRACECTX(dpy, context, VA_INVALID_ID);
6801
6802 TRACE_FUNCNAME(idx);
6803
6804 va_TraceMsg(trace_ctx, "\tcontext = 0x%08x\n", context);
6805 va_TraceMsg(trace_ctx, "\trender_targets = 0x%08x\n", trace_ctx->trace_rendertarget);
6806 va_TraceMsg(trace_ctx, NULL);
6807 }
6808
va_TraceEndPictureExt(VADisplay dpy,VAContextID context,int endpic_done)6809 void va_TraceEndPictureExt(
6810 VADisplay dpy,
6811 VAContextID context,
6812 int endpic_done
6813 )
6814 {
6815 int encode, decode, jpeg;
6816 DPY2TRACECTX(dpy, context, VA_INVALID_ID);
6817 /* avoid to create so many empty files */
6818 encode = (trace_ctx->trace_entrypoint == VAEntrypointEncSlice);
6819 decode = (trace_ctx->trace_entrypoint == VAEntrypointVLD);
6820 jpeg = (trace_ctx->trace_entrypoint == VAEntrypointEncPicture);
6821
6822 /* trace encode source surface, can do it before HW completes rendering */
6823 if ((encode && (va_trace_flag & VA_TRACE_FLAG_SURFACE_ENCODE)) ||
6824 (jpeg && (va_trace_flag & VA_TRACE_FLAG_SURFACE_JPEG)))
6825 va_TraceSurface(dpy, context);
6826
6827 /* trace decoded surface, do it after HW completes rendering */
6828 if (decode && ((va_trace_flag & VA_TRACE_FLAG_SURFACE_DECODE))) {
6829 vaSyncSurface(dpy, trace_ctx->trace_rendertarget);
6830 va_TraceSurface(dpy, context);
6831 }
6832 }
6833
6834
va_TraceSyncSurface(VADisplay dpy,VASurfaceID render_target)6835 void va_TraceSyncSurface(
6836 VADisplay dpy,
6837 VASurfaceID render_target
6838 )
6839 {
6840 DPY2TRACE_VIRCTX(dpy);
6841
6842 TRACE_FUNCNAME(idx);
6843
6844 va_TraceMsg(trace_ctx, "\trender_target = 0x%08x\n", render_target);
6845 va_TraceMsg(trace_ctx, NULL);
6846
6847 DPY2TRACE_VIRCTX_EXIT(pva_trace);
6848 }
6849
va_TraceSyncSurface2(VADisplay dpy,VASurfaceID surface,uint64_t timeout_ns)6850 void va_TraceSyncSurface2(
6851 VADisplay dpy,
6852 VASurfaceID surface,
6853 uint64_t timeout_ns
6854 )
6855 {
6856 DPY2TRACE_VIRCTX(dpy);
6857
6858 TRACE_FUNCNAME(idx);
6859
6860 va_TraceMsg(trace_ctx, "\tsurface = 0x%08x\n", surface);
6861 va_TraceMsg(trace_ctx, "\ttimeout_ns = %lld\n", timeout_ns);
6862 va_TraceMsg(trace_ctx, NULL);
6863
6864 DPY2TRACE_VIRCTX_EXIT(pva_trace);
6865 }
6866
va_TraceQuerySurfaceAttributes(VADisplay dpy,VAConfigID config,VASurfaceAttrib * attrib_list,unsigned int * num_attribs)6867 void va_TraceQuerySurfaceAttributes(
6868 VADisplay dpy,
6869 VAConfigID config,
6870 VASurfaceAttrib *attrib_list,
6871 unsigned int *num_attribs
6872 )
6873 {
6874 DPY2TRACE_VIRCTX(dpy);
6875
6876 TRACE_FUNCNAME(idx);
6877 va_TraceMsg(trace_ctx, "\tconfig = 0x%08x\n", config);
6878 va_TraceSurfaceAttributes(trace_ctx, attrib_list, num_attribs, 0);
6879
6880 va_TraceMsg(trace_ctx, NULL);
6881
6882 DPY2TRACE_VIRCTX_EXIT(pva_trace);
6883 }
6884
6885
va_TraceQuerySurfaceStatus(VADisplay dpy,VASurfaceID render_target,VASurfaceStatus * status)6886 void va_TraceQuerySurfaceStatus(
6887 VADisplay dpy,
6888 VASurfaceID render_target,
6889 VASurfaceStatus *status /* out */
6890 )
6891 {
6892 DPY2TRACE_VIRCTX(dpy);
6893
6894 TRACE_FUNCNAME(idx);
6895
6896 va_TraceMsg(trace_ctx, "\trender_target = 0x%08x\n", render_target);
6897 if (status)
6898 va_TraceMsg(trace_ctx, "\tstatus = 0x%08x\n", *status);
6899 va_TraceMsg(trace_ctx, NULL);
6900
6901 DPY2TRACE_VIRCTX_EXIT(pva_trace);
6902 }
6903
6904
va_TraceQuerySurfaceError(VADisplay dpy,VASurfaceID surface,VAStatus error_status,void ** error_info)6905 void va_TraceQuerySurfaceError(
6906 VADisplay dpy,
6907 VASurfaceID surface,
6908 VAStatus error_status,
6909 void **error_info /*out*/
6910 )
6911 {
6912 DPY2TRACE_VIRCTX(dpy);
6913
6914 TRACE_FUNCNAME(idx);
6915 va_TraceMsg(trace_ctx, "\tsurface = 0x%08x\n", surface);
6916 va_TraceMsg(trace_ctx, "\terror_status = 0x%08x\n", error_status);
6917 if (error_info && (error_status == VA_STATUS_ERROR_DECODING_ERROR)) {
6918 VASurfaceDecodeMBErrors *p = *error_info;
6919 while (p && (p->status != -1)) {
6920 va_TraceMsg(trace_ctx, "\t\tstatus = %d\n", p->status);
6921 va_TraceMsg(trace_ctx, "\t\tstart_mb = %d\n", p->start_mb);
6922 va_TraceMsg(trace_ctx, "\t\tend_mb = %d\n", p->end_mb);
6923 p++; /* next error record */
6924 }
6925 }
6926 va_TraceMsg(trace_ctx, NULL);
6927
6928 DPY2TRACE_VIRCTX_EXIT(pva_trace);
6929 }
6930
va_TraceSyncBuffer(VADisplay dpy,VABufferID buf_id,uint64_t timeout_ns)6931 void va_TraceSyncBuffer(
6932 VADisplay dpy,
6933 VABufferID buf_id,
6934 uint64_t timeout_ns
6935 )
6936 {
6937 DPY2TRACE_VIRCTX(dpy);
6938
6939 TRACE_FUNCNAME(idx);
6940
6941 va_TraceMsg(trace_ctx, "\tbuf_id = 0x%08x\n", buf_id);
6942 va_TraceMsg(trace_ctx, "\ttimeout_ns = %lld\n", timeout_ns);
6943 va_TraceMsg(trace_ctx, NULL);
6944
6945 DPY2TRACE_VIRCTX_EXIT(pva_trace);
6946 }
6947
va_TraceMaxNumDisplayAttributes(VADisplay dpy,int number)6948 void va_TraceMaxNumDisplayAttributes(
6949 VADisplay dpy,
6950 int number
6951 )
6952 {
6953 DPY2TRACE_VIRCTX(dpy);
6954
6955 TRACE_FUNCNAME(idx);
6956
6957 va_TraceMsg(trace_ctx, "\tmax_display_attributes = %d\n", number);
6958 va_TraceMsg(trace_ctx, NULL);
6959
6960 DPY2TRACE_VIRCTX_EXIT(pva_trace);
6961 }
6962
va_TraceQueryDisplayAttributes(VADisplay dpy,VADisplayAttribute * attr_list,int * num_attributes)6963 void va_TraceQueryDisplayAttributes(
6964 VADisplay dpy,
6965 VADisplayAttribute *attr_list, /* out */
6966 int *num_attributes /* out */
6967 )
6968 {
6969 int i;
6970
6971 if (attr_list == NULL || num_attributes == NULL)
6972 return;
6973
6974 DPY2TRACE_VIRCTX(dpy);
6975
6976 TRACE_FUNCNAME(idx);
6977 va_TraceMsg(trace_ctx, "\tnum_attributes = %d\n", *num_attributes);
6978
6979 for (i = 0; i < *num_attributes; i++) {
6980 va_TraceMsg(trace_ctx, "\tattr_list[%d] =\n", i);
6981 va_TraceMsg(trace_ctx, "\t type = 0x%08x\n", attr_list[i].type);
6982 va_TraceMsg(trace_ctx, "\t min_value = %d\n", attr_list[i].min_value);
6983 va_TraceMsg(trace_ctx, "\t max_value = %d\n", attr_list[i].max_value);
6984 va_TraceMsg(trace_ctx, "\t value = %d\n", attr_list[i].value);
6985 va_TraceMsg(trace_ctx, "\t flags = %d\n", attr_list[i].flags);
6986 }
6987 va_TraceMsg(trace_ctx, NULL);
6988
6989 DPY2TRACE_VIRCTX_EXIT(pva_trace);
6990 }
6991
6992
va_TraceDisplayAttributes(struct trace_context * trace_ctx,VADisplayAttribute * attr_list,int num_attributes)6993 static void va_TraceDisplayAttributes(
6994 struct trace_context *trace_ctx,
6995 VADisplayAttribute *attr_list,
6996 int num_attributes
6997 )
6998 {
6999 int i;
7000
7001 if (attr_list == NULL)
7002 return;
7003
7004 va_TraceMsg(trace_ctx, "\tnum_attributes = %d\n", num_attributes);
7005
7006 for (i = 0; i < num_attributes; i++) {
7007 va_TraceMsg(trace_ctx, "\tattr_list[%d] =\n", i);
7008 va_TraceMsg(trace_ctx, "\t type = 0x%08x\n", attr_list[i].type);
7009 va_TraceMsg(trace_ctx, "\t min_value = %d\n", attr_list[i].min_value);
7010 va_TraceMsg(trace_ctx, "\t max_value = %d\n", attr_list[i].max_value);
7011 va_TraceMsg(trace_ctx, "\t value = %d\n", attr_list[i].value);
7012 va_TraceMsg(trace_ctx, "\t flags = %d\n", attr_list[i].flags);
7013 }
7014 va_TraceMsg(trace_ctx, NULL);
7015 }
7016
7017
va_TraceGetDisplayAttributes(VADisplay dpy,VADisplayAttribute * attr_list,int num_attributes)7018 void va_TraceGetDisplayAttributes(
7019 VADisplay dpy,
7020 VADisplayAttribute *attr_list,
7021 int num_attributes
7022 )
7023 {
7024 DPY2TRACE_VIRCTX(dpy);
7025
7026 TRACE_FUNCNAME(idx);
7027
7028 va_TraceDisplayAttributes(trace_ctx, attr_list, num_attributes);
7029
7030 DPY2TRACE_VIRCTX_EXIT(pva_trace);
7031 }
7032
va_TraceSetDisplayAttributes(VADisplay dpy,VADisplayAttribute * attr_list,int num_attributes)7033 void va_TraceSetDisplayAttributes(
7034 VADisplay dpy,
7035 VADisplayAttribute *attr_list,
7036 int num_attributes
7037 )
7038 {
7039 DPY2TRACE_VIRCTX(dpy);
7040
7041 TRACE_FUNCNAME(idx);
7042
7043 va_TraceDisplayAttributes(trace_ctx, attr_list, num_attributes);
7044
7045 DPY2TRACE_VIRCTX_EXIT(pva_trace);
7046 }
7047
7048
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)7049 void va_TracePutSurface(
7050 VADisplay dpy,
7051 VASurfaceID surface,
7052 void *draw, /* the target Drawable */
7053 short srcx,
7054 short srcy,
7055 unsigned short srcw,
7056 unsigned short srch,
7057 short destx,
7058 short desty,
7059 unsigned short destw,
7060 unsigned short desth,
7061 VARectangle *cliprects, /* client supplied clip list */
7062 unsigned int number_cliprects, /* number of clip rects in the clip list */
7063 unsigned int flags /* de-interlacing flags */
7064 )
7065 {
7066 DPY2TRACE_VIRCTX(dpy);
7067
7068 TRACE_FUNCNAME(idx);
7069
7070 va_TraceMsg(trace_ctx, "\tsurface = 0x%08x\n", surface);
7071 va_TraceMsg(trace_ctx, "\tdraw = 0x%p\n", draw);
7072 va_TraceMsg(trace_ctx, "\tsrcx = %d\n", srcx);
7073 va_TraceMsg(trace_ctx, "\tsrcy = %d\n", srcy);
7074 va_TraceMsg(trace_ctx, "\tsrcw = %d\n", srcw);
7075 va_TraceMsg(trace_ctx, "\tsrch = %d\n", srch);
7076 va_TraceMsg(trace_ctx, "\tdestx = %d\n", destx);
7077 va_TraceMsg(trace_ctx, "\tdesty = %d\n", desty);
7078 va_TraceMsg(trace_ctx, "\tdestw = %d\n", destw);
7079 va_TraceMsg(trace_ctx, "\tdesth = %d\n", desth);
7080 va_TraceMsg(trace_ctx, "\tcliprects = 0x%p\n", cliprects);
7081 va_TraceMsg(trace_ctx, "\tnumber_cliprects = %d\n", number_cliprects);
7082 va_TraceMsg(trace_ctx, "\tflags = 0x%08x\n", flags);
7083 va_TraceMsg(trace_ctx, NULL);
7084
7085 DPY2TRACE_VIRCTX_EXIT(pva_trace);
7086 }
7087
va_TraceStatus(VADisplay dpy,const char * funcName,VAStatus status)7088 void va_TraceStatus(VADisplay dpy, const char * funcName, VAStatus status)
7089 {
7090 DPY2TRACE_VIRCTX(dpy);
7091
7092 va_TraceMsg(trace_ctx, "=========%s ret = %s, %s \n", funcName, vaStatusStr(status), vaErrorStr(status));
7093 DPY2TRACE_VIRCTX_EXIT(pva_trace);
7094 }
7095
va_TraceEvent(VADisplay dpy,unsigned short id,unsigned short opcode,unsigned int num,VAEventData * desc)7096 void va_TraceEvent(
7097 VADisplay dpy,
7098 unsigned short id,
7099 unsigned short opcode,
7100 unsigned int num,
7101 VAEventData *desc
7102 )
7103 {
7104 struct va_trace *pva_trace = (struct va_trace *)(((VADisplayContextP)dpy)->vatrace);
7105 int data[VA_TRACE_MAX_SIZE / sizeof(int)];
7106 size_t write_size = 0;
7107 char *p_data;
7108 int i;
7109
7110 if (pva_trace == NULL || pva_trace->ftrace_fd < 0) {
7111 return;
7112 }
7113 /* trace event header: 32bit va trace id; 32bit event id + size; 32bit opcode */
7114 data[0] = VA_TRACE_ID;
7115 data[1] = id << 16;
7116 data[2] = opcode;
7117 /* append event data in scattered list */
7118 p_data = (char *)&data[3];
7119 write_size = VA_TRACE_HEADER_SIZE;
7120 for (i = 0; i < num; i++) {
7121 if (write_size + desc[i].size > VA_TRACE_MAX_SIZE) {
7122 va_errorMessage(pva_trace->dpy, "error: trace event %d carry too big data. max size %d \n", id, VA_TRACE_MAX_SIZE);
7123 break;
7124 }
7125 if (desc[i].buf) {
7126 memcpy(p_data, desc[i].buf, desc[i].size);
7127 } else {
7128 /*fill with 0xff for null input. 0 could be valid some case. */
7129 memset(p_data, 0xff, desc[i].size);
7130 }
7131 p_data += desc[i].size;
7132 write_size += desc[i].size;
7133 }
7134 if (i == num) {
7135 data[1] |= write_size; /* set event data size before write */
7136 write_size = write(pva_trace->ftrace_fd, data, write_size);
7137 }
7138 return;
7139 }
7140
va_TraceEventBuffers(VADisplay dpy,VAContextID context,int num_buffers,VABufferID * buffers)7141 void va_TraceEventBuffers(
7142 VADisplay dpy,
7143 VAContextID context,
7144 int num_buffers,
7145 VABufferID *buffers)
7146 {
7147 struct va_trace *pva_trace = (struct va_trace *)(((VADisplayContextP)dpy)->vatrace);
7148 VABufferType type;
7149 unsigned int size, num;
7150 int i;
7151
7152 if (pva_trace == NULL || pva_trace->ftrace_fd < 0) {
7153 return;
7154 }
7155 for (i = 0; i < num_buffers; i++) {
7156 unsigned char *pbuf = NULL;
7157 unsigned int total = 0;
7158 int data[3];
7159 vaBufferInfo(dpy, context, buffers[i], &type, &size, &num);
7160 vaMapBuffer(dpy, buffers[i], (void **)&pbuf);
7161 if (pbuf == NULL)
7162 continue;
7163 total = size * num;
7164 /* fill buffer dump header */
7165 data[0] = type;
7166 data[1] = size;
7167 data[2] = total;
7168 /* apeend buffer data */
7169 if (VA_TRACE_HEADER_SIZE + sizeof(data) + total <= VA_TRACE_MAX_SIZE) {
7170 /* send in trace info opcode if data is small */
7171 VAEventData desc[] = {{data, sizeof(data)}, {pbuf, total}};
7172 va_TraceEvent(dpy, BUFFER_DATA, TRACE_INFO, 2, desc);
7173 } else {
7174 // split buffer data to send in multi trace event
7175 VAEventData desc[2] = {{data, sizeof(data)}, {NULL, 0}};
7176 unsigned int write_size = 0;
7177
7178 va_TraceEvent(dpy, BUFFER_DATA, TRACE_BEGIN, 1, desc);
7179 desc[0].buf = &write_size;
7180 desc[0].size = sizeof(write_size);
7181 while (total > 0) {
7182 write_size = total;
7183 if (write_size > VA_TRACE_MAX_SIZE - VA_TRACE_HEADER_SIZE - sizeof(unsigned int)) {
7184 write_size = VA_TRACE_MAX_SIZE - VA_TRACE_HEADER_SIZE - sizeof(unsigned int);
7185 }
7186 desc[1].buf = pbuf;
7187 desc[1].size = write_size;
7188 va_TraceEvent(dpy, BUFFER_DATA, TRACE_DATA, 2, desc);
7189 total -= write_size;
7190 pbuf += write_size;
7191 }
7192 va_TraceEvent(dpy, BUFFER_DATA, TRACE_END, 0, NULL);
7193 }
7194 }
7195 return;
7196 }
7197
va_TraceExportSurfaceHandle(VADisplay dpy,VASurfaceID surfaceId,uint32_t memType,uint32_t flags,void * descriptor)7198 void va_TraceExportSurfaceHandle(
7199 VADisplay dpy,
7200 VASurfaceID surfaceId,
7201 uint32_t memType,
7202 uint32_t flags,
7203 void *descriptor)
7204 {
7205 int i;
7206
7207 DPY2TRACE_VIRCTX(dpy);
7208
7209 TRACE_FUNCNAME(idx);
7210
7211 va_TraceMsg(trace_ctx, "\tsurfaceId = 0x%08x\n", surfaceId);
7212 va_TraceMsg(trace_ctx, "\tmemType = 0x%08x\n", memType);
7213 va_TraceMsg(trace_ctx, "\tflags = 0x%08x\n", flags);
7214
7215 if (memType != VA_SURFACE_ATTRIB_MEM_TYPE_DRM_PRIME_2 && memType != VA_SURFACE_ATTRIB_MEM_TYPE_DRM_PRIME_3) {
7216 DPY2TRACE_VIRCTX_EXIT(pva_trace);
7217 return;
7218 }
7219
7220 VADRMPRIMESurfaceDescriptor *desc = (VADRMPRIMESurfaceDescriptor *)descriptor;
7221
7222 if (!desc) {
7223 DPY2TRACE_VIRCTX_EXIT(pva_trace);
7224 return;
7225 }
7226
7227 va_TraceMsg(trace_ctx, "\tfourcc = %u\n", desc->fourcc);
7228 va_TraceMsg(trace_ctx, "\twidth = %u\n", desc->width);
7229 va_TraceMsg(trace_ctx, "\theight = %u\n", desc->height);
7230
7231 va_TraceMsg(trace_ctx, "\tnum_objects = %u\n", desc->num_objects);
7232 for (i = 0; i < desc->num_objects; i++) {
7233 va_TraceMsg(trace_ctx, "\tobject %d, fd = %d\n", i, desc->objects[i].fd);
7234 va_TraceMsg(trace_ctx, "\tobject %d, size = %u\n", i, desc->objects[i].size);
7235 va_TraceMsg(trace_ctx, "\tobject %d, modifier = 0x%llx\n", i, desc->objects[i].drm_format_modifier);
7236 }
7237
7238 va_TraceMsg(trace_ctx, "\tnum_objects = %u\n", desc->num_layers);
7239 for (i = 0; i < desc->num_layers; i++) {
7240 va_TraceMsg(trace_ctx, "\tlayer %d, drm_format = %d\n", i, desc->layers[i].drm_format);
7241 va_TraceMsg(trace_ctx, "\tlayer %d, size = %u\n", i, desc->layers[i].num_planes);
7242 va_TraceMsg(trace_ctx, "\tlayer %d, object idx = [%d, %d, %d, %d]\n", i, desc->layers[i].object_index[0], desc->layers[i].object_index[1], desc->layers[i].object_index[2], desc->layers[i].object_index[3]);
7243 va_TraceMsg(trace_ctx, "\tlayer %d, offset = [%d, %d, %d, %d]\n", i, desc->layers[i].offset[0], desc->layers[i].offset[1], desc->layers[i].offset[2], desc->layers[i].offset[3]);
7244 va_TraceMsg(trace_ctx, "\tlayer %d, pitch = [%d, %d, %d, %d]\n", i, desc->layers[i].pitch[0], desc->layers[i].pitch[1], desc->layers[i].pitch[2], desc->layers[i].pitch[3]);
7245 }
7246
7247 DPY2TRACE_VIRCTX_EXIT(pva_trace);
7248 }
7249