va_trace.c revision 6579ab9cbc1c3f172a11d37a00c2bb7566b6587a
1b0fac498ca4863166252f1268fda83394db54153Fei Jiang/*
236bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang * Copyright (c) 2009-2011 Intel Corporation. All Rights Reserved.
3b0fac498ca4863166252f1268fda83394db54153Fei Jiang *
4b0fac498ca4863166252f1268fda83394db54153Fei Jiang * Permission is hereby granted, free of charge, to any person obtaining a
5b0fac498ca4863166252f1268fda83394db54153Fei Jiang * copy of this software and associated documentation files (the
6b0fac498ca4863166252f1268fda83394db54153Fei Jiang * "Software"), to deal in the Software without restriction, including
7b0fac498ca4863166252f1268fda83394db54153Fei Jiang * without limitation the rights to use, copy, modify, merge, publish,
8b0fac498ca4863166252f1268fda83394db54153Fei Jiang * distribute, sub license, and/or sell copies of the Software, and to
9b0fac498ca4863166252f1268fda83394db54153Fei Jiang * permit persons to whom the Software is furnished to do so, subject to
10b0fac498ca4863166252f1268fda83394db54153Fei Jiang * the following conditions:
11b0fac498ca4863166252f1268fda83394db54153Fei Jiang *
12b0fac498ca4863166252f1268fda83394db54153Fei Jiang * The above copyright notice and this permission notice (including the
13b0fac498ca4863166252f1268fda83394db54153Fei Jiang * next paragraph) shall be included in all copies or substantial portions
14b0fac498ca4863166252f1268fda83394db54153Fei Jiang * of the Software.
15b0fac498ca4863166252f1268fda83394db54153Fei Jiang *
16b0fac498ca4863166252f1268fda83394db54153Fei Jiang * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
17b0fac498ca4863166252f1268fda83394db54153Fei Jiang * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18b0fac498ca4863166252f1268fda83394db54153Fei Jiang * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
19b0fac498ca4863166252f1268fda83394db54153Fei Jiang * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
20b0fac498ca4863166252f1268fda83394db54153Fei Jiang * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
21b0fac498ca4863166252f1268fda83394db54153Fei Jiang * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
22b0fac498ca4863166252f1268fda83394db54153Fei Jiang * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23b0fac498ca4863166252f1268fda83394db54153Fei Jiang */
24b0fac498ca4863166252f1268fda83394db54153Fei Jiang
25b0fac498ca4863166252f1268fda83394db54153Fei Jiang#define _GNU_SOURCE 1
26b0fac498ca4863166252f1268fda83394db54153Fei Jiang#include "va.h"
274b672db6ee89c9846451bbab23cf18e93c4260b2hding#include "va_enc_h264.h"
28b0fac498ca4863166252f1268fda83394db54153Fei Jiang#include "va_backend.h"
29901c77a7aa491f56b63af7b655b67439481e4177Fei Jiang#include "va_trace.h"
304b672db6ee89c9846451bbab23cf18e93c4260b2hding#include "va_enc_h264.h"
31b0fac498ca4863166252f1268fda83394db54153Fei Jiang
32b0fac498ca4863166252f1268fda83394db54153Fei Jiang#include <assert.h>
33b0fac498ca4863166252f1268fda83394db54153Fei Jiang#include <stdarg.h>
34b0fac498ca4863166252f1268fda83394db54153Fei Jiang#include <stdlib.h>
35b0fac498ca4863166252f1268fda83394db54153Fei Jiang#include <stdio.h>
36b0fac498ca4863166252f1268fda83394db54153Fei Jiang#include <string.h>
37b0fac498ca4863166252f1268fda83394db54153Fei Jiang#include <dlfcn.h>
38b0fac498ca4863166252f1268fda83394db54153Fei Jiang#include <unistd.h>
3921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan#include <sys/types.h>
4021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan#include <sys/stat.h>
4121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan#include <unistd.h>
4221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan#include <time.h>
43e742a3c7d8b89b69f65326582ea549c13a75b350Austin Yuan#include <errno.h>
4421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
4521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan/*
4621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan * Env. to debug some issue, e.g. the decode/encode issue in a video conference scenerio:
4721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan * .LIBVA_TRACE=log_file: general VA parameters saved into log_file
4821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan * .LIBVA_TRACE_BUFDATA: dump VA buffer data into log_file (if not set, just calculate a checksum)
4921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan * .LIBVA_TRACE_CODEDBUF=coded_clip_file: save the coded clip into file coded_clip_file
505b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang * .LIBVA_TRACE_SURFACE=yuv_file: save surface YUV into file yuv_file. Use file name to determine
515b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang *                                decode/encode or jpeg surfaces
52eb172ee78b4442658da7b4c7df17a9287d638089Austin Yuan * .LIBVA_TRACE_SURFACE_GEOMETRY=WIDTHxHEIGHT+XOFF+YOFF: only save part of surface context into file
53eb172ee78b4442658da7b4c7df17a9287d638089Austin Yuan *                                due to storage bandwidth limitation
5421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan * .LIBVA_TRACE_LOGSIZE=numeric number: truncate the log_file or coded_clip_file, or decoded_yuv_file
5536bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang *                                      when the size is bigger than the number
5621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan */
5721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
5821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan/* global settings */
5921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
6021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan/* LIBVA_TRACE */
615b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sangint trace_flag = 0;
62b0fac498ca4863166252f1268fda83394db54153Fei Jiang
6321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan/* LIBVA_TRACE_LOGSIZE */
6421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuanstatic unsigned int trace_logsize = 0xffffffff; /* truncate the log when the size is bigger than it */
6521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
6621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan#define TRACE_CONTEXT_MAX 4
6721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan/* per context settings */
6821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuanstatic struct _trace_context {
6921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    VADisplay dpy; /* should use context as the key */
7021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
7121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    /* LIBVA_TRACE */
7221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    FILE *trace_fp_log; /* save the log into a file */
735b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang    char *trace_log_fn; /* file name */
7421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
7521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    /* LIBVA_TRACE_CODEDBUF */
7621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    FILE *trace_fp_codedbuf; /* save the encode result into a file */
775b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang    char *trace_codedbuf_fn; /* file name */
7821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
7921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    /* LIBVA_TRACE_SURFACE */
8021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    FILE *trace_fp_surface; /* save the surface YUV into a file */
815b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang    char *trace_surface_fn; /* file name */
8221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
8321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    VAContextID  trace_context; /* current context */
8421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
8521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    VASurfaceID  trace_rendertarget; /* current render target */
8621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    VAProfile trace_profile; /* current profile for buffers */
8721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    VAEntrypoint trace_entrypoint; /* current entrypoint */
8821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    VABufferID trace_codedbuf;
8921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
9021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    unsigned int trace_frame_no; /* current frame NO */
9121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    unsigned int trace_slice_no; /* current slice NO */
9221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    unsigned int trace_slice_size; /* current slice buffer size */
9321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
94eb172ee78b4442658da7b4c7df17a9287d638089Austin Yuan    unsigned int trace_surface_width; /* surface dumping geometry */
95eb172ee78b4442658da7b4c7df17a9287d638089Austin Yuan    unsigned int trace_surface_height;
96eb172ee78b4442658da7b4c7df17a9287d638089Austin Yuan    unsigned int trace_surface_xoff;
97eb172ee78b4442658da7b4c7df17a9287d638089Austin Yuan    unsigned int trace_surface_yoff;
98eb172ee78b4442658da7b4c7df17a9287d638089Austin Yuan
9921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    unsigned int trace_frame_width; /* current frame width */
10021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    unsigned int trace_frame_height; /* current frame height */
10121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    unsigned int trace_sequence_start; /* get a new sequence for encoding or not */
1025b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang} trace_context[TRACE_CONTEXT_MAX]; /* trace five context at the same time */
10321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
10421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan#define DPY2INDEX(dpy)                                  \
10521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    int idx;                                            \
10621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan                                                        \
10721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    for (idx = 0; idx < TRACE_CONTEXT_MAX; idx++)       \
10821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        if (trace_context[idx].dpy == dpy)              \
10921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan            break;                                      \
11021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan                                                        \
11121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    if (idx == TRACE_CONTEXT_MAX)                       \
11221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        return;
11321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
11421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan#define TRACE_FUNCNAME(idx)    va_TraceMsg(idx, "==========%s\n", __func__);
115b0fac498ca4863166252f1268fda83394db54153Fei Jiang
11621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan/* Prototype declarations (functions defined in va.c) */
117b0fac498ca4863166252f1268fda83394db54153Fei Jiang
11821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuanvoid va_errorMessage(const char *msg, ...);
11921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuanvoid va_infoMessage(const char *msg, ...);
120b0fac498ca4863166252f1268fda83394db54153Fei Jiang
12121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuanint va_parseConfig(char *env, char *env_value);
122b0fac498ca4863166252f1268fda83394db54153Fei Jiang
12321e26478769d887b8357289ebb7faa47b8b415aeAustin YuanVAStatus vaBufferInfo(
124901c77a7aa491f56b63af7b655b67439481e4177Fei Jiang    VADisplay dpy,
12536bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    VAContextID context,        /* in */
12636bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    VABufferID buf_id,          /* in */
12736bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    VABufferType *type,         /* out */
12836bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    unsigned int *size,         /* out */
12936bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    unsigned int *num_elements  /* out */
13072b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    );
131901c77a7aa491f56b63af7b655b67439481e4177Fei Jiang
132901c77a7aa491f56b63af7b655b67439481e4177Fei JiangVAStatus vaLockSurface(VADisplay dpy,
13372b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang                       VASurfaceID surface,
13472b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang                       unsigned int *fourcc, /* following are output argument */
13572b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang                       unsigned int *luma_stride,
13672b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang                       unsigned int *chroma_u_stride,
13772b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang                       unsigned int *chroma_v_stride,
13872b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang                       unsigned int *luma_offset,
13972b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang                       unsigned int *chroma_u_offset,
14072b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang                       unsigned int *chroma_v_offset,
14172b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang                       unsigned int *buffer_name,
14272b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang                       void **buffer
14372b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang                       );
144901c77a7aa491f56b63af7b655b67439481e4177Fei Jiang
145901c77a7aa491f56b63af7b655b67439481e4177Fei JiangVAStatus vaUnlockSurface(VADisplay dpy,
14672b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang                         VASurfaceID surface
14772b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang                         );
148901c77a7aa491f56b63af7b655b67439481e4177Fei Jiang
1495b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang#define FILE_NAME_SUFFIX(env_value)                      \
1505b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sangdo {                                                    \
1515b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang    int tmp = strnlen(env_value, sizeof(env_value));    \
1525b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang    int left = sizeof(env_value) - tmp;                 \
1535b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang                                                        \
1545b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang    snprintf(env_value+tmp,                             \
1555b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang             left,                                      \
1565b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang             ".%04d.%05d",                              \
1575b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang             trace_index,                               \
1585b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang             suffix);                                   \
1595b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang} while (0)
16021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
16121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuanvoid va_TraceInit(VADisplay dpy)
162b0fac498ca4863166252f1268fda83394db54153Fei Jiang{
16321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    char env_value[1024];
1645b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang    unsigned short suffix = 0xffff & ((unsigned int)time(NULL));
16521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    int trace_index = 0;
16621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    FILE *tmp;
16721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
16821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    for (trace_index = 0; trace_index < TRACE_CONTEXT_MAX; trace_index++)
16921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        if (trace_context[trace_index].dpy == 0)
17021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan            break;
17121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
17221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    if (trace_index == TRACE_CONTEXT_MAX)
17321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        return;
17421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
1755b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang    memset(&trace_context[trace_index], 0, sizeof(struct _trace_context));
17621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    if (va_parseConfig("LIBVA_TRACE", &env_value[0]) == 0) {
1775b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang        FILE_NAME_SUFFIX(env_value);
1785b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang        trace_context[trace_index].trace_log_fn = strdup(env_value);
1795b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang
18021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        tmp = fopen(env_value, "w");
18136bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang        if (tmp) {
18221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan            trace_context[trace_index].trace_fp_log = tmp;
1835b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang            va_infoMessage("LIBVA_TRACE is on, save log into %s\n", trace_context[trace_index].trace_log_fn);
1845b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang            trace_flag = VA_TRACE_FLAG_LOG;
1855b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang        } else
186e742a3c7d8b89b69f65326582ea549c13a75b350Austin Yuan            va_errorMessage("Open file %s failed (%s)\n", env_value, strerror(errno));
18721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    }
18821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
18921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    /* may re-get the global settings for multiple context */
19021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    if (va_parseConfig("LIBVA_TRACE_LOGSIZE", &env_value[0]) == 0) {
19121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        trace_logsize = atoi(env_value);
19221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_infoMessage("LIBVA_TRACE_LOGSIZE is on, size is %d\n", trace_logsize);
19321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    }
19421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
1955b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang    if ((trace_flag & VA_TRACE_FLAG_LOG) && (va_parseConfig("LIBVA_TRACE_BUFDATA", NULL) == 0)) {
1965b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang        trace_flag |= VA_TRACE_FLAG_BUFDATA;
19721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_infoMessage("LIBVA_TRACE_BUFDATA is on, dump buffer into log file\n");
19821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    }
19921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
20021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    /* per-context setting */
20121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    if (va_parseConfig("LIBVA_TRACE_CODEDBUF", &env_value[0]) == 0) {
2025b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang        FILE_NAME_SUFFIX(env_value);
2035b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang        trace_context[trace_index].trace_codedbuf_fn = strdup(env_value);
2045b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang        va_infoMessage("LIBVA_TRACE_CODEDBUF is on, save codedbuf into log file %s\n",
2055b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang                       trace_context[trace_index].trace_codedbuf_fn);
2065b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang        trace_flag |= VA_TRACE_FLAG_CODEDBUF;
20721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    }
20821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
20921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    if (va_parseConfig("LIBVA_TRACE_SURFACE", &env_value[0]) == 0) {
2105b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang        FILE_NAME_SUFFIX(env_value);
2115b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang        trace_context[trace_index].trace_surface_fn = strdup(env_value);
212eb172ee78b4442658da7b4c7df17a9287d638089Austin Yuan
2135b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang        va_infoMessage("LIBVA_TRACE_SURFACE is on, save surface into %s\n",
2145b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang                       trace_context[trace_index].trace_surface_fn);
2155b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang
2165b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang        /* for surface data dump, it is time-consume, and may
2175b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang         * cause some side-effect, so only trace the needed surfaces
2185b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang         * to trace encode surface, set the trace file name to sth like *enc*
2195b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang         * to trace decode surface, set the trace file name to sth like *dec*
2205b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang         * if no dec/enc in file name, set both
2215b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang         */
2225b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang        if (strstr(env_value, "dec"))
2235b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang            trace_flag |= VA_TRACE_FLAG_SURFACE_DECODE;
2245b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang        if (strstr(env_value, "enc"))
2255b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang            trace_flag |= VA_TRACE_FLAG_SURFACE_ENCODE;
2265b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang        if (strstr(env_value, "jpeg") || strstr(env_value, "jpg"))
2275b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang            trace_flag |= VA_TRACE_FLAG_SURFACE_JPEG;
228eb172ee78b4442658da7b4c7df17a9287d638089Austin Yuan
229eb172ee78b4442658da7b4c7df17a9287d638089Austin Yuan        if (va_parseConfig("LIBVA_TRACE_SURFACE_GEOMETRY", &env_value[0]) == 0) {
230eb172ee78b4442658da7b4c7df17a9287d638089Austin Yuan            char *p = env_value, *q;
231eb172ee78b4442658da7b4c7df17a9287d638089Austin Yuan
232eb172ee78b4442658da7b4c7df17a9287d638089Austin Yuan            trace_context[trace_index].trace_surface_width = strtod(p, &q);
233eb172ee78b4442658da7b4c7df17a9287d638089Austin Yuan            p = q+1; /* skip "x" */
234eb172ee78b4442658da7b4c7df17a9287d638089Austin Yuan            trace_context[trace_index].trace_surface_height = strtod(p, &q);
235eb172ee78b4442658da7b4c7df17a9287d638089Austin Yuan            p = q+1; /* skip "+" */
236eb172ee78b4442658da7b4c7df17a9287d638089Austin Yuan            trace_context[trace_index].trace_surface_xoff = strtod(p, &q);
237eb172ee78b4442658da7b4c7df17a9287d638089Austin Yuan            p = q+1; /* skip "+" */
238eb172ee78b4442658da7b4c7df17a9287d638089Austin Yuan            trace_context[trace_index].trace_surface_yoff = strtod(p, &q);
239eb172ee78b4442658da7b4c7df17a9287d638089Austin Yuan
240eb172ee78b4442658da7b4c7df17a9287d638089Austin Yuan            va_infoMessage("LIBVA_TRACE_SURFACE_GEOMETRY is on, only dump surface %dx%d+%d+%d content\n",
241eb172ee78b4442658da7b4c7df17a9287d638089Austin Yuan                           trace_context[trace_index].trace_surface_width,
242eb172ee78b4442658da7b4c7df17a9287d638089Austin Yuan                           trace_context[trace_index].trace_surface_height,
243eb172ee78b4442658da7b4c7df17a9287d638089Austin Yuan                           trace_context[trace_index].trace_surface_xoff,
244eb172ee78b4442658da7b4c7df17a9287d638089Austin Yuan                           trace_context[trace_index].trace_surface_yoff);
245eb172ee78b4442658da7b4c7df17a9287d638089Austin Yuan        }
246b0fac498ca4863166252f1268fda83394db54153Fei Jiang    }
24721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
24821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    trace_context[trace_index].dpy = dpy;
249b0fac498ca4863166252f1268fda83394db54153Fei Jiang}
250b0fac498ca4863166252f1268fda83394db54153Fei Jiang
25121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
25221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuanvoid va_TraceEnd(VADisplay dpy)
253b0fac498ca4863166252f1268fda83394db54153Fei Jiang{
25421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    DPY2INDEX(dpy);
25521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
2565b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang    if (trace_context[idx].trace_fp_log)
25721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        fclose(trace_context[idx].trace_fp_log);
25821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
2595b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang    if (trace_context[idx].trace_fp_codedbuf)
26021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        fclose(trace_context[idx].trace_fp_codedbuf);
26121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
2625b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang    if (trace_context[idx].trace_fp_surface)
26321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        fclose(trace_context[idx].trace_fp_surface);
26421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
2655b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang    if (trace_context[idx].trace_log_fn)
2665b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang        free(trace_context[idx].trace_log_fn);
2675b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang
2685b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang    if (trace_context[idx].trace_codedbuf_fn)
2695b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang        free(trace_context[idx].trace_codedbuf_fn);
2705b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang
2715b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang    if (trace_context[idx].trace_surface_fn)
2725b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang        free(trace_context[idx].trace_surface_fn);
2735b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang
27450ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    memset(&trace_context[idx], 0, sizeof(struct _trace_context));
27521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan}
276b0fac498ca4863166252f1268fda83394db54153Fei Jiang
27736bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang
27821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuanstatic unsigned int file_size(FILE *fp)
27921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan{
28021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    struct stat buf;
281b0fac498ca4863166252f1268fda83394db54153Fei Jiang
28221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    fstat(fileno(fp), &buf);
283b0fac498ca4863166252f1268fda83394db54153Fei Jiang
28421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    return buf.st_size;
285b0fac498ca4863166252f1268fda83394db54153Fei Jiang}
286b0fac498ca4863166252f1268fda83394db54153Fei Jiang
28721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
28821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuanstatic void truncate_file(FILE *fp)
28921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan{
29021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    ftruncate(fileno(fp), 0);
29121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    rewind(fp);
29221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan}
29321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
29421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuanvoid va_TraceMsg(int idx, const char *msg, ...)
295b0fac498ca4863166252f1268fda83394db54153Fei Jiang{
296b0fac498ca4863166252f1268fda83394db54153Fei Jiang    va_list args;
29721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
2985b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang    if (!(trace_flag & VA_TRACE_FLAG_LOG))
2995b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang        return;
3005b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang
30121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    if (file_size(trace_context[idx].trace_fp_log) >= trace_logsize)
30221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        truncate_file(trace_context[idx].trace_fp_log);
303b0fac498ca4863166252f1268fda83394db54153Fei Jiang    if (msg)  {
304b0fac498ca4863166252f1268fda83394db54153Fei Jiang        va_start(args, msg);
30521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        vfprintf(trace_context[idx].trace_fp_log, msg, args);
306b0fac498ca4863166252f1268fda83394db54153Fei Jiang        va_end(args);
30721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    } else
30821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        fflush(trace_context[idx].trace_fp_log);
30921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan}
31021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
31121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuanvoid va_TraceCodedBuf(VADisplay dpy)
31221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan{
31321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    VACodedBufferSegment *buf_list = NULL;
31421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    VAStatus va_status;
31521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    unsigned char check_sum = 0;
31621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    DPY2INDEX(dpy);
31721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
31821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    /* can only truncate at a sequence boudary */
31921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    if (((file_size(trace_context[idx].trace_fp_log) >= trace_logsize))
32021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        && trace_context[idx].trace_sequence_start) {
32121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceMsg(idx, "==========truncate file %s\n", trace_context[idx].trace_codedbuf_fn);
32221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        truncate_file(trace_context[idx].trace_fp_log);
323b0fac498ca4863166252f1268fda83394db54153Fei Jiang    }
32421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
32521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
32621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    trace_context[idx].trace_sequence_start = 0; /* only truncate coded file when meet next new sequence */
32721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
32821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_status = vaMapBuffer(dpy, trace_context[idx].trace_codedbuf, (void **)(&buf_list));
32921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    if (va_status != VA_STATUS_SUCCESS)
33021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        return;
33121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
33221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "==========dump codedbuf into file %s\n", trace_context[idx].trace_codedbuf_fn);
33321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
33421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    while (buf_list != NULL) {
33521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        unsigned int i;
33621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
33721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceMsg(idx, "\tsize = %d\n", buf_list->size);
338eb172ee78b4442658da7b4c7df17a9287d638089Austin Yuan        if (trace_context[idx].trace_fp_codedbuf)
33921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan            fwrite(buf_list->buf, buf_list->size, 1, trace_context[idx].trace_fp_codedbuf);
34021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
34121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        for (i=0; i<buf_list->size; i++)
34221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan            check_sum ^= *((unsigned char *)buf_list->buf + i);
34321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
34421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        buf_list = buf_list->next;
34521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    }
34621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    vaUnmapBuffer(dpy,trace_context[idx].trace_codedbuf);
34721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
34821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tchecksum = 0x%02x\n", check_sum);
34936bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceMsg(idx, NULL);
350b0fac498ca4863166252f1268fda83394db54153Fei Jiang}
351b0fac498ca4863166252f1268fda83394db54153Fei Jiang
352b0fac498ca4863166252f1268fda83394db54153Fei Jiang
35321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuanvoid va_TraceSurface(VADisplay dpy)
35421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan{
3556579ab9cbc1c3f172a11d37a00c2bb7566b6587aGuoliang Ji    unsigned int i;
35621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    unsigned int fourcc; /* following are output argument */
35721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    unsigned int luma_stride;
35821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    unsigned int chroma_u_stride;
35921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    unsigned int chroma_v_stride;
36021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    unsigned int luma_offset;
36121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    unsigned int chroma_u_offset;
36221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    unsigned int chroma_v_offset;
36321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    unsigned int buffer_name;
36421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    void *buffer = NULL;
36521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    unsigned char *Y_data, *UV_data, *tmp;
36621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    VAStatus va_status;
36721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    DPY2INDEX(dpy);
3685b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang
36921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "==========dump surface data in file %s\n", trace_context[idx].trace_surface_fn);
37021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
37121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    if ((file_size(trace_context[idx].trace_fp_surface) >= trace_logsize)) {
37221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceMsg(idx, "==========truncate file %s\n", trace_context[idx].trace_surface_fn);
37321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        truncate_file(trace_context[idx].trace_fp_surface);
37421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    }
37536bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceMsg(idx, NULL);
37621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
37710965d59ea630e8a6856845faffb8e0f39b159a3Kun Wang    va_status = vaLockSurface(
37810965d59ea630e8a6856845faffb8e0f39b159a3Kun Wang        dpy,
37910965d59ea630e8a6856845faffb8e0f39b159a3Kun Wang        trace_context[idx].trace_rendertarget,
38010965d59ea630e8a6856845faffb8e0f39b159a3Kun Wang        &fourcc,
38110965d59ea630e8a6856845faffb8e0f39b159a3Kun Wang        &luma_stride, &chroma_u_stride, &chroma_v_stride,
38210965d59ea630e8a6856845faffb8e0f39b159a3Kun Wang        &luma_offset, &chroma_u_offset, &chroma_v_offset,
38310965d59ea630e8a6856845faffb8e0f39b159a3Kun Wang        &buffer_name, &buffer);
38421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
38521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    if (va_status != VA_STATUS_SUCCESS) {
38621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceMsg(idx, "Error:vaLockSurface failed\n");
38721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        return;
38821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    }
38921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
39021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tfourcc = 0x%08x\n", fourcc);
39121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\twidth = %d\n", trace_context[idx].trace_frame_width);
39221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\theight = %d\n", trace_context[idx].trace_frame_height);
39321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tluma_stride = %d\n", luma_stride);
39421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tchroma_u_stride = %d\n", chroma_u_stride);
39521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tchroma_v_stride = %d\n", chroma_v_stride);
39621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tluma_offset = %d\n", luma_offset);
39721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tchroma_u_offset = %d\n", chroma_u_offset);
39821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tchroma_v_offset = %d\n", chroma_v_offset);
39921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
40010965d59ea630e8a6856845faffb8e0f39b159a3Kun Wang    if (buffer == NULL) {
40121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceMsg(idx, "Error:vaLockSurface return NULL buffer\n");
40236bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang        va_TraceMsg(idx, NULL);
40336bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang
40421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        vaUnlockSurface(dpy, trace_context[idx].trace_rendertarget);
40521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        return;
40621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    }
40721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tbuffer location = 0x%08x\n", buffer);
40836bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceMsg(idx, NULL);
40921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
41010965d59ea630e8a6856845faffb8e0f39b159a3Kun Wang    Y_data = (unsigned char*)buffer;
41110965d59ea630e8a6856845faffb8e0f39b159a3Kun Wang    UV_data = (unsigned char*)buffer + chroma_u_offset;
41221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
413eb172ee78b4442658da7b4c7df17a9287d638089Austin Yuan    tmp = Y_data + luma_stride * trace_context[idx].trace_surface_yoff;
414eb172ee78b4442658da7b4c7df17a9287d638089Austin Yuan    for (i=0; i<trace_context[idx].trace_surface_height; i++) {
41521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        if (trace_context[idx].trace_fp_surface)
416eb172ee78b4442658da7b4c7df17a9287d638089Austin Yuan            fwrite(tmp + trace_context[idx].trace_surface_xoff,
417eb172ee78b4442658da7b4c7df17a9287d638089Austin Yuan                   trace_context[idx].trace_surface_width,
418eb172ee78b4442658da7b4c7df17a9287d638089Austin Yuan                   1, trace_context[idx].trace_fp_surface);
41921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
420eb172ee78b4442658da7b4c7df17a9287d638089Austin Yuan        tmp += luma_stride;
42121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    }
422eb172ee78b4442658da7b4c7df17a9287d638089Austin Yuan    tmp = UV_data + chroma_u_stride * trace_context[idx].trace_surface_yoff;
42321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    if (fourcc == VA_FOURCC_NV12) {
424eb172ee78b4442658da7b4c7df17a9287d638089Austin Yuan        for (i=0; i<trace_context[idx].trace_surface_height/2; i++) {
42521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan            if (trace_context[idx].trace_fp_surface)
426eb172ee78b4442658da7b4c7df17a9287d638089Austin Yuan                fwrite(tmp + trace_context[idx].trace_surface_xoff,
427eb172ee78b4442658da7b4c7df17a9287d638089Austin Yuan                       trace_context[idx].trace_surface_width,
428eb172ee78b4442658da7b4c7df17a9287d638089Austin Yuan                       1, trace_context[idx].trace_fp_surface);
42921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
430eb172ee78b4442658da7b4c7df17a9287d638089Austin Yuan            tmp += chroma_u_stride;
43121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        }
43221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    }
43321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
43421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    vaUnlockSurface(dpy, trace_context[idx].trace_rendertarget);
43521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
43636bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceMsg(idx, NULL);
43721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan}
43821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
439942aa8ad7f4275a637fb2c1e5edfab686110cc52Kun Wang
44010965d59ea630e8a6856845faffb8e0f39b159a3Kun Wangvoid va_TraceInitialize (
441942aa8ad7f4275a637fb2c1e5edfab686110cc52Kun Wang    VADisplay dpy,
44236bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    int *major_version,     /* out */
44336bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    int *minor_version      /* out */
444942aa8ad7f4275a637fb2c1e5edfab686110cc52Kun Wang)
445942aa8ad7f4275a637fb2c1e5edfab686110cc52Kun Wang{
44610965d59ea630e8a6856845faffb8e0f39b159a3Kun Wang    DPY2INDEX(dpy);
447942aa8ad7f4275a637fb2c1e5edfab686110cc52Kun Wang    TRACE_FUNCNAME(idx);
448942aa8ad7f4275a637fb2c1e5edfab686110cc52Kun Wang}
449942aa8ad7f4275a637fb2c1e5edfab686110cc52Kun Wang
45010965d59ea630e8a6856845faffb8e0f39b159a3Kun Wangvoid va_TraceTerminate (
451942aa8ad7f4275a637fb2c1e5edfab686110cc52Kun Wang    VADisplay dpy
452942aa8ad7f4275a637fb2c1e5edfab686110cc52Kun Wang)
453942aa8ad7f4275a637fb2c1e5edfab686110cc52Kun Wang{
45410965d59ea630e8a6856845faffb8e0f39b159a3Kun Wang    DPY2INDEX(dpy);
455942aa8ad7f4275a637fb2c1e5edfab686110cc52Kun Wang    TRACE_FUNCNAME(idx);
456942aa8ad7f4275a637fb2c1e5edfab686110cc52Kun Wang}
457942aa8ad7f4275a637fb2c1e5edfab686110cc52Kun Wang
458942aa8ad7f4275a637fb2c1e5edfab686110cc52Kun Wang
459293abef4f8172cc061d26f9d909c281b4190b514Bruce Bearevoid va_TraceCreateConfig(
460b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VADisplay dpy,
461b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VAProfile profile,
462b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VAEntrypoint entrypoint,
463b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VAConfigAttrib *attrib_list,
464b0fac498ca4863166252f1268fda83394db54153Fei Jiang    int num_attribs,
465b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VAConfigID *config_id /* out */
46621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan)
467b0fac498ca4863166252f1268fda83394db54153Fei Jiang{
468b0fac498ca4863166252f1268fda83394db54153Fei Jiang    int i;
4695b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang    int encode, decode, jpeg;
47021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    DPY2INDEX(dpy);
47121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
47221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    TRACE_FUNCNAME(idx);
473b0fac498ca4863166252f1268fda83394db54153Fei Jiang
47421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tprofile = %d\n", profile);
47521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tentrypoint = %d\n", entrypoint);
47621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tnum_attribs = %d\n", num_attribs);
477b0fac498ca4863166252f1268fda83394db54153Fei Jiang    for (i = 0; i < num_attribs; i++) {
47836bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang        va_TraceMsg(idx, "\t\tattrib_list[%d].type = 0x%08x\n", i, attrib_list[i].type);
47921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceMsg(idx, "\t\tattrib_list[%d].value = 0x%08x\n", i, attrib_list[i].value);
480b0fac498ca4863166252f1268fda83394db54153Fei Jiang    }
48136bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceMsg(idx, NULL);
482b0fac498ca4863166252f1268fda83394db54153Fei Jiang
48321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    trace_context[idx].trace_profile = profile;
48421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    trace_context[idx].trace_entrypoint = entrypoint;
4855b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang
4865b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang    /* avoid to create so many empty files */
4875b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang    encode = (trace_context[idx].trace_entrypoint == VAEntrypointEncSlice);
4885b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang    decode = (trace_context[idx].trace_entrypoint == VAEntrypointVLD);
4895b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang    jpeg = (trace_context[idx].trace_entrypoint == VAEntrypointEncPicture);
4905b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang    if ((encode && (trace_flag & VA_TRACE_FLAG_SURFACE_ENCODE)) ||
4915b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang        (decode && (trace_flag & VA_TRACE_FLAG_SURFACE_DECODE)) ||
4925b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang        (jpeg && (trace_flag & VA_TRACE_FLAG_SURFACE_JPEG))) {
4935b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang        FILE *tmp = fopen(trace_context[idx].trace_surface_fn, "w");
4945b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang
4955b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang        if (tmp)
4965b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang            trace_context[idx].trace_fp_surface = tmp;
4975b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang        else {
4985b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang            va_errorMessage("Open file %s failed (%s)\n",
4995b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang                            trace_context[idx].trace_surface_fn,
5005b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang                            strerror(errno));
5015b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang            trace_context[idx].trace_fp_surface = NULL;
5025b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang            trace_flag &= ~(VA_TRACE_FLAG_SURFACE);
5035b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang        }
5045b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang    }
5055b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang
5065b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang    if (encode && (trace_flag & VA_TRACE_FLAG_CODEDBUF)) {
5075b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang        FILE *tmp = fopen(trace_context[idx].trace_codedbuf_fn, "w");
5085b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang
5095b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang        if (tmp)
5105b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang            trace_context[idx].trace_fp_codedbuf = tmp;
5115b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang        else {
5125b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang            va_errorMessage("Open file %s failed (%s)\n",
5135b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang                            trace_context[idx].trace_codedbuf_fn,
5145b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang                            strerror(errno));
5155b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang            trace_context[idx].trace_fp_codedbuf = NULL;
5165b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang            trace_flag &= ~VA_TRACE_FLAG_CODEDBUF;
5175b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang        }
5185b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang    }
519b0fac498ca4863166252f1268fda83394db54153Fei Jiang}
520b0fac498ca4863166252f1268fda83394db54153Fei Jiang
5214b672db6ee89c9846451bbab23cf18e93c4260b2hding
5224b672db6ee89c9846451bbab23cf18e93c4260b2hdingvoid va_TraceCreateSurfaces(
523b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VADisplay dpy,
524b0fac498ca4863166252f1268fda83394db54153Fei Jiang    int width,
525b0fac498ca4863166252f1268fda83394db54153Fei Jiang    int height,
526b0fac498ca4863166252f1268fda83394db54153Fei Jiang    int format,
527b0fac498ca4863166252f1268fda83394db54153Fei Jiang    int num_surfaces,
5284b672db6ee89c9846451bbab23cf18e93c4260b2hding    VASurfaceID *surfaces,    /* out */
5294b672db6ee89c9846451bbab23cf18e93c4260b2hding    VASurfaceAttrib    *attrib_list,
5304b672db6ee89c9846451bbab23cf18e93c4260b2hding    unsigned int        num_attribs
53121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan)
532b0fac498ca4863166252f1268fda83394db54153Fei Jiang{
533b0fac498ca4863166252f1268fda83394db54153Fei Jiang    int i;
53421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    DPY2INDEX(dpy);
53521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
53621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    TRACE_FUNCNAME(idx);
537b0fac498ca4863166252f1268fda83394db54153Fei Jiang
53821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\twidth = %d\n", width);
53921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\theight = %d\n", height);
54021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tformat = %d\n", format);
54121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tnum_surfaces = %d\n", num_surfaces);
542b0fac498ca4863166252f1268fda83394db54153Fei Jiang
543b0fac498ca4863166252f1268fda83394db54153Fei Jiang    for (i = 0; i < num_surfaces; i++)
54421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceMsg(idx, "\t\tsurfaces[%d] = 0x%08x\n", i, surfaces[i]);
54536bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang
54636bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceMsg(idx, NULL);
547b0fac498ca4863166252f1268fda83394db54153Fei Jiang}
548b0fac498ca4863166252f1268fda83394db54153Fei Jiang
549b0fac498ca4863166252f1268fda83394db54153Fei Jiang
550293abef4f8172cc061d26f9d909c281b4190b514Bruce Bearevoid va_TraceCreateContext(
551b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VADisplay dpy,
552b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VAConfigID config_id,
553b0fac498ca4863166252f1268fda83394db54153Fei Jiang    int picture_width,
554b0fac498ca4863166252f1268fda83394db54153Fei Jiang    int picture_height,
555b0fac498ca4863166252f1268fda83394db54153Fei Jiang    int flag,
556b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VASurfaceID *render_targets,
557b0fac498ca4863166252f1268fda83394db54153Fei Jiang    int num_render_targets,
55836bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    VAContextID *context        /* out */
55921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan)
560b0fac498ca4863166252f1268fda83394db54153Fei Jiang{
561b0fac498ca4863166252f1268fda83394db54153Fei Jiang    int i;
56221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    DPY2INDEX(dpy);
563b0fac498ca4863166252f1268fda83394db54153Fei Jiang
56421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    TRACE_FUNCNAME(idx);
56521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
56621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\twidth = %d\n", picture_width);
56721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\theight = %d\n", picture_height);
56821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tflag = 0x%08x\n", flag);
56921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tnum_render_targets = %d\n", num_render_targets);
570b0fac498ca4863166252f1268fda83394db54153Fei Jiang    for (i=0; i<num_render_targets; i++)
57121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceMsg(idx, "\t\trender_targets[%d] = 0x%08x\n", i, render_targets[i]);
57221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tcontext = 0x%08x\n", *context);
57336bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceMsg(idx, NULL);
574b0fac498ca4863166252f1268fda83394db54153Fei Jiang
57521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    trace_context[idx].trace_context = *context;
576b0fac498ca4863166252f1268fda83394db54153Fei Jiang
57721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    trace_context[idx].trace_frame_no = 0;
57821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    trace_context[idx].trace_slice_no = 0;
57921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
58021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    trace_context[idx].trace_frame_width = picture_width;
58121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    trace_context[idx].trace_frame_height = picture_height;
582eb172ee78b4442658da7b4c7df17a9287d638089Austin Yuan
583eb172ee78b4442658da7b4c7df17a9287d638089Austin Yuan    if (trace_context[idx].trace_surface_width == 0)
584eb172ee78b4442658da7b4c7df17a9287d638089Austin Yuan        trace_context[idx].trace_surface_width = picture_width;
585eb172ee78b4442658da7b4c7df17a9287d638089Austin Yuan    if (trace_context[idx].trace_surface_height == 0)
586eb172ee78b4442658da7b4c7df17a9287d638089Austin Yuan        trace_context[idx].trace_surface_height = picture_height;
587b0fac498ca4863166252f1268fda83394db54153Fei Jiang}
588b0fac498ca4863166252f1268fda83394db54153Fei Jiang
589b0fac498ca4863166252f1268fda83394db54153Fei Jiang
590b0fac498ca4863166252f1268fda83394db54153Fei Jiangstatic char * buffer_type_to_string(int type)
591b0fac498ca4863166252f1268fda83394db54153Fei Jiang{
592b0fac498ca4863166252f1268fda83394db54153Fei Jiang    switch (type) {
593b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAPictureParameterBufferType: return "VAPictureParameterBufferType";
594b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAIQMatrixBufferType: return "VAIQMatrixBufferType";
595b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VABitPlaneBufferType: return "VABitPlaneBufferType";
596b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VASliceGroupMapBufferType: return "VASliceGroupMapBufferType";
597b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VASliceParameterBufferType: return "VASliceParameterBufferType";
598b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VASliceDataBufferType: return "VASliceDataBufferType";
599b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAProtectedSliceDataBufferType: return "VAProtectedSliceDataBufferType";
600b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAMacroblockParameterBufferType: return "VAMacroblockParameterBufferType";
601b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAResidualDataBufferType: return "VAResidualDataBufferType";
602b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VADeblockingParameterBufferType: return "VADeblockingParameterBufferType";
603b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAImageBufferType: return "VAImageBufferType";
604b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAEncCodedBufferType: return "VAEncCodedBufferType";
605b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAEncSequenceParameterBufferType: return "VAEncSequenceParameterBufferType";
606b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAEncPictureParameterBufferType: return "VAEncPictureParameterBufferType";
607b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAEncSliceParameterBufferType: return "VAEncSliceParameterBufferType";
60821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    case VAEncMiscParameterBufferType: return "VAEncMiscParameterBufferType";
609b0fac498ca4863166252f1268fda83394db54153Fei Jiang    default: return "UnknowBuffer";
610b0fac498ca4863166252f1268fda83394db54153Fei Jiang    }
611b0fac498ca4863166252f1268fda83394db54153Fei Jiang}
612b0fac498ca4863166252f1268fda83394db54153Fei Jiang
61321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuanvoid va_TraceMapBuffer (
61421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    VADisplay dpy,
61536bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    VABufferID buf_id,    /* in */
61636bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    void **pbuf           /* out */
61721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan)
61821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan{
61921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    VABufferType type;
62021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    unsigned int size;
62121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    unsigned int num_elements;
62221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
62321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    VACodedBufferSegment *buf_list;
62421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    int i = 0;
62521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
62621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    DPY2INDEX(dpy);
62721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
62821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    vaBufferInfo(dpy, trace_context[idx].trace_context, buf_id, &type, &size, &num_elements);
62921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    /*
63072b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang      va_TraceMsg(idx, "\tbuf_id=0x%x\n", buf_id);
63172b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang      va_TraceMsg(idx, "\tbuf_type=%s\n", buffer_type_to_string(type));
63272b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang      va_TraceMsg(idx, "\tbuf_size=%s\n", size);
63372b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang      va_TraceMsg(idx, "\tbuf_elements=%s\n", &num_elements);
63421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    */
63521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
63621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    /* only trace CodedBuffer */
63721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    if (type != VAEncCodedBufferType)
63821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        return;
63921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
64021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    buf_list = (VACodedBufferSegment *)(*pbuf);
64121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    while (buf_list != NULL) {
64221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceMsg(idx, "\tCodedbuf[%d] =\n", i++);
64321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
64421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceMsg(idx, "\t   size = %d\n", buf_list->size);
64521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceMsg(idx, "\t   bit_offset = %d\n", buf_list->bit_offset);
64621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceMsg(idx, "\t   status = 0x%08x\n", buf_list->status);
64721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceMsg(idx, "\t   reserved = 0x%08x\n", buf_list->reserved);
64821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceMsg(idx, "\t   buf = 0x%08x\n", buf_list->buf);
64921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
65021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        buf_list = buf_list->next;
65121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    }
65236bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceMsg(idx, NULL);
65321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan}
654b0fac498ca4863166252f1268fda83394db54153Fei Jiang
65521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuanstatic void va_TraceVABuffers(
656b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VADisplay dpy,
657b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VAContextID context,
658b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VABufferID buffer,
659b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VABufferType type,
660b0fac498ca4863166252f1268fda83394db54153Fei Jiang    unsigned int size,
661b0fac498ca4863166252f1268fda83394db54153Fei Jiang    unsigned int num_elements,
662b0fac498ca4863166252f1268fda83394db54153Fei Jiang    void *pbuf
66321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan)
664b0fac498ca4863166252f1268fda83394db54153Fei Jiang{
66521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    unsigned int i;
666b0fac498ca4863166252f1268fda83394db54153Fei Jiang    unsigned char *p = pbuf;
66721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    unsigned char  check_sum = 0;
66821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    DPY2INDEX(dpy);
66921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
67072b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx, "%s\n",  buffer_type_to_string(type));
671b0fac498ca4863166252f1268fda83394db54153Fei Jiang
672b0fac498ca4863166252f1268fda83394db54153Fei Jiang    for (i=0; i<size; i++) {
67321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        unsigned char value =  p[i];
67421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
6755b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang        if ((trace_flag & VA_TRACE_FLAG_BUFDATA) && ((i%16) == 0))
67621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan            va_TraceMsg(idx, "\n0x%08x:", i);
67721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
6785b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang        if (trace_flag & VA_TRACE_FLAG_BUFDATA)
67921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan            va_TraceMsg(idx, " %02x", value);
68021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
68121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        check_sum ^= value;
682b0fac498ca4863166252f1268fda83394db54153Fei Jiang    }
683b0fac498ca4863166252f1268fda83394db54153Fei Jiang
68421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tchecksum = 0x%02x\n", check_sum & 0xff);
68536bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceMsg(idx, NULL);
68621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
68721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    return;
688b0fac498ca4863166252f1268fda83394db54153Fei Jiang}
689b0fac498ca4863166252f1268fda83394db54153Fei Jiang
690b0fac498ca4863166252f1268fda83394db54153Fei Jiang
691b0fac498ca4863166252f1268fda83394db54153Fei Jiangstatic void va_TraceVAPictureParameterBufferMPEG2(
692b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VADisplay dpy,
693b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VAContextID context,
694b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VABufferID buffer,
695b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VABufferType type,
696b0fac498ca4863166252f1268fda83394db54153Fei Jiang    unsigned int size,
697b0fac498ca4863166252f1268fda83394db54153Fei Jiang    unsigned int num_elements,
698b0fac498ca4863166252f1268fda83394db54153Fei Jiang    void *data)
699b0fac498ca4863166252f1268fda83394db54153Fei Jiang{
70072b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    VAPictureParameterBufferMPEG2 *p=(VAPictureParameterBufferMPEG2 *)data;
70121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    DPY2INDEX(dpy);
70272b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang
70350ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    va_TraceMsg(idx,"VAPictureParameterBufferMPEG2\n");
70472b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang
70572b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\thorizontal size= %d\n", p->horizontal_size);
70672b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tvertical size= %d\n", p->vertical_size);
70772b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tforward reference picture= %d\n", p->forward_reference_picture);
70872b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tbackward reference picture= %d\n", p->backward_reference_picture);
70972b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tpicture coding type= %d\n", p->picture_coding_type);
71072b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tf mode= %d\n", p->f_code);
71172b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang
71272b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tpicture coding extension = %d\n", p->picture_coding_extension.value);
71372b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tintra_dc_precision= %d\n", p->picture_coding_extension.bits.intra_dc_precision);
71472b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tpicture_structure= %d\n", p->picture_coding_extension.bits.picture_structure);
71572b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\ttop_field_first= %d\n", p->picture_coding_extension.bits.top_field_first);
71672b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tframe_pred_frame_dct= %d\n", p->picture_coding_extension.bits.frame_pred_frame_dct);
71772b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tconcealment_motion_vectors= %d\n", p->picture_coding_extension.bits.concealment_motion_vectors);
71872b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tq_scale_type= %d\n", p->picture_coding_extension.bits.q_scale_type);
71972b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tintra_vlc_format= %d\n", p->picture_coding_extension.bits.intra_vlc_format);
72072b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\talternate_scan= %d\n", p->picture_coding_extension.bits.alternate_scan);
72172b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\trepeat_first_field= %d\n", p->picture_coding_extension.bits.repeat_first_field);
72272b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tprogressive_frame= %d\n", p->picture_coding_extension.bits.progressive_frame);
72372b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tis_first_field= %d\n", p->picture_coding_extension.bits.is_first_field);
72436bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceMsg(idx, NULL);
72572b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang
726b0fac498ca4863166252f1268fda83394db54153Fei Jiang    return;
727b0fac498ca4863166252f1268fda83394db54153Fei Jiang}
728b0fac498ca4863166252f1268fda83394db54153Fei Jiang
729b0fac498ca4863166252f1268fda83394db54153Fei Jiang
730b0fac498ca4863166252f1268fda83394db54153Fei Jiangstatic void va_TraceVAIQMatrixBufferMPEG2(
731b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VADisplay dpy,
732b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VAContextID context,
733b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VABufferID buffer,
734b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VABufferType type,
735b0fac498ca4863166252f1268fda83394db54153Fei Jiang    unsigned int size,
736b0fac498ca4863166252f1268fda83394db54153Fei Jiang    unsigned int num_elements,
737b0fac498ca4863166252f1268fda83394db54153Fei Jiang    void *data)
738b0fac498ca4863166252f1268fda83394db54153Fei Jiang{
73972b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    VAIQMatrixBufferMPEG2 *p=(VAIQMatrixBufferMPEG2 *)data;
74021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    DPY2INDEX(dpy);
74172b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang
74272b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"VAIQMatrixBufferMPEG2\n");
74372b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang
74472b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tload_intra_quantiser_matrix = %d\n", p->load_intra_quantiser_matrix);
74572b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tload_non_intra_quantiser_matrix = %d\n", p->load_non_intra_quantiser_matrix);
74672b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tload_chroma_intra_quantiser_matrix = %d\n", p->load_chroma_intra_quantiser_matrix);
74772b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tload_chroma_non_intra_quantiser_matrix = %d\n", p->load_chroma_non_intra_quantiser_matrix);
74872b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tintra_quantiser_matrix = %d\n", p->intra_quantiser_matrix);
74972b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tnon_intra_quantiser_matrix = %d\n", p->non_intra_quantiser_matrix);
75072b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tchroma_intra_quantiser_matrix = %d\n", p->chroma_intra_quantiser_matrix);
75172b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tchroma_non_intra_quantiser_matrix = %d\n", p->chroma_non_intra_quantiser_matrix);
75236bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceMsg(idx, NULL);
75372b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang
754b0fac498ca4863166252f1268fda83394db54153Fei Jiang    return;
755b0fac498ca4863166252f1268fda83394db54153Fei Jiang}
756b0fac498ca4863166252f1268fda83394db54153Fei Jiang
757b0fac498ca4863166252f1268fda83394db54153Fei Jiang
758b0fac498ca4863166252f1268fda83394db54153Fei Jiangstatic void va_TraceVASliceParameterBufferMPEG2(
759b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VADisplay dpy,
760b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VAContextID context,
761b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VABufferID buffer,
762b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VABufferType type,
763b0fac498ca4863166252f1268fda83394db54153Fei Jiang    unsigned int size,
764b0fac498ca4863166252f1268fda83394db54153Fei Jiang    unsigned int num_elements,
765b0fac498ca4863166252f1268fda83394db54153Fei Jiang    void *data)
766b0fac498ca4863166252f1268fda83394db54153Fei Jiang{
76772b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    VASliceParameterBufferMPEG2 *p=(VASliceParameterBufferMPEG2 *)data;
76872b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang
76921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    DPY2INDEX(dpy);
77021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
77121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    trace_context[idx].trace_slice_no++;
77221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
77372b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    trace_context[idx].trace_slice_size = p->slice_data_size;
77472b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang
77572b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"VASliceParameterBufferMPEG2\n");
77672b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang
77772b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tslice_data_size = %d\n", p->slice_data_size);
77872b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tslice_data_offset = %d\n", p->slice_data_offset);
77972b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tslice_data_flag = %d\n", p->slice_data_flag);
78072b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tmacroblock_offset = %d\n", p->macroblock_offset);
78172b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tslice_horizontal_position = %d\n", p->slice_horizontal_position);
78272b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tslice_vertical_position = %d\n", p->slice_vertical_position);
78372b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tquantiser_scale_code = %d\n", p->quantiser_scale_code);
78472b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tintra_slice_flag = %d\n", p->intra_slice_flag);
78536bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceMsg(idx, NULL);
78672b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang
787b0fac498ca4863166252f1268fda83394db54153Fei Jiang    return;
788b0fac498ca4863166252f1268fda83394db54153Fei Jiang}
789b0fac498ca4863166252f1268fda83394db54153Fei Jiang
790b0fac498ca4863166252f1268fda83394db54153Fei Jiang
791b0fac498ca4863166252f1268fda83394db54153Fei Jiangstatic void va_TraceVAPictureParameterBufferMPEG4(
792b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VADisplay dpy,
793b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VAContextID context,
794b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VABufferID buffer,
795b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VABufferType type,
796b0fac498ca4863166252f1268fda83394db54153Fei Jiang    unsigned int size,
797b0fac498ca4863166252f1268fda83394db54153Fei Jiang    unsigned int num_elements,
798b0fac498ca4863166252f1268fda83394db54153Fei Jiang    void *data)
799b0fac498ca4863166252f1268fda83394db54153Fei Jiang{
80072b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    int i;
80172b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    VAPictureParameterBufferMPEG4 *p=(VAPictureParameterBufferMPEG4 *)data;
802b0fac498ca4863166252f1268fda83394db54153Fei Jiang
80372b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    DPY2INDEX(dpy);
80472b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang
80572b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"*VAPictureParameterBufferMPEG4\n");
80672b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tvop_width = %d\n", p->vop_width);
80772b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tvop_height = %d\n", p->vop_height);
80872b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tforward_reference_picture = %d\n", p->forward_reference_picture);
80972b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tbackward_reference_picture = %d\n", p->backward_reference_picture);
81072b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tvol_fields value = %d\n", p->vol_fields.value);
81172b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tshort_video_header= %d\n", p->vol_fields.bits.short_video_header);
81272b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tchroma_format= %d\n", p->vol_fields.bits.chroma_format);
81372b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tinterlaced= %d\n", p->vol_fields.bits.interlaced);
81472b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tobmc_disable= %d\n", p->vol_fields.bits.obmc_disable);
81572b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tsprite_enable= %d\n", p->vol_fields.bits.sprite_enable);
81672b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tsprite_warping_accuracy= %d\n", p->vol_fields.bits.sprite_warping_accuracy);
81772b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tquant_type= %d\n", p->vol_fields.bits.quant_type);
81872b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tquarter_sample= %d\n", p->vol_fields.bits.quarter_sample);
81972b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tdata_partitioned= %d\n", p->vol_fields.bits.data_partitioned);
82072b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\treversible_vlc= %d\n", p->vol_fields.bits.reversible_vlc);
82172b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tresync_marker_disable= %d\n", p->vol_fields.bits.resync_marker_disable);
82272b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tno_of_sprite_warping_points = %d\n", p->no_of_sprite_warping_points);
82372b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tsprite_trajectory_du =");
82472b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    for(i=0;i<3;i++)
82572b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang        va_TraceMsg(idx,"\t%d", p->sprite_trajectory_du[i]);
82672b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang
82772b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\n");
82872b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tsprite_trajectory_dv =");
82972b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    for(i=0;i<3;i++)
83072b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang        va_TraceMsg(idx,"\t%d", p->sprite_trajectory_dv[i]);
83136bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceMsg(idx,"\n");
83272b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tvop_fields value = %d\n", p->vop_fields.value);
83372b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tvop_coding_type= %d\n", p->vop_fields.bits.vop_coding_type);
83472b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tbackward_reference_vop_coding_type= %d\n", p->vop_fields.bits.backward_reference_vop_coding_type);
83572b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tvop_rounding_type= %d\n", p->vop_fields.bits.vop_rounding_type);
83672b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tintra_dc_vlc_thr= %d\n", p->vop_fields.bits.intra_dc_vlc_thr);
83772b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\ttop_field_first= %d\n", p->vop_fields.bits.top_field_first);
83872b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\talternate_vertical_scan_flag= %d\n", p->vop_fields.bits.alternate_vertical_scan_flag);
83972b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tvop_fcode_forward = %d\n", p->vop_fcode_forward);
84072b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tvop_fcode_backward = %d\n", p->vop_fcode_backward);
84172b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tnum_gobs_in_vop = %d\n", p->num_gobs_in_vop);
84272b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tnum_macroblocks_in_gob = %d\n", p->num_macroblocks_in_gob);
84372b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tTRB = %d\n", p->TRB);
84472b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tTRD = %d\n", p->TRD);
84536bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceMsg(idx, NULL);
84672b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang
847b0fac498ca4863166252f1268fda83394db54153Fei Jiang    return;
848b0fac498ca4863166252f1268fda83394db54153Fei Jiang}
849b0fac498ca4863166252f1268fda83394db54153Fei Jiang
850b0fac498ca4863166252f1268fda83394db54153Fei Jiang
851b0fac498ca4863166252f1268fda83394db54153Fei Jiangstatic void va_TraceVAIQMatrixBufferMPEG4(
852b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VADisplay dpy,
853b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VAContextID context,
854b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VABufferID buffer,
855b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VABufferType type,
856b0fac498ca4863166252f1268fda83394db54153Fei Jiang    unsigned int size,
857b0fac498ca4863166252f1268fda83394db54153Fei Jiang    unsigned int num_elements,
858b0fac498ca4863166252f1268fda83394db54153Fei Jiang    void *data)
859b0fac498ca4863166252f1268fda83394db54153Fei Jiang{
86072b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    int i;
86172b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    VAIQMatrixBufferMPEG4 *p=(VAIQMatrixBufferMPEG4 *)data;
86221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    DPY2INDEX(dpy);
86321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
86472b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"VAIQMatrixBufferMPEG4\n");
86572b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang
86672b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tload_intra_quant_mat = %d\n", p->load_intra_quant_mat);
86772b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tload_non_intra_quant_mat = %d\n", p->load_non_intra_quant_mat);
86872b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tintra_quant_mat =\n");
86972b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    for(i=0;i<64;i++)
87072b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang        va_TraceMsg(idx,"\t\t%d\n", p->intra_quant_mat[i]);
87172b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang
87272b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tnon_intra_quant_mat =\n");
87372b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    for(i=0;i<64;i++)
87472b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang        va_TraceMsg(idx,"\t\t%d\n", p->non_intra_quant_mat[i]);
87536bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceMsg(idx, NULL);
87672b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang
877b0fac498ca4863166252f1268fda83394db54153Fei Jiang    return;
878b0fac498ca4863166252f1268fda83394db54153Fei Jiang}
879b0fac498ca4863166252f1268fda83394db54153Fei Jiang
88050ce1dbe8a3402d56c94238710964507db7d99e1Kun Wangstatic void va_TraceVAEncSequenceParameterBufferMPEG4(
88150ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    VADisplay dpy,
88250ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    VAContextID context,
88350ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    VABufferID buffer,
88450ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    VABufferType type,
88550ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    unsigned int size,
88650ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    unsigned int num_elements,
88750ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    void *data)
88850ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang{
88950ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    VAEncSequenceParameterBufferMPEG4 *p = (VAEncSequenceParameterBufferMPEG4 *)data;
89050ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    DPY2INDEX(dpy);
89150ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang
89250ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    va_TraceMsg(idx, "VAEncSequenceParameterBufferMPEG4\n");
89350ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang
89450ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    va_TraceMsg(idx, "\tprofile_and_level_indication = %d\n", p->profile_and_level_indication);
89550ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    va_TraceMsg(idx, "\tintra_period = %d\n", p->intra_period);
89650ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    va_TraceMsg(idx, "\tvideo_object_layer_width = %d\n", p->video_object_layer_width);
89750ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    va_TraceMsg(idx, "\tvideo_object_layer_height = %d\n", p->video_object_layer_height);
89850ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    va_TraceMsg(idx, "\tvop_time_increment_resolution = %d\n", p->vop_time_increment_resolution);
89950ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    va_TraceMsg(idx, "\tfixed_vop_rate = %d\n", p->fixed_vop_rate);
90050ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    va_TraceMsg(idx, "\tfixed_vop_time_increment = %d\n", p->fixed_vop_time_increment);
90150ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    va_TraceMsg(idx, "\tbits_per_second = %d\n", p->bits_per_second);
90250ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    va_TraceMsg(idx, "\tframe_rate = %d\n", p->frame_rate);
90350ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    va_TraceMsg(idx, "\tinitial_qp = %d\n", p->initial_qp);
90450ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    va_TraceMsg(idx, "\tmin_qp = %d\n", p->min_qp);
90550ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    va_TraceMsg(idx, NULL);
90650ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang
90750ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    /* start a new sequce, coded log file can be truncated */
90850ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    trace_context[idx].trace_sequence_start = 1;
90950ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang
91050ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    return;
91150ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang}
91250ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang
91350ce1dbe8a3402d56c94238710964507db7d99e1Kun Wangstatic void va_TraceVAEncPictureParameterBufferMPEG4(
91450ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    VADisplay dpy,
91550ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    VAContextID context,
91650ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    VABufferID buffer,
91750ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    VABufferType type,
91850ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    unsigned int size,
91950ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    unsigned int num_elements,
92050ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    void *data)
92150ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang{
92250ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    VAEncPictureParameterBufferMPEG4 *p = (VAEncPictureParameterBufferMPEG4 *)data;
92350ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    DPY2INDEX(dpy);
92450ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang
92550ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    va_TraceMsg(idx, "VAEncPictureParameterBufferMPEG4\n");
92650ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    va_TraceMsg(idx, "\treference_picture = 0x%08x\n", p->reference_picture);
92750ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    va_TraceMsg(idx, "\treconstructed_picture = 0x%08x\n", p->reconstructed_picture);
92850ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    va_TraceMsg(idx, "\tcoded_buf = %08x\n", p->coded_buf);
92950ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    va_TraceMsg(idx, "\tpicture_width = %d\n", p->picture_width);
93050ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    va_TraceMsg(idx, "\tpicture_height = %d\n", p->picture_height);
93150ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    va_TraceMsg(idx, "\tmodulo_time_base = %d\n", p->modulo_time_base);
93250ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    va_TraceMsg(idx, "\tvop_time_increment = %d\n", p->vop_time_increment);
93350ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    va_TraceMsg(idx, "\tpicture_type = %d\n", p->picture_type);
93450ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    va_TraceMsg(idx, NULL);
93550ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang
93650ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    trace_context[idx].trace_codedbuf =  p->coded_buf;
93750ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang
93850ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    return;
93950ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang}
94050ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang
941b0fac498ca4863166252f1268fda83394db54153Fei Jiang
942b0fac498ca4863166252f1268fda83394db54153Fei Jiangstatic void va_TraceVASliceParameterBufferMPEG4(
943b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VADisplay dpy,
944b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VAContextID context,
945b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VABufferID buffer,
946b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VABufferType type,
947b0fac498ca4863166252f1268fda83394db54153Fei Jiang    unsigned int size,
948b0fac498ca4863166252f1268fda83394db54153Fei Jiang    unsigned int num_elements,
949b0fac498ca4863166252f1268fda83394db54153Fei Jiang    void *data)
950b0fac498ca4863166252f1268fda83394db54153Fei Jiang{
95172b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    VASliceParameterBufferMPEG4 *p=(VASliceParameterBufferMPEG4 *)data;
95272b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang
95321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    DPY2INDEX(dpy);
95421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
95521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    trace_context[idx].trace_slice_no++;
95621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
95772b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    trace_context[idx].trace_slice_size = p->slice_data_size;
95872b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang
95972b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"VASliceParameterBufferMPEG4\n");
96072b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang
96172b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tslice_data_size = %d\n", p->slice_data_size);
96272b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tslice_data_offset = %d\n", p->slice_data_offset);
96372b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tslice_data_flag = %d\n", p->slice_data_flag);
96472b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tmacroblock_offset = %d\n", p->macroblock_offset);
96572b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tmacroblock_number = %d\n", p->macroblock_number);
96672b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tquant_scale = %d\n", p->quant_scale);
96736bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceMsg(idx, NULL);
96872b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang
969b0fac498ca4863166252f1268fda83394db54153Fei Jiang    return;
970b0fac498ca4863166252f1268fda83394db54153Fei Jiang}
971b0fac498ca4863166252f1268fda83394db54153Fei Jiang
972b0fac498ca4863166252f1268fda83394db54153Fei Jiang
97336bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sangstatic inline void va_TraceFlagIfNotZero(
97436bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    int idx,            /* in */
97536bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    const char *name,   /* in */
97636bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    unsigned int flag   /* in */
97736bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang)
97836bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang{
97936bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    if (flag != 0) {
98036bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang        va_TraceMsg(idx, "%s = %x\n", name, flag);
98136bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    }
98236bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang}
98336bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang
98436bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang
985b0fac498ca4863166252f1268fda83394db54153Fei Jiangstatic void va_TraceVAPictureParameterBufferH264(
986b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VADisplay dpy,
987b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VAContextID context,
988b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VABufferID buffer,
989b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VABufferType type,
990b0fac498ca4863166252f1268fda83394db54153Fei Jiang    unsigned int size,
991b0fac498ca4863166252f1268fda83394db54153Fei Jiang    unsigned int num_elements,
992b0fac498ca4863166252f1268fda83394db54153Fei Jiang    void *data)
993b0fac498ca4863166252f1268fda83394db54153Fei Jiang{
994b0fac498ca4863166252f1268fda83394db54153Fei Jiang    int i;
995b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VAPictureParameterBufferH264 *p = (VAPictureParameterBufferH264*)data;
99672b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang
99772b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    DPY2INDEX(dpy);
998b0fac498ca4863166252f1268fda83394db54153Fei Jiang
99972b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx, "VAPictureParameterBufferH264\n");
1000b0fac498ca4863166252f1268fda83394db54153Fei Jiang
100136bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceMsg(idx, "\tCurrPic.picture_id = 0x%08x\n", p->CurrPic.picture_id);
100221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tCurrPic.frame_idx = %d\n", p->CurrPic.frame_idx);
100321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tCurrPic.flags = %d\n", p->CurrPic.flags);
100421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tCurrPic.TopFieldOrderCnt = %d\n", p->CurrPic.TopFieldOrderCnt);
100521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tCurrPic.BottomFieldOrderCnt = %d\n", p->CurrPic.BottomFieldOrderCnt);
1006b0fac498ca4863166252f1268fda83394db54153Fei Jiang
100721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tReferenceFrames (TopFieldOrderCnt-BottomFieldOrderCnt-picture_id-frame_idx:\n");
1008b0fac498ca4863166252f1268fda83394db54153Fei Jiang    for (i = 0; i < 16; i++)
1009b0fac498ca4863166252f1268fda83394db54153Fei Jiang    {
101021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        if (p->ReferenceFrames[i].flags != VA_PICTURE_H264_INVALID) {
101136bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang            va_TraceMsg(idx, "\t\t%d-%d-0x%08x-%d\n",
101221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan                        p->ReferenceFrames[i].TopFieldOrderCnt,
101321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan                        p->ReferenceFrames[i].BottomFieldOrderCnt,
101421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan                        p->ReferenceFrames[i].picture_id,
101521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan                        p->ReferenceFrames[i].frame_idx);
101621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        } else
101772b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang            va_TraceMsg(idx, "\t\tinv-inv-inv-inv\n");
1018b0fac498ca4863166252f1268fda83394db54153Fei Jiang    }
101921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\n");
102021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
102121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tpicture_width_in_mbs_minus1 = %d\n", p->picture_width_in_mbs_minus1);
102221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tpicture_height_in_mbs_minus1 = %d\n", p->picture_height_in_mbs_minus1);
102321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tbit_depth_luma_minus8 = %d\n", p->bit_depth_luma_minus8);
102421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tbit_depth_chroma_minus8 = %d\n", p->bit_depth_chroma_minus8);
102521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tnum_ref_frames = %d\n", p->num_ref_frames);
102621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tseq fields = %d\n", p->seq_fields.value);
102721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tchroma_format_idc = %d\n", p->seq_fields.bits.chroma_format_idc);
102821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tresidual_colour_transform_flag = %d\n", p->seq_fields.bits.residual_colour_transform_flag);
102921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tframe_mbs_only_flag = %d\n", p->seq_fields.bits.frame_mbs_only_flag);
103021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tmb_adaptive_frame_field_flag = %d\n", p->seq_fields.bits.mb_adaptive_frame_field_flag);
103121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tdirect_8x8_inference_flag = %d\n", p->seq_fields.bits.direct_8x8_inference_flag);
103221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tMinLumaBiPredSize8x8 = %d\n", p->seq_fields.bits.MinLumaBiPredSize8x8);
103321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tnum_slice_groups_minus1 = %d\n", p->num_slice_groups_minus1);
103421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tslice_group_map_type = %d\n", p->slice_group_map_type);
103521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tslice_group_change_rate_minus1 = %d\n", p->slice_group_change_rate_minus1);
103621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tpic_init_qp_minus26 = %d\n", p->pic_init_qp_minus26);
103721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tpic_init_qs_minus26 = %d\n", p->pic_init_qs_minus26);
103821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tchroma_qp_index_offset = %d\n", p->chroma_qp_index_offset);
103921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tsecond_chroma_qp_index_offset = %d\n", p->second_chroma_qp_index_offset);
104036bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceMsg(idx, "\tpic_fields = 0x%03x\n", p->pic_fields.value);
104136bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceFlagIfNotZero(idx, "\t\tentropy_coding_mode_flag", p->pic_fields.bits.entropy_coding_mode_flag);
104236bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceFlagIfNotZero(idx, "\t\tweighted_pred_flag", p->pic_fields.bits.weighted_pred_flag);
104336bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceFlagIfNotZero(idx, "\t\tweighted_bipred_idc", p->pic_fields.bits.weighted_bipred_idc);
104436bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceFlagIfNotZero(idx, "\t\ttransform_8x8_mode_flag", p->pic_fields.bits.transform_8x8_mode_flag);
104536bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceFlagIfNotZero(idx, "\t\tfield_pic_flag", p->pic_fields.bits.field_pic_flag);
104636bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceFlagIfNotZero(idx, "\t\tconstrained_intra_pred_flag", p->pic_fields.bits.constrained_intra_pred_flag);
104736bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceFlagIfNotZero(idx, "\t\tpic_order_present_flag", p->pic_fields.bits.pic_order_present_flag);
104836bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceFlagIfNotZero(idx, "\t\tdeblocking_filter_control_present_flag", p->pic_fields.bits.deblocking_filter_control_present_flag);
104936bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceFlagIfNotZero(idx, "\t\tredundant_pic_cnt_present_flag", p->pic_fields.bits.redundant_pic_cnt_present_flag);
105036bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceFlagIfNotZero(idx, "\t\treference_pic_flag", p->pic_fields.bits.reference_pic_flag);
105121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tframe_num = %d\n", p->frame_num);
105236bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceMsg(idx, NULL);
1053b0fac498ca4863166252f1268fda83394db54153Fei Jiang
1054b0fac498ca4863166252f1268fda83394db54153Fei Jiang    return;
1055b0fac498ca4863166252f1268fda83394db54153Fei Jiang}
1056b0fac498ca4863166252f1268fda83394db54153Fei Jiang
1057b0fac498ca4863166252f1268fda83394db54153Fei Jiangstatic void va_TraceVASliceParameterBufferH264(
1058b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VADisplay dpy,
1059b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VAContextID context,
1060b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VABufferID buffer,
1061b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VABufferType type,
1062b0fac498ca4863166252f1268fda83394db54153Fei Jiang    unsigned int size,
1063b0fac498ca4863166252f1268fda83394db54153Fei Jiang    unsigned int num_elements,
1064b0fac498ca4863166252f1268fda83394db54153Fei Jiang    void *data)
1065b0fac498ca4863166252f1268fda83394db54153Fei Jiang{
1066b0fac498ca4863166252f1268fda83394db54153Fei Jiang    int i;
1067b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VASliceParameterBufferH264* p = (VASliceParameterBufferH264*)data;
106821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    DPY2INDEX(dpy);
106921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
107021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    trace_context[idx].trace_slice_no++;
107121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    trace_context[idx].trace_slice_size = p->slice_data_size;
107221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
107372b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx, "VASliceParameterBufferH264\n");
107421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tslice_data_size = %d\n", p->slice_data_size);
107521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tslice_data_offset = %d\n", p->slice_data_offset);
107621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tslice_data_flag = %d\n", p->slice_data_flag);
107721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tslice_data_bit_offset = %d\n", p->slice_data_bit_offset);
107821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tfirst_mb_in_slice = %d\n", p->first_mb_in_slice);
107921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tslice_type = %d\n", p->slice_type);
108021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tdirect_spatial_mv_pred_flag = %d\n", p->direct_spatial_mv_pred_flag);
108121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tnum_ref_idx_l0_active_minus1 = %d\n", p->num_ref_idx_l0_active_minus1);
108221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tnum_ref_idx_l1_active_minus1 = %d\n", p->num_ref_idx_l1_active_minus1);
108321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tcabac_init_idc = %d\n", p->cabac_init_idc);
108421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tslice_qp_delta = %d\n", p->slice_qp_delta);
108521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tdisable_deblocking_filter_idc = %d\n", p->disable_deblocking_filter_idc);
108621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tslice_alpha_c0_offset_div2 = %d\n", p->slice_alpha_c0_offset_div2);
108736bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceMsg(idx, "\tslice_beta_offset_div2 = %d\n", p->slice_beta_offset_div2);
108821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
108921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    if (p->slice_type == 0 || p->slice_type == 1) {
109021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceMsg(idx, "\tRefPicList0 =");
109121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        for (i = 0; i < p->num_ref_idx_l0_active_minus1 + 1; i++) {
109236bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang            va_TraceMsg(idx, "%d-%d-0x%08x-%d\n", p->RefPicList0[i].TopFieldOrderCnt, p->RefPicList0[i].BottomFieldOrderCnt, p->RefPicList0[i].picture_id, p->RefPicList0[i].frame_idx);
1093b0fac498ca4863166252f1268fda83394db54153Fei Jiang        }
109421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        if (p->slice_type == 1) {
109521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan            va_TraceMsg(idx, "\tRefPicList1 =");
1096b0fac498ca4863166252f1268fda83394db54153Fei Jiang            for (i = 0; i < p->num_ref_idx_l1_active_minus1 + 1; i++)
1097b0fac498ca4863166252f1268fda83394db54153Fei Jiang            {
109836bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang                va_TraceMsg(idx, "%d-%d-0x%08x-%d\n", p->RefPicList1[i].TopFieldOrderCnt, p->RefPicList1[i].BottomFieldOrderCnt, p->RefPicList1[i].picture_id, p->RefPicList1[i].frame_idx);
1099b0fac498ca4863166252f1268fda83394db54153Fei Jiang            }
1100b0fac498ca4863166252f1268fda83394db54153Fei Jiang        }
1101b0fac498ca4863166252f1268fda83394db54153Fei Jiang    }
110221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
110321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tluma_log2_weight_denom = %d\n", p->luma_log2_weight_denom);
110421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tchroma_log2_weight_denom = %d\n", p->chroma_log2_weight_denom);
110521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tluma_weight_l0_flag = %d\n", p->luma_weight_l0_flag);
110621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    if (p->luma_weight_l0_flag) {
110721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        for (i = 0; i <=  p->num_ref_idx_l0_active_minus1; i++) {
110821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan            va_TraceMsg(idx, "\t%d ", p->luma_weight_l0[i]);
110921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan            va_TraceMsg(idx, "\t%d ", p->luma_offset_l0[i]);
1110b0fac498ca4863166252f1268fda83394db54153Fei Jiang        }
1111b0fac498ca4863166252f1268fda83394db54153Fei Jiang    }
111236bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang
111321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tchroma_weight_l0_flag = %d\n", p->chroma_weight_l0_flag);
111421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    if (p->chroma_weight_l0_flag) {
111521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        for (i = 0; i <= p->num_ref_idx_l0_active_minus1; i++) {
111621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan            va_TraceMsg(idx, "\t\t%d ", p->chroma_weight_l0[i][0]);
111721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan            va_TraceMsg(idx, "\t\t%d ", p->chroma_offset_l0[i][0]);
111821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan            va_TraceMsg(idx, "\t\t%d ", p->chroma_weight_l0[i][1]);
111921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan            va_TraceMsg(idx, "\t\t%d ", p->chroma_offset_l0[i][1]);
1120b0fac498ca4863166252f1268fda83394db54153Fei Jiang        }
1121b0fac498ca4863166252f1268fda83394db54153Fei Jiang    }
112221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
112321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tluma_weight_l1_flag = %d\n", p->luma_weight_l1_flag);
112421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    if (p->luma_weight_l1_flag) {
112521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        for (i = 0; i <=  p->num_ref_idx_l1_active_minus1; i++) {
112621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan            va_TraceMsg(idx, "\t\t%d ", p->luma_weight_l1[i]);
112721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan            va_TraceMsg(idx, "\t\t%d ", p->luma_offset_l1[i]);
1128b0fac498ca4863166252f1268fda83394db54153Fei Jiang        }
1129b0fac498ca4863166252f1268fda83394db54153Fei Jiang    }
113021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
113121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tchroma_weight_l1_flag = %d\n", p->chroma_weight_l1_flag);
113221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    if (p->chroma_weight_l1_flag) {
113321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        for (i = 0; i <= p->num_ref_idx_l1_active_minus1; i++) {
113421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan            va_TraceMsg(idx, "\t\t%d ", p->chroma_weight_l1[i][0]);
113521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan            va_TraceMsg(idx, "\t\t%d ", p->chroma_offset_l1[i][0]);
113621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan            va_TraceMsg(idx, "\t\t%d ", p->chroma_weight_l1[i][1]);
113721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan            va_TraceMsg(idx, "\t\t%d ", p->chroma_offset_l1[i][1]);
1138b0fac498ca4863166252f1268fda83394db54153Fei Jiang        }
113936bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang        va_TraceMsg(idx, "\n");
114036bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    }
114136bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceMsg(idx, NULL);
1142b0fac498ca4863166252f1268fda83394db54153Fei Jiang}
1143b0fac498ca4863166252f1268fda83394db54153Fei Jiang
1144b0fac498ca4863166252f1268fda83394db54153Fei Jiangstatic void va_TraceVAIQMatrixBufferH264(
1145b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VADisplay dpy,
1146b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VAContextID context,
1147b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VABufferID buffer,
1148b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VABufferType type,
1149b0fac498ca4863166252f1268fda83394db54153Fei Jiang    unsigned int size,
1150b0fac498ca4863166252f1268fda83394db54153Fei Jiang    unsigned int num_elements,
1151b0fac498ca4863166252f1268fda83394db54153Fei Jiang    void *data
1152b0fac498ca4863166252f1268fda83394db54153Fei Jiang)
1153b0fac498ca4863166252f1268fda83394db54153Fei Jiang{
115472b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    int i, j;
1155b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VAIQMatrixBufferH264* p = (VAIQMatrixBufferH264* )data;
115672b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang
115721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    DPY2INDEX(dpy);
115821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
115972b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx, "VAIQMatrixBufferH264\n");
116021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
116121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tScalingList4x4[6][16]=\n");
116221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    for (i = 0; i < 6; i++) {
116321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        for (j = 0; j < 16; j++) {
116421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan            va_TraceMsg(idx, "\t%d\t", p->ScalingList4x4[i][j]);
1165b0fac498ca4863166252f1268fda83394db54153Fei Jiang            if ((j + 1) % 8 == 0)
116621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan                va_TraceMsg(idx, "\n");
1167b0fac498ca4863166252f1268fda83394db54153Fei Jiang        }
1168b0fac498ca4863166252f1268fda83394db54153Fei Jiang    }
1169b0fac498ca4863166252f1268fda83394db54153Fei Jiang
117021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tScalingList8x8[2][64]=\n");
117121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    for (i = 0; i < 2; i++) {
117221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        for (j = 0; j < 64; j++) {
117321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan            va_TraceMsg(idx, "\t%d", p->ScalingList8x8[i][j]);
1174b0fac498ca4863166252f1268fda83394db54153Fei Jiang            if ((j + 1) % 8 == 0)
117521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan                va_TraceMsg(idx, "\n");
117636bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang        }
1177b0fac498ca4863166252f1268fda83394db54153Fei Jiang    }
117836bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang
117936bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceMsg(idx, NULL);
1180b0fac498ca4863166252f1268fda83394db54153Fei Jiang}
1181b0fac498ca4863166252f1268fda83394db54153Fei Jiang
118221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuanstatic void va_TraceVAEncSequenceParameterBufferH264(
118321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    VADisplay dpy,
118421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    VAContextID context,
118521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    VABufferID buffer,
118621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    VABufferType type,
118721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    unsigned int size,
118821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    unsigned int num_elements,
118921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    void *data)
119021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan{
119121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    VAEncSequenceParameterBufferH264 *p = (VAEncSequenceParameterBufferH264 *)data;
119221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    DPY2INDEX(dpy);
1193eb172ee78b4442658da7b4c7df17a9287d638089Austin Yuan    unsigned int i;
11944b672db6ee89c9846451bbab23cf18e93c4260b2hding
119572b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx, "VAEncSequenceParameterBufferH264\n");
11964b672db6ee89c9846451bbab23cf18e93c4260b2hding
119721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tseq_parameter_set_id = %d\n", p->seq_parameter_set_id);
119821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tlevel_idc = %d\n", p->level_idc);
119921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tintra_period = %d\n", p->intra_period);
120021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tintra_idr_period = %d\n", p->intra_idr_period);
12014b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tip_period = %d\n", p->ip_period);
12024b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tbits_per_second = %d\n", p->bits_per_second);
1203cceaa0568f77a7452857559614100b71fb36ee3awangkun    va_TraceMsg(idx, "\tmax_num_ref_frames = %d\n", p->max_num_ref_frames);
120421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tpicture_width_in_mbs = %d\n", p->picture_width_in_mbs);
120521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tpicture_height_in_mbs = %d\n", p->picture_height_in_mbs);
12064b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tchroma_format_idc = %d\n", p->seq_fields.bits.chroma_format_idc);
12074b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tframe_mbs_only_flag = %d\n", p->seq_fields.bits.frame_mbs_only_flag);
12084b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tmb_adaptive_frame_field_flag = %d\n", p->seq_fields.bits.mb_adaptive_frame_field_flag);
12094b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tseq_scaling_matrix_present_flag = %d\n", p->seq_fields.bits.seq_scaling_matrix_present_flag);
12104b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tdirect_8x8_inference_flag = %d\n", p->seq_fields.bits.direct_8x8_inference_flag);
12114b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tlog2_max_frame_num_minus4 = %d\n", p->seq_fields.bits.log2_max_frame_num_minus4);
12124b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tpic_order_cnt_type = %d\n", p->seq_fields.bits.pic_order_cnt_type);
12134b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tlog2_max_pic_order_cnt_lsb_minus4 = %d\n", p->seq_fields.bits.log2_max_pic_order_cnt_lsb_minus4);
12144b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tdelta_pic_order_always_zero_flag = %d\n", p->seq_fields.bits.delta_pic_order_always_zero_flag);
12154b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tbit_depth_luma_minus8 = %d\n", p->bit_depth_luma_minus8);
12164b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tbit_depth_chroma_minus8 = %d\n", p->bit_depth_chroma_minus8);
12174b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tnum_ref_frames_in_pic_order_cnt_cycle = %d\n", p->num_ref_frames_in_pic_order_cnt_cycle);
12184b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\toffset_for_non_ref_pic = %d\n", p->offset_for_non_ref_pic);
12194b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\toffset_for_top_to_bottom_field = %d\n", p->offset_for_top_to_bottom_field);
12204b672db6ee89c9846451bbab23cf18e93c4260b2hding    for(i = 0; i< p->max_num_ref_frames; ++i)
12214b672db6ee89c9846451bbab23cf18e93c4260b2hding        va_TraceMsg(idx, "\toffset_for_ref_frame[%d] = %d\n", i, p->offset_for_ref_frame[i]);
12224b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tframe_cropping_flag = %d\n", p->frame_cropping_flag);
12234b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tframe_crop_left_offset = %d\n", p->frame_crop_left_offset);
12244b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tframe_crop_right_offset = %d\n", p->frame_crop_right_offset);
12254b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tframe_crop_top_offset = %d\n", p->frame_crop_top_offset);
12264b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tframe_crop_bottom_offset = %d\n", p->frame_crop_bottom_offset);
12274b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tvui_parameters_present_flag = %d\n", p->vui_parameters_present_flag);
12284b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\taspect_ratio_info_present_flag = %d\n", p->vui_fields.bits.aspect_ratio_info_present_flag);
12294b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\ttiming_info_present_flag = %d\n", p->vui_fields.bits.timing_info_present_flag);
12304b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tbitstream_restriction_flag = %d\n", p->vui_fields.bits.bitstream_restriction_flag);
12314b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tlog2_max_mv_length_horizontal = %d\n", p->vui_fields.bits.log2_max_mv_length_horizontal);
12324b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tlog2_max_mv_length_vertical = %d\n", p->vui_fields.bits.log2_max_mv_length_vertical);
12334b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\taspect_ratio_idc = %d\n", p->aspect_ratio_idc);
12344b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tsar_width = %d\n", p->sar_width);
12354b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tsar_height = %d\n", p->sar_height);
12364b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tnum_units_in_tick = %d\n", p->num_units_in_tick);
12374b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\ttime_scale = %d\n", p->time_scale);
12384b672db6ee89c9846451bbab23cf18e93c4260b2hding
123936bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceMsg(idx, NULL);
124021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
124121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    /* start a new sequce, coded log file can be truncated */
124221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    trace_context[idx].trace_sequence_start = 1;
124336bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang
124421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    return;
124521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan}
124621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
12474b672db6ee89c9846451bbab23cf18e93c4260b2hding
124821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuanstatic void va_TraceVAEncPictureParameterBufferH264(
124921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    VADisplay dpy,
125021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    VAContextID context,
125121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    VABufferID buffer,
125221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    VABufferType type,
125321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    unsigned int size,
125421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    unsigned int num_elements,
125521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    void *data)
125621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan{
125721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    VAEncPictureParameterBufferH264 *p = (VAEncPictureParameterBufferH264 *)data;
125821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    DPY2INDEX(dpy);
12594b672db6ee89c9846451bbab23cf18e93c4260b2hding    int i;
12604b672db6ee89c9846451bbab23cf18e93c4260b2hding
12610295fce5ef0741be8ea0a8c67ea69e459deda2fcFei Jiang    va_TraceMsg(idx, "VAEncPictureParameterBufferH264\n");
12624b672db6ee89c9846451bbab23cf18e93c4260b2hding
12634b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tCurrPic.picture_id = 0x%08x\n", p->CurrPic.picture_id);
12644b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tCurrPic.frame_idx = %d\n", p->CurrPic.frame_idx);
12654b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tCurrPic.flags = %d\n", p->CurrPic.flags);
12664b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tCurrPic.TopFieldOrderCnt = %d\n", p->CurrPic.TopFieldOrderCnt);
12674b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tCurrPic.BottomFieldOrderCnt = %d\n", p->CurrPic.BottomFieldOrderCnt);
12684b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tReferenceFrames (TopFieldOrderCnt-BottomFieldOrderCnt-picture_id-frame_idx:\n");
12694b672db6ee89c9846451bbab23cf18e93c4260b2hding    for (i = 0; i < 16; i++)
12704b672db6ee89c9846451bbab23cf18e93c4260b2hding    {
12714b672db6ee89c9846451bbab23cf18e93c4260b2hding        if (p->ReferenceFrames[i].flags != VA_PICTURE_H264_INVALID) {
12724b672db6ee89c9846451bbab23cf18e93c4260b2hding            va_TraceMsg(idx, "\t\t%d-%d-0x%08x-%d\n",
12734b672db6ee89c9846451bbab23cf18e93c4260b2hding                        p->ReferenceFrames[i].TopFieldOrderCnt,
12744b672db6ee89c9846451bbab23cf18e93c4260b2hding                        p->ReferenceFrames[i].BottomFieldOrderCnt,
12754b672db6ee89c9846451bbab23cf18e93c4260b2hding                        p->ReferenceFrames[i].picture_id,
12764b672db6ee89c9846451bbab23cf18e93c4260b2hding                        p->ReferenceFrames[i].frame_idx);
12774b672db6ee89c9846451bbab23cf18e93c4260b2hding        } else
12784b672db6ee89c9846451bbab23cf18e93c4260b2hding            va_TraceMsg(idx, "\t\tinv-inv-inv-inv\n");
12794b672db6ee89c9846451bbab23cf18e93c4260b2hding    }
128072b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx, "\tcoded_buf = %08x\n", p->coded_buf);
12814b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tpic_parameter_set_id = %d\n", p->pic_parameter_set_id);
12824b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tseq_parameter_set_id = %d\n", p->seq_parameter_set_id);
128372b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx, "\tlast_picture = 0x%08x\n", p->last_picture);
12844b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tframe_num = %d\n", p->frame_num);
12854b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tpic_init_qp = %d\n", p->pic_init_qp);
12864b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tnum_ref_idx_l0_active_minus1 = %d\n", p->num_ref_idx_l0_active_minus1);
12874b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tnum_ref_idx_l1_active_minus1 = %d\n", p->num_ref_idx_l1_active_minus1);
12884b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tchroma_qp_index_offset = %d\n", p->chroma_qp_index_offset);
12894b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tsecond_chroma_qp_index_offset = %d\n", p->second_chroma_qp_index_offset);
12904b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tpic_fields = 0x%03x\n", p->pic_fields.value);
12914b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tidr_pic_flag = %d\n", p->pic_fields.bits.idr_pic_flag);
12924b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\treference_pic_flag = %d\n", p->pic_fields.bits.reference_pic_flag);
12934b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tentropy_coding_mode_flag = %d\n", p->pic_fields.bits.entropy_coding_mode_flag);
12944b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tweighted_pred_flag = %d\n", p->pic_fields.bits.weighted_pred_flag);
12954b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tweighted_bipred_idc = %d\n", p->pic_fields.bits.weighted_bipred_idc);
12964b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tconstrained_intra_pred_flag = %d\n", p->pic_fields.bits.constrained_intra_pred_flag);
12974b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\ttransform_8x8_mode_flag = %d\n", p->pic_fields.bits.transform_8x8_mode_flag);
12984b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tdeblocking_filter_control_present_flag = %d\n", p->pic_fields.bits.deblocking_filter_control_present_flag);
12994b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tredundant_pic_cnt_present_flag = %d\n", p->pic_fields.bits.redundant_pic_cnt_present_flag);
13004b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tpic_order_present_flag = %d\n", p->pic_fields.bits.pic_order_present_flag);
13014b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tpic_scaling_matrix_present_flag = %d\n", p->pic_fields.bits.pic_scaling_matrix_present_flag);
13024b672db6ee89c9846451bbab23cf18e93c4260b2hding
130336bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceMsg(idx, NULL);
130421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
130521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    trace_context[idx].trace_codedbuf =  p->coded_buf;
13064b672db6ee89c9846451bbab23cf18e93c4260b2hding
130721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    return;
130821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan}
130921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
131021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuanstatic void va_TraceVAEncSliceParameterBuffer(
131121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    VADisplay dpy,
131221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    VAContextID context,
131321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    VABufferID buffer,
131421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    VABufferType type,
131521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    unsigned int size,
131621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    unsigned int num_elements,
131721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    void *data)
131821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan{
131921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    VAEncSliceParameterBuffer* p = (VAEncSliceParameterBuffer*)data;
132021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    DPY2INDEX(dpy);
132121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
132272b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx, "VAEncSliceParameterBuffer\n");
132321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
132421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tstart_row_number = %d\n", p->start_row_number);
132521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tslice_height = %d\n", p->slice_height);
132621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tslice_flags.is_intra = %d\n", p->slice_flags.bits.is_intra);
132721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tslice_flags.disable_deblocking_filter_idc = %d\n", p->slice_flags.bits.disable_deblocking_filter_idc);
1328cceaa0568f77a7452857559614100b71fb36ee3awangkun    va_TraceMsg(idx, "\tslice_flags.uses_long_term_ref = %d\n", p->slice_flags.bits.uses_long_term_ref);
1329cceaa0568f77a7452857559614100b71fb36ee3awangkun    va_TraceMsg(idx, "\tslice_flags.is_long_term_ref = %d\n", p->slice_flags.bits.is_long_term_ref);
133036bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceMsg(idx, NULL);
133136bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang
133221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    return;
133321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan}
133421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
13354b672db6ee89c9846451bbab23cf18e93c4260b2hdingstatic void va_TraceVAEncSliceParameterBufferH264(
13364b672db6ee89c9846451bbab23cf18e93c4260b2hding    VADisplay dpy,
13374b672db6ee89c9846451bbab23cf18e93c4260b2hding    VAContextID context,
13384b672db6ee89c9846451bbab23cf18e93c4260b2hding    VABufferID buffer,
13394b672db6ee89c9846451bbab23cf18e93c4260b2hding    VABufferType type,
13404b672db6ee89c9846451bbab23cf18e93c4260b2hding    unsigned int size,
13414b672db6ee89c9846451bbab23cf18e93c4260b2hding    unsigned int num_elements,
13424b672db6ee89c9846451bbab23cf18e93c4260b2hding    void *data)
13434b672db6ee89c9846451bbab23cf18e93c4260b2hding{
13444b672db6ee89c9846451bbab23cf18e93c4260b2hding    VAEncSliceParameterBufferH264* p = (VAEncSliceParameterBufferH264*)data;
13454b672db6ee89c9846451bbab23cf18e93c4260b2hding    DPY2INDEX(dpy);
13464b672db6ee89c9846451bbab23cf18e93c4260b2hding    int i;
13474b672db6ee89c9846451bbab23cf18e93c4260b2hding
13484b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "VAEncSliceParameterBufferH264\n");
13494b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tmacroblock_address = %d\n", p->macroblock_address);
13504b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tnum_macroblocks = %d\n", p->num_macroblocks);
13514b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tmacroblock_info = %08x\n", p->macroblock_info);
13524b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tslice_type = %d\n", p->slice_type);
13534b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tpic_parameter_set_id = %d\n", p->pic_parameter_set_id);
13544b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tidr_pic_id = %d\n", p->idr_pic_id);
13554b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tpic_order_cnt_lsb = %d\n", p->pic_order_cnt_lsb);
13564b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tdelta_pic_order_cnt_bottom = %d\n", p->delta_pic_order_cnt_bottom);
13574b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tdelta_pic_order_cnt[0] = %d\n", p->delta_pic_order_cnt[0]);
13584b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tdelta_pic_order_cnt[1] = %d\n", p->delta_pic_order_cnt[1]);
13594b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tdirect_spatial_mv_pred_flag = %d\n", p->direct_spatial_mv_pred_flag);
13604b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tnum_ref_idx_active_override_flag = %d\n", p->num_ref_idx_active_override_flag);
13614b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tnum_ref_idx_l1_active_minus1 = %d\n", p->num_ref_idx_l1_active_minus1);
13624b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tslice_beta_offset_div2 = %d\n", p->slice_beta_offset_div2);
13634b672db6ee89c9846451bbab23cf18e93c4260b2hding
13644b672db6ee89c9846451bbab23cf18e93c4260b2hding    if (p->slice_type == 0 || p->slice_type == 1) {
13654b672db6ee89c9846451bbab23cf18e93c4260b2hding        va_TraceMsg(idx, "\tRefPicList0 =");
13664b672db6ee89c9846451bbab23cf18e93c4260b2hding        for (i = 0; i < p->num_ref_idx_l0_active_minus1 + 1; i++) {
13674b672db6ee89c9846451bbab23cf18e93c4260b2hding            va_TraceMsg(idx, "%d-%d-0x%08x-%d\n", p->RefPicList0[i].TopFieldOrderCnt, p->RefPicList0[i].BottomFieldOrderCnt, p->RefPicList0[i].picture_id, p->RefPicList0[i].frame_idx);
13684b672db6ee89c9846451bbab23cf18e93c4260b2hding        }
13694b672db6ee89c9846451bbab23cf18e93c4260b2hding        if (p->slice_type == 1) {
13704b672db6ee89c9846451bbab23cf18e93c4260b2hding            va_TraceMsg(idx, "\tRefPicList1 =");
13714b672db6ee89c9846451bbab23cf18e93c4260b2hding            for (i = 0; i < p->num_ref_idx_l1_active_minus1 + 1; i++)
13724b672db6ee89c9846451bbab23cf18e93c4260b2hding            {
13734b672db6ee89c9846451bbab23cf18e93c4260b2hding                va_TraceMsg(idx, "%d-%d-0x%08x-%d\n", p->RefPicList1[i].TopFieldOrderCnt, p->RefPicList1[i].BottomFieldOrderCnt, p->RefPicList1[i].picture_id, p->RefPicList1[i].frame_idx);
13744b672db6ee89c9846451bbab23cf18e93c4260b2hding            }
13754b672db6ee89c9846451bbab23cf18e93c4260b2hding        }
13764b672db6ee89c9846451bbab23cf18e93c4260b2hding    }
13774b672db6ee89c9846451bbab23cf18e93c4260b2hding
13784b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tluma_log2_weight_denom = %d\n", p->luma_log2_weight_denom);
13794b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tchroma_log2_weight_denom = %d\n", p->chroma_log2_weight_denom);
13804b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tluma_weight_l0_flag = %d\n", p->luma_weight_l0_flag);
13814b672db6ee89c9846451bbab23cf18e93c4260b2hding    if (p->luma_weight_l0_flag) {
13824b672db6ee89c9846451bbab23cf18e93c4260b2hding        for (i = 0; i <=  p->num_ref_idx_l0_active_minus1; i++) {
13834b672db6ee89c9846451bbab23cf18e93c4260b2hding            va_TraceMsg(idx, "\t%d ", p->luma_weight_l0[i]);
13844b672db6ee89c9846451bbab23cf18e93c4260b2hding            va_TraceMsg(idx, "\t%d ", p->luma_offset_l0[i]);
13854b672db6ee89c9846451bbab23cf18e93c4260b2hding        }
13864b672db6ee89c9846451bbab23cf18e93c4260b2hding    }
13874b672db6ee89c9846451bbab23cf18e93c4260b2hding
13884b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tchroma_weight_l0_flag = %d\n", p->chroma_weight_l0_flag);
13894b672db6ee89c9846451bbab23cf18e93c4260b2hding    if (p->chroma_weight_l0_flag) {
13904b672db6ee89c9846451bbab23cf18e93c4260b2hding        for (i = 0; i <= p->num_ref_idx_l0_active_minus1; i++) {
13914b672db6ee89c9846451bbab23cf18e93c4260b2hding            va_TraceMsg(idx, "\t\t%d ", p->chroma_weight_l0[i][0]);
13924b672db6ee89c9846451bbab23cf18e93c4260b2hding            va_TraceMsg(idx, "\t\t%d ", p->chroma_offset_l0[i][0]);
13934b672db6ee89c9846451bbab23cf18e93c4260b2hding            va_TraceMsg(idx, "\t\t%d ", p->chroma_weight_l0[i][1]);
13944b672db6ee89c9846451bbab23cf18e93c4260b2hding            va_TraceMsg(idx, "\t\t%d ", p->chroma_offset_l0[i][1]);
13954b672db6ee89c9846451bbab23cf18e93c4260b2hding        }
13964b672db6ee89c9846451bbab23cf18e93c4260b2hding    }
13974b672db6ee89c9846451bbab23cf18e93c4260b2hding
13984b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tluma_weight_l1_flag = %d\n", p->luma_weight_l1_flag);
13994b672db6ee89c9846451bbab23cf18e93c4260b2hding    if (p->luma_weight_l1_flag) {
14004b672db6ee89c9846451bbab23cf18e93c4260b2hding        for (i = 0; i <=  p->num_ref_idx_l1_active_minus1; i++) {
14014b672db6ee89c9846451bbab23cf18e93c4260b2hding            va_TraceMsg(idx, "\t\t%d ", p->luma_weight_l1[i]);
14024b672db6ee89c9846451bbab23cf18e93c4260b2hding            va_TraceMsg(idx, "\t\t%d ", p->luma_offset_l1[i]);
14034b672db6ee89c9846451bbab23cf18e93c4260b2hding        }
14044b672db6ee89c9846451bbab23cf18e93c4260b2hding    }
14054b672db6ee89c9846451bbab23cf18e93c4260b2hding
14064b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tchroma_weight_l1_flag = %d\n", p->chroma_weight_l1_flag);
14074b672db6ee89c9846451bbab23cf18e93c4260b2hding    if (p->chroma_weight_l1_flag) {
14084b672db6ee89c9846451bbab23cf18e93c4260b2hding        for (i = 0; i <= p->num_ref_idx_l1_active_minus1; i++) {
14094b672db6ee89c9846451bbab23cf18e93c4260b2hding            va_TraceMsg(idx, "\t\t%d ", p->chroma_weight_l1[i][0]);
14104b672db6ee89c9846451bbab23cf18e93c4260b2hding            va_TraceMsg(idx, "\t\t%d ", p->chroma_offset_l1[i][0]);
14114b672db6ee89c9846451bbab23cf18e93c4260b2hding            va_TraceMsg(idx, "\t\t%d ", p->chroma_weight_l1[i][1]);
14124b672db6ee89c9846451bbab23cf18e93c4260b2hding            va_TraceMsg(idx, "\t\t%d ", p->chroma_offset_l1[i][1]);
14134b672db6ee89c9846451bbab23cf18e93c4260b2hding        }
14144b672db6ee89c9846451bbab23cf18e93c4260b2hding        va_TraceMsg(idx, "\n");
14154b672db6ee89c9846451bbab23cf18e93c4260b2hding    }
14164b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, NULL);
14174b672db6ee89c9846451bbab23cf18e93c4260b2hding
14184b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tcabac_init_idc = %d\n", p->cabac_init_idc);
14194b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tslice_qp_delta = %d\n", p->slice_qp_delta);
14204b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tdisable_deblocking_filter_idc = %d\n", p->disable_deblocking_filter_idc);
14214b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tslice_alpha_c0_offset_div2 = %d\n", p->slice_alpha_c0_offset_div2);
14224b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tslice_beta_offset_div2 = %d\n", p->slice_beta_offset_div2);
14234b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, NULL);
14244b672db6ee89c9846451bbab23cf18e93c4260b2hding
14254b672db6ee89c9846451bbab23cf18e93c4260b2hding    return;
14264b672db6ee89c9846451bbab23cf18e93c4260b2hding}
14274b672db6ee89c9846451bbab23cf18e93c4260b2hding
142821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuanstatic void va_TraceVAEncMiscParameterBuffer(
142921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    VADisplay dpy,
143021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    VAContextID context,
143121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    VABufferID buffer,
143221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    VABufferType type,
143321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    unsigned int size,
143421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    unsigned int num_elements,
143521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    void *data)
143621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan{
143721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    VAEncMiscParameterBuffer* tmp = (VAEncMiscParameterBuffer*)data;
143821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    DPY2INDEX(dpy);
143921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
144021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    switch (tmp->type) {
144121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    case VAEncMiscParameterTypeFrameRate:
144221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    {
144321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        VAEncMiscParameterFrameRate *p = (VAEncMiscParameterFrameRate *)tmp->data;
144472b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang        va_TraceMsg(idx, "VAEncMiscParameterFrameRate\n");
144521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceMsg(idx, "\tframerate = %d\n", p->framerate);
144621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
144721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        break;
144821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    }
144921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    case VAEncMiscParameterTypeRateControl:
145021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    {
145121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        VAEncMiscParameterRateControl *p = (VAEncMiscParameterRateControl *)tmp->data;
145221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
145372b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang        va_TraceMsg(idx, "VAEncMiscParameterRateControl\n");
145421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceMsg(idx, "\tbits_per_second = %d\n", p->bits_per_second);
145521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceMsg(idx, "\twindow_size = %d\n", p->window_size);
145621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceMsg(idx, "\tinitial_qp = %d\n", p->initial_qp);
145721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceMsg(idx, "\tmin_qp = %d\n", p->min_qp);
145821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        break;
145921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    }
146021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    case VAEncMiscParameterTypeMaxSliceSize:
146121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    {
146221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        VAEncMiscParameterMaxSliceSize *p = (VAEncMiscParameterMaxSliceSize *)tmp->data;
146321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
146472b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang        va_TraceMsg(idx, "VAEncMiscParameterTypeMaxSliceSize\n");
146521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceMsg(idx, "\tmax_slice_size = %d\n", p->max_slice_size);
146621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        break;
146721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    }
146821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    case VAEncMiscParameterTypeAIR:
146921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    {
147021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        VAEncMiscParameterAIR *p = (VAEncMiscParameterAIR *)tmp->data;
147121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
147272b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang        va_TraceMsg(idx, "VAEncMiscParameterAIR\n");
147321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceMsg(idx, "\tair_num_mbs = %d\n", p->air_num_mbs);
147421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceMsg(idx, "\tair_threshold = %d\n", p->air_threshold);
147521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceMsg(idx, "\tair_auto = %d\n", p->air_auto);
147621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        break;
147721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    }
14784b672db6ee89c9846451bbab23cf18e93c4260b2hding    case VAEncMiscParameterTypeHRD:
14794b672db6ee89c9846451bbab23cf18e93c4260b2hding    {
14804b672db6ee89c9846451bbab23cf18e93c4260b2hding        VAEncMiscParameterHRD *p = (VAEncMiscParameterHRD *)tmp->data;
14814b672db6ee89c9846451bbab23cf18e93c4260b2hding
14824b672db6ee89c9846451bbab23cf18e93c4260b2hding        va_TraceMsg(idx, "VAEncMiscParameterHRD\n");
14834b672db6ee89c9846451bbab23cf18e93c4260b2hding        va_TraceMsg(idx, "\tinitial_buffer_fullness = %d\n", p->initial_buffer_fullness);
14844b672db6ee89c9846451bbab23cf18e93c4260b2hding        va_TraceMsg(idx, "\tbuffer_size = %d\n", p->buffer_size);
14854b672db6ee89c9846451bbab23cf18e93c4260b2hding        break;
14864b672db6ee89c9846451bbab23cf18e93c4260b2hding    }
148721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    default:
148821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceMsg(idx, "invalid VAEncMiscParameterBuffer type = %d\n", tmp->type);
148921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        break;
149021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    }
149136bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceMsg(idx, NULL);
149236bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang
149321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    return;
149421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan}
149521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
149621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
1497b0fac498ca4863166252f1268fda83394db54153Fei Jiangstatic void va_TraceVAPictureParameterBufferVC1(
1498b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VADisplay dpy,
1499b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VAContextID context,
1500b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VABufferID buffer,
1501b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VABufferType type,
1502b0fac498ca4863166252f1268fda83394db54153Fei Jiang    unsigned int size,
1503b0fac498ca4863166252f1268fda83394db54153Fei Jiang    unsigned int num_elements,
1504b0fac498ca4863166252f1268fda83394db54153Fei Jiang    void *data
1505b0fac498ca4863166252f1268fda83394db54153Fei Jiang)
1506b0fac498ca4863166252f1268fda83394db54153Fei Jiang{
1507b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VAPictureParameterBufferVC1* p = (VAPictureParameterBufferVC1*)data;
150821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    DPY2INDEX(dpy);
150921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
151072b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx, "VAPictureParameterBufferVC1\n");
151121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
151221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tforward_reference_picture = 0x%08x\n", p->forward_reference_picture);
151321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tbackward_reference_picture = 0x%08x\n", p->backward_reference_picture);
151421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tinloop_decoded_picture = 0x%08x\n", p->inloop_decoded_picture);
151521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
151621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tpulldown = %d\n", p->sequence_fields.bits.pulldown);
151721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tinterlace = %d\n", p->sequence_fields.bits.interlace);
151821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\ttfcntrflag = %d\n", p->sequence_fields.bits.tfcntrflag);
151921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tfinterpflag = %d\n", p->sequence_fields.bits.finterpflag);
152021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tpsf = %d\n", p->sequence_fields.bits.psf);
152121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tmultires = %d\n", p->sequence_fields.bits.multires);
152221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\toverlap = %d\n", p->sequence_fields.bits.overlap);
152321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tsyncmarker = %d\n", p->sequence_fields.bits.syncmarker);
152421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\trangered = %d\n", p->sequence_fields.bits.rangered);
152521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tmax_b_frames = %d\n", p->sequence_fields.bits.max_b_frames);
152636bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceMsg(idx, "\tprofile = %d\n", p->sequence_fields.bits.profile);
152721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tcoded_width = %d\n", p->coded_width);
152821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tcoded_height = %d\n", p->coded_height);
152921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tclosed_entry = %d\n", p->entrypoint_fields.bits.closed_entry);
153021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tbroken_link = %d\n", p->entrypoint_fields.bits.broken_link);
153121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tclosed_entry = %d\n", p->entrypoint_fields.bits.closed_entry);
153221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tpanscan_flag = %d\n", p->entrypoint_fields.bits.panscan_flag);
153321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tloopfilter = %d\n", p->entrypoint_fields.bits.loopfilter);
153421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tconditional_overlap_flag = %d\n", p->conditional_overlap_flag);
153521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tfast_uvmc_flag = %d\n", p->fast_uvmc_flag);
153621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\trange_mapping_luma_flag = %d\n", p->range_mapping_fields.bits.luma_flag);
153721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\trange_mapping_luma = %d\n", p->range_mapping_fields.bits.luma);
153821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\trange_mapping_chroma_flag = %d\n", p->range_mapping_fields.bits.chroma_flag);
153921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\trange_mapping_chroma = %d\n", p->range_mapping_fields.bits.chroma);
154021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tb_picture_fraction = %d\n", p->b_picture_fraction);
154121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tcbp_table = %d\n", p->cbp_table);
154221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tmb_mode_table = %d\n", p->mb_mode_table);
154321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\trange_reduction_frame = %d\n", p->range_reduction_frame);
154421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\trounding_control = %d\n", p->rounding_control);
154521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tpost_processing = %d\n", p->post_processing);
154621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tpicture_resolution_index = %d\n", p->picture_resolution_index);
154721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tluma_scale = %d\n", p->luma_scale);
154821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tluma_shift = %d\n", p->luma_shift);
154921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tpicture_type = %d\n", p->picture_fields.bits.picture_type);
155021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tframe_coding_mode = %d\n", p->picture_fields.bits.frame_coding_mode);
155121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\ttop_field_first = %d\n", p->picture_fields.bits.top_field_first);
155221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tis_first_field = %d\n", p->picture_fields.bits.is_first_field);
155321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tintensity_compensation = %d\n", p->picture_fields.bits.intensity_compensation);
155421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tmv_type_mb = %d\n", p->raw_coding.flags.mv_type_mb);
155521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tdirect_mb = %d\n", p->raw_coding.flags.direct_mb);
155621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tskip_mb = %d\n", p->raw_coding.flags.skip_mb);
155721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tfield_tx = %d\n", p->raw_coding.flags.field_tx);
155821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tforward_mb = %d\n", p->raw_coding.flags.forward_mb);
155921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tac_pred = %d\n", p->raw_coding.flags.ac_pred);
156021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\toverflags = %d\n", p->raw_coding.flags.overflags);
156121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tbp_mv_type_mb = %d\n", p->bitplane_present.flags.bp_mv_type_mb);
156221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tbp_direct_mb = %d\n", p->bitplane_present.flags.bp_direct_mb);
156321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tbp_skip_mb = %d\n", p->bitplane_present.flags.bp_skip_mb);
156421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tbp_field_tx = %d\n", p->bitplane_present.flags.bp_field_tx);
156521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tbp_forward_mb = %d\n", p->bitplane_present.flags.bp_forward_mb);
156621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tbp_ac_pred = %d\n", p->bitplane_present.flags.bp_ac_pred);
156721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tbp_overflags = %d\n", p->bitplane_present.flags.bp_overflags);
156821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\treference_distance_flag = %d\n", p->reference_fields.bits.reference_distance_flag);
156921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\treference_distance = %d\n", p->reference_fields.bits.reference_distance);
157021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tnum_reference_pictures = %d\n", p->reference_fields.bits.num_reference_pictures);
157121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\treference_field_pic_indicator = %d\n", p->reference_fields.bits.reference_field_pic_indicator);
157221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tmv_mode = %d\n", p->mv_fields.bits.mv_mode);
157321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tmv_mode2 = %d\n", p->mv_fields.bits.mv_mode2);
157421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tmv_table = %d\n", p->mv_fields.bits.mv_table);
157521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\ttwo_mv_block_pattern_table = %d\n", p->mv_fields.bits.two_mv_block_pattern_table);
157621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tfour_mv_switch = %d\n", p->mv_fields.bits.four_mv_switch);
157721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tfour_mv_block_pattern_table = %d\n", p->mv_fields.bits.four_mv_block_pattern_table);
157821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\textended_mv_flag = %d\n", p->mv_fields.bits.extended_mv_flag);
157921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\textended_mv_range = %d\n", p->mv_fields.bits.extended_mv_range);
158021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\textended_dmv_flag = %d\n", p->mv_fields.bits.extended_dmv_flag);
158121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\textended_dmv_range = %d\n", p->mv_fields.bits.extended_dmv_range);
158221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tdquant = %d\n", p->pic_quantizer_fields.bits.dquant);
158321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tquantizer = %d\n", p->pic_quantizer_fields.bits.quantizer);
158421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\thalf_qp = %d\n", p->pic_quantizer_fields.bits.half_qp);
158521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tpic_quantizer_scale = %d\n", p->pic_quantizer_fields.bits.pic_quantizer_scale);
158621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tpic_quantizer_type = %d\n", p->pic_quantizer_fields.bits.pic_quantizer_type);
158721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tdq_frame = %d\n", p->pic_quantizer_fields.bits.dq_frame);
158821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tdq_profile = %d\n", p->pic_quantizer_fields.bits.dq_profile);
158921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tdq_sb_edge = %d\n", p->pic_quantizer_fields.bits.dq_sb_edge);
159021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tdq_db_edge = %d\n", p->pic_quantizer_fields.bits.dq_db_edge);
159121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tdq_binary_level = %d\n", p->pic_quantizer_fields.bits.dq_binary_level);
159221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\talt_pic_quantizer = %d\n", p->pic_quantizer_fields.bits.alt_pic_quantizer);
159321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tvariable_sized_transform_flag = %d\n", p->transform_fields.bits.variable_sized_transform_flag);
159421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tmb_level_transform_type_flag = %d\n", p->transform_fields.bits.mb_level_transform_type_flag);
159521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tframe_level_transform_type = %d\n", p->transform_fields.bits.frame_level_transform_type);
159621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\ttransform_ac_codingset_idx1 = %d\n", p->transform_fields.bits.transform_ac_codingset_idx1);
159721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\ttransform_ac_codingset_idx2 = %d\n", p->transform_fields.bits.transform_ac_codingset_idx2);
159821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tintra_transform_dc_table = %d\n", p->transform_fields.bits.intra_transform_dc_table);
159936bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceMsg(idx, NULL);
1600b0fac498ca4863166252f1268fda83394db54153Fei Jiang}
1601b0fac498ca4863166252f1268fda83394db54153Fei Jiang
1602b0fac498ca4863166252f1268fda83394db54153Fei Jiangstatic void va_TraceVASliceParameterBufferVC1(
1603b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VADisplay dpy,
1604b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VAContextID context,
1605b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VABufferID buffer,
1606b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VABufferType type,
1607b0fac498ca4863166252f1268fda83394db54153Fei Jiang    unsigned int size,
1608b0fac498ca4863166252f1268fda83394db54153Fei Jiang    unsigned int num_elements,
1609b0fac498ca4863166252f1268fda83394db54153Fei Jiang    void* data
1610b0fac498ca4863166252f1268fda83394db54153Fei Jiang)
1611b0fac498ca4863166252f1268fda83394db54153Fei Jiang{
1612b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VASliceParameterBufferVC1 *p = (VASliceParameterBufferVC1*)data;
161321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    DPY2INDEX(dpy);
161421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
161521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    trace_context[idx].trace_slice_no++;
161621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    trace_context[idx].trace_slice_size = p->slice_data_size;
1617b0fac498ca4863166252f1268fda83394db54153Fei Jiang
161872b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx, "VASliceParameterBufferVC1\n");
161921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tslice_data_size = %d\n", p->slice_data_size);
162021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tslice_data_offset = %d\n", p->slice_data_offset);
162121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tslice_data_flag = %d\n", p->slice_data_flag);
162221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tmacroblock_offset = %d\n", p->macroblock_offset);
162321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tslice_vertical_position = %d\n", p->slice_vertical_position);
162436bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceMsg(idx, NULL);
1625b0fac498ca4863166252f1268fda83394db54153Fei Jiang}
1626b0fac498ca4863166252f1268fda83394db54153Fei Jiang
1627293abef4f8172cc061d26f9d909c281b4190b514Bruce Bearevoid va_TraceBeginPicture(
1628b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VADisplay dpy,
1629b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VAContextID context,
1630b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VASurfaceID render_target
1631b0fac498ca4863166252f1268fda83394db54153Fei Jiang)
1632b0fac498ca4863166252f1268fda83394db54153Fei Jiang{
163321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    DPY2INDEX(dpy);
1634b0fac498ca4863166252f1268fda83394db54153Fei Jiang
163521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    TRACE_FUNCNAME(idx);
1636cceaa0568f77a7452857559614100b71fb36ee3awangkun
163721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tcontext = 0x%08x\n", context);
163821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\trender_targets = 0x%08x\n", render_target);
1639cceaa0568f77a7452857559614100b71fb36ee3awangkun    va_TraceMsg(idx, "\tframe_count  = #%d\n", trace_context[idx].trace_frame_no);
164036bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceMsg(idx, NULL);
1641b0fac498ca4863166252f1268fda83394db54153Fei Jiang
164221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    trace_context[idx].trace_rendertarget = render_target; /* for surface data dump after vaEndPicture */
1643b0fac498ca4863166252f1268fda83394db54153Fei Jiang
164421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    trace_context[idx].trace_frame_no++;
164521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    trace_context[idx].trace_slice_no = 0;
1646b0fac498ca4863166252f1268fda83394db54153Fei Jiang}
1647b0fac498ca4863166252f1268fda83394db54153Fei Jiang
1648901c77a7aa491f56b63af7b655b67439481e4177Fei Jiangstatic void va_TraceMPEG2Buf(
1649b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VADisplay dpy,
1650b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VAContextID context,
1651b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VABufferID buffer,
1652b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VABufferType type,
1653b0fac498ca4863166252f1268fda83394db54153Fei Jiang    unsigned int size,
1654b0fac498ca4863166252f1268fda83394db54153Fei Jiang    unsigned int num_elements,
1655b0fac498ca4863166252f1268fda83394db54153Fei Jiang    void *pbuf
1656b0fac498ca4863166252f1268fda83394db54153Fei Jiang)
1657b0fac498ca4863166252f1268fda83394db54153Fei Jiang{
1658b0fac498ca4863166252f1268fda83394db54153Fei Jiang    switch (type) {
1659b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAPictureParameterBufferType:
1660b0fac498ca4863166252f1268fda83394db54153Fei Jiang        va_TraceVAPictureParameterBufferMPEG2(dpy, context, buffer, type, size, num_elements, pbuf);
1661b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
1662b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAIQMatrixBufferType:
1663b0fac498ca4863166252f1268fda83394db54153Fei Jiang        va_TraceVAIQMatrixBufferMPEG2(dpy, context, buffer, type, size, num_elements, pbuf);
1664b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
1665b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VABitPlaneBufferType:
166621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
1667b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
1668b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VASliceGroupMapBufferType:
166921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
1670b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
1671b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VASliceParameterBufferType:
1672b0fac498ca4863166252f1268fda83394db54153Fei Jiang        va_TraceVASliceParameterBufferMPEG2(dpy, context, buffer, type, size, num_elements, pbuf);
1673b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
1674b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VASliceDataBufferType:
1675b0fac498ca4863166252f1268fda83394db54153Fei Jiang        va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
1676b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
1677b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAMacroblockParameterBufferType:
167821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
1679b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
1680b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAResidualDataBufferType:
168121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
1682b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
1683b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VADeblockingParameterBufferType:
168421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
1685b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
1686b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAImageBufferType:
1687b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
1688b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAProtectedSliceDataBufferType:
168921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
1690b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
1691b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAEncCodedBufferType:
1692b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
1693b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAEncSequenceParameterBufferType:
1694b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
1695b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAEncPictureParameterBufferType:
1696b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
1697b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAEncSliceParameterBufferType:
1698b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
169921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    default:
170021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        break;
1701b0fac498ca4863166252f1268fda83394db54153Fei Jiang    }
1702b0fac498ca4863166252f1268fda83394db54153Fei Jiang}
1703b0fac498ca4863166252f1268fda83394db54153Fei Jiang
170450ce1dbe8a3402d56c94238710964507db7d99e1Kun Wangstatic void va_TraceVAEncSequenceParameterBufferH263(
170550ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    VADisplay dpy,
170650ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    VAContextID context,
170750ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    VABufferID buffer,
170850ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    VABufferType type,
170950ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    unsigned int size,
171050ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    unsigned int num_elements,
171150ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    void *data)
171250ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang{
171350ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    VAEncSequenceParameterBufferH263 *p = (VAEncSequenceParameterBufferH263 *)data;
171450ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    DPY2INDEX(dpy);
171550ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang
171650ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    va_TraceMsg(idx, "VAEncSequenceParameterBufferH263\n");
171750ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang
171850ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    va_TraceMsg(idx, "\tintra_period = %d\n", p->intra_period);
171950ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    va_TraceMsg(idx, "\tbits_per_second = %d\n", p->bits_per_second);
172050ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    va_TraceMsg(idx, "\tframe_rate = %d\n", p->frame_rate);
172150ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    va_TraceMsg(idx, "\tinitial_qp = %d\n", p->initial_qp);
172250ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    va_TraceMsg(idx, "\tmin_qp = %d\n", p->min_qp);
172350ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    va_TraceMsg(idx, NULL);
172450ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang
172550ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    /* start a new sequce, coded log file can be truncated */
172650ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    trace_context[idx].trace_sequence_start = 1;
172750ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang
172850ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    return;
172950ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang}
173050ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang
173150ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang
173250ce1dbe8a3402d56c94238710964507db7d99e1Kun Wangstatic void va_TraceVAEncPictureParameterBufferH263(
173350ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    VADisplay dpy,
173450ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    VAContextID context,
173550ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    VABufferID buffer,
173650ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    VABufferType type,
173750ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    unsigned int size,
173850ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    unsigned int num_elements,
173950ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    void *data)
174050ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang{
174150ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    VAEncPictureParameterBufferH263 *p = (VAEncPictureParameterBufferH263 *)data;
174250ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    DPY2INDEX(dpy);
174350ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang
174450ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    va_TraceMsg(idx, "VAEncPictureParameterBufferH263\n");
174550ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    va_TraceMsg(idx, "\treference_picture = 0x%08x\n", p->reference_picture);
174650ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    va_TraceMsg(idx, "\treconstructed_picture = 0x%08x\n", p->reconstructed_picture);
174750ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    va_TraceMsg(idx, "\tcoded_buf = %08x\n", p->coded_buf);
174850ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    va_TraceMsg(idx, "\tpicture_width = %d\n", p->picture_width);
174950ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    va_TraceMsg(idx, "\tpicture_height = %d\n", p->picture_height);
175050ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    va_TraceMsg(idx, "\tpicture_type = 0x%08x\n", p->picture_type);
175150ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    va_TraceMsg(idx, NULL);
175250ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang
175350ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    trace_context[idx].trace_codedbuf =  p->coded_buf;
175450ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang
175550ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    return;
175650ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang}
175750ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang
1758cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wangstatic void va_TraceVAEncPictureParameterBufferJPEG(
1759cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    VADisplay dpy,
1760cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    VAContextID context,
1761cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    VABufferID buffer,
1762cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    VABufferType type,
1763cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    unsigned int size,
1764cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    unsigned int num_elements,
1765cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    void *data)
1766cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang{
1767cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    VAEncPictureParameterBufferJPEG *p = (VAEncPictureParameterBufferJPEG *)data;
1768cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    DPY2INDEX(dpy);
1769cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang
1770cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    va_TraceMsg(idx, "VAEncPictureParameterBufferJPEG\n");
1771cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    va_TraceMsg(idx, "\treconstructed_picture = 0x%08x\n", p->reconstructed_picture);
1772cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    va_TraceMsg(idx, "\tcoded_buf = %08x\n", p->coded_buf);
1773cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    va_TraceMsg(idx, "\tpicture_width = %d\n", p->picture_width);
1774cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    va_TraceMsg(idx, "\tpicture_height = %d\n", p->picture_height);
1775cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    va_TraceMsg(idx, NULL);
1776cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang
1777cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    trace_context[idx].trace_codedbuf =  p->coded_buf;
1778cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang
1779cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    return;
1780cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang}
1781cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang
1782cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wangstatic void va_TraceVAEncQMatrixBufferJPEG(
1783cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    VADisplay dpy,
1784cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    VAContextID context,
1785cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    VABufferID buffer,
1786cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    VABufferType type,
1787cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    unsigned int size,
1788cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    unsigned int num_elements,
1789cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    void *data)
1790cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang{
1791cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    VAQMatrixBufferJPEG *p = (VAQMatrixBufferJPEG *)data;
1792cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    DPY2INDEX(dpy);
1793cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang
1794cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    va_TraceMsg(idx, "VAQMatrixBufferJPEG\n");
1795cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    va_TraceMsg(idx, "\tload_lum_quantiser_matrix = %d", p->load_lum_quantiser_matrix);
1796cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    if (p->load_lum_quantiser_matrix) {
1797cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang        int i;
1798cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang        for (i = 0; i < 64; i++) {
1799cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang            if ((i % 8) == 0)
1800cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang                va_TraceMsg(idx, "\n\t");
1801cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang            va_TraceMsg(idx, "\t0x%02x", p->lum_quantiser_matrix[i]);
1802cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang        }
1803cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang        va_TraceMsg(idx, "\n");
1804cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    }
1805cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    va_TraceMsg(idx, "\tload_chroma_quantiser_matrix = %08x\n", p->load_chroma_quantiser_matrix);
1806cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    if (p->load_chroma_quantiser_matrix) {
1807cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang        int i;
1808cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang        for (i = 0; i < 64; i++) {
1809cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang            if ((i % 8) == 0)
1810cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang                va_TraceMsg(idx, "\n\t");
1811cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang            va_TraceMsg(idx, "\t0x%02x", p->chroma_quantiser_matrix[i]);
1812cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang        }
1813cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang        va_TraceMsg(idx, "\n");
1814cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    }
1815cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang
1816cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    va_TraceMsg(idx, NULL);
1817cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang
1818cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    return;
1819cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang}
182050ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang
182150ce1dbe8a3402d56c94238710964507db7d99e1Kun Wangstatic void va_TraceH263Buf(
182250ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    VADisplay dpy,
182350ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    VAContextID context,
182450ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    VABufferID buffer,
182550ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    VABufferType type,
182650ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    unsigned int size,
182750ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    unsigned int num_elements,
182850ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    void *pbuf
182950ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang)
183050ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang{
183150ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    switch (type) {
1832e742a3c7d8b89b69f65326582ea549c13a75b350Austin Yuan    case VAPictureParameterBufferType:/* print MPEG4 buffer */
1833e742a3c7d8b89b69f65326582ea549c13a75b350Austin Yuan        va_TraceVAPictureParameterBufferMPEG4(dpy, context, buffer, type, size, num_elements, pbuf);
1834e742a3c7d8b89b69f65326582ea549c13a75b350Austin Yuan        break;
1835e742a3c7d8b89b69f65326582ea549c13a75b350Austin Yuan    case VAIQMatrixBufferType:/* print MPEG4 buffer */
1836e742a3c7d8b89b69f65326582ea549c13a75b350Austin Yuan        va_TraceVAIQMatrixBufferMPEG4(dpy, context, buffer, type, size, num_elements, pbuf);
1837e742a3c7d8b89b69f65326582ea549c13a75b350Austin Yuan        break;
1838e742a3c7d8b89b69f65326582ea549c13a75b350Austin Yuan    case VABitPlaneBufferType:/* print MPEG4 buffer */
1839e742a3c7d8b89b69f65326582ea549c13a75b350Austin Yuan        va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
1840e742a3c7d8b89b69f65326582ea549c13a75b350Austin Yuan        break;
184150ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    case VASliceGroupMapBufferType:
1842e742a3c7d8b89b69f65326582ea549c13a75b350Austin Yuan        break;
1843e742a3c7d8b89b69f65326582ea549c13a75b350Austin Yuan    case VASliceParameterBufferType:/* print MPEG4 buffer */
1844e742a3c7d8b89b69f65326582ea549c13a75b350Austin Yuan        va_TraceVASliceParameterBufferMPEG4(dpy, context, buffer, type, size, num_elements, pbuf);
1845e742a3c7d8b89b69f65326582ea549c13a75b350Austin Yuan        break;
184650ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    case VASliceDataBufferType:
1847e742a3c7d8b89b69f65326582ea549c13a75b350Austin Yuan        va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
1848e742a3c7d8b89b69f65326582ea549c13a75b350Austin Yuan        break;
184950ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    case VAMacroblockParameterBufferType:
1850e742a3c7d8b89b69f65326582ea549c13a75b350Austin Yuan        va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
1851e742a3c7d8b89b69f65326582ea549c13a75b350Austin Yuan        break;
185250ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    case VAResidualDataBufferType:
1853e742a3c7d8b89b69f65326582ea549c13a75b350Austin Yuan        va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
1854e742a3c7d8b89b69f65326582ea549c13a75b350Austin Yuan        break;
185550ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    case VADeblockingParameterBufferType:
1856e742a3c7d8b89b69f65326582ea549c13a75b350Austin Yuan        va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
1857e742a3c7d8b89b69f65326582ea549c13a75b350Austin Yuan        break;
185850ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    case VAImageBufferType:
1859e742a3c7d8b89b69f65326582ea549c13a75b350Austin Yuan        break;
186050ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    case VAProtectedSliceDataBufferType:
186150ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang        va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
186250ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang        break;
186350ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    case VAEncCodedBufferType:
186450ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang        break;
186550ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    case VAEncSequenceParameterBufferType:
186650ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang        va_TraceVAEncSequenceParameterBufferH263(dpy, context, buffer, type, size, num_elements, pbuf);
186750ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang        break;
186850ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    case VAEncPictureParameterBufferType:
186950ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang        va_TraceVAEncPictureParameterBufferH263(dpy, context, buffer, type, size, num_elements, pbuf);
187050ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang        break;
187150ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    case VAEncSliceParameterBufferType:
187250ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang        va_TraceVAEncSliceParameterBuffer(dpy, context, buffer, type, size, num_elements, pbuf);
187350ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang        break;
187450ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    default:
187550ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang        break;
187650ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    }
187750ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang}
187850ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang
1879cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang
1880cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wangstatic void va_TraceJPEGBuf(
1881cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    VADisplay dpy,
1882cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    VAContextID context,
1883cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    VABufferID buffer,
1884cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    VABufferType type,
1885cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    unsigned int size,
1886cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    unsigned int num_elements,
1887cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    void *pbuf
1888cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang)
1889cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang{
1890cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    switch (type) {
1891cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    case VAPictureParameterBufferType:/* print MPEG4 buffer */
1892cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    case VAIQMatrixBufferType:/* print MPEG4 buffer */
1893cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    case VABitPlaneBufferType:/* print MPEG4 buffer */
1894cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    case VASliceGroupMapBufferType:
1895cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    case VASliceParameterBufferType:/* print MPEG4 buffer */
1896cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    case VASliceDataBufferType:
1897cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    case VAMacroblockParameterBufferType:
1898cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    case VAResidualDataBufferType:
1899cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    case VADeblockingParameterBufferType:
1900cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    case VAImageBufferType:
1901cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    case VAProtectedSliceDataBufferType:
1902cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    case VAEncCodedBufferType:
1903cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    case VAEncSequenceParameterBufferType:
1904cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    case VAEncSliceParameterBufferType:
1905cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang        va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
1906cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang        break;
1907cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    case VAEncPictureParameterBufferType:
1908cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang        va_TraceVAEncPictureParameterBufferJPEG(dpy, context, buffer, type, size, num_elements, pbuf);
1909cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang        break;
1910cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    case VAQMatrixBufferType:
1911cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang        va_TraceVAEncQMatrixBufferJPEG(dpy, context, buffer, type, size, num_elements, pbuf);
1912cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang        break;
1913cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    default:
1914cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang        break;
1915cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    }
1916cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang}
1917cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang
1918901c77a7aa491f56b63af7b655b67439481e4177Fei Jiangstatic void va_TraceMPEG4Buf(
1919b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VADisplay dpy,
1920b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VAContextID context,
1921b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VABufferID buffer,
1922b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VABufferType type,
1923b0fac498ca4863166252f1268fda83394db54153Fei Jiang    unsigned int size,
1924b0fac498ca4863166252f1268fda83394db54153Fei Jiang    unsigned int num_elements,
1925b0fac498ca4863166252f1268fda83394db54153Fei Jiang    void *pbuf
1926b0fac498ca4863166252f1268fda83394db54153Fei Jiang)
1927b0fac498ca4863166252f1268fda83394db54153Fei Jiang{
1928b0fac498ca4863166252f1268fda83394db54153Fei Jiang    switch (type) {
1929b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAPictureParameterBufferType:
1930b0fac498ca4863166252f1268fda83394db54153Fei Jiang        va_TraceVAPictureParameterBufferMPEG4(dpy, context, buffer, type, size, num_elements, pbuf);
1931b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
1932b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAIQMatrixBufferType:
1933b0fac498ca4863166252f1268fda83394db54153Fei Jiang        va_TraceVAIQMatrixBufferMPEG4(dpy, context, buffer, type, size, num_elements, pbuf);
1934b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
1935b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VABitPlaneBufferType:
193621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
1937b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
1938b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VASliceGroupMapBufferType:
1939b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
1940b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VASliceParameterBufferType:
1941b0fac498ca4863166252f1268fda83394db54153Fei Jiang        va_TraceVASliceParameterBufferMPEG4(dpy, context, buffer, type, size, num_elements, pbuf);
1942b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
1943b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VASliceDataBufferType:
1944b0fac498ca4863166252f1268fda83394db54153Fei Jiang        va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
1945b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
1946b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAMacroblockParameterBufferType:
194721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
1948b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
1949b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAResidualDataBufferType:
195021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
1951b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
1952b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VADeblockingParameterBufferType:
195321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
1954b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
1955b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAImageBufferType:
1956b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
1957b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAProtectedSliceDataBufferType:
1958b0fac498ca4863166252f1268fda83394db54153Fei Jiang        va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
1959b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
1960b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAEncCodedBufferType:
1961b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
1962b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAEncSequenceParameterBufferType:
196350ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang        va_TraceVAEncSequenceParameterBufferMPEG4(dpy, context, buffer, type, size, num_elements, pbuf);
1964b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
1965b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAEncPictureParameterBufferType:
196650ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang        va_TraceVAEncPictureParameterBufferMPEG4(dpy, context, buffer, type, size, num_elements, pbuf);
1967b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
1968b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAEncSliceParameterBufferType:
196921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceVAEncSliceParameterBuffer(dpy, context, buffer, type, size, num_elements, pbuf);
1970b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
1971b0fac498ca4863166252f1268fda83394db54153Fei Jiang    default:
1972b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
1973b0fac498ca4863166252f1268fda83394db54153Fei Jiang    }
1974b0fac498ca4863166252f1268fda83394db54153Fei Jiang}
1975b0fac498ca4863166252f1268fda83394db54153Fei Jiang
1976b0fac498ca4863166252f1268fda83394db54153Fei Jiang
1977901c77a7aa491f56b63af7b655b67439481e4177Fei Jiangstatic void va_TraceH264Buf(
1978b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VADisplay dpy,
1979b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VAContextID context,
1980b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VABufferID buffer,
1981b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VABufferType type,
1982b0fac498ca4863166252f1268fda83394db54153Fei Jiang    unsigned int size,
1983b0fac498ca4863166252f1268fda83394db54153Fei Jiang    unsigned int num_elements,
1984b0fac498ca4863166252f1268fda83394db54153Fei Jiang    void *pbuf
1985b0fac498ca4863166252f1268fda83394db54153Fei Jiang)
1986b0fac498ca4863166252f1268fda83394db54153Fei Jiang{
198721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    DPY2INDEX(dpy);
198821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
1989b0fac498ca4863166252f1268fda83394db54153Fei Jiang    switch (type) {
1990b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAPictureParameterBufferType:
1991901c77a7aa491f56b63af7b655b67439481e4177Fei Jiang        va_TraceVAPictureParameterBufferH264(dpy, context, buffer, type, size, num_elements, pbuf);
1992b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
1993b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAIQMatrixBufferType:
1994b0fac498ca4863166252f1268fda83394db54153Fei Jiang        va_TraceVAIQMatrixBufferH264(dpy, context, buffer, type, size, num_elements, pbuf);
1995b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
1996b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VABitPlaneBufferType:
199721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
1998b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
1999b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VASliceGroupMapBufferType:
200021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
2001b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
2002b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VASliceParameterBufferType:
2003b0fac498ca4863166252f1268fda83394db54153Fei Jiang        va_TraceVASliceParameterBufferH264(dpy, context, buffer, type, size, num_elements, pbuf);
2004b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
2005b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VASliceDataBufferType:
200621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceVABuffers(dpy, context, buffer, type, trace_context[idx].trace_slice_size, num_elements, pbuf);
2007b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
2008b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAMacroblockParameterBufferType:
200921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
2010b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
2011b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAResidualDataBufferType:
201221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
2013b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
2014b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VADeblockingParameterBufferType:
201521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
2016b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
2017b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAImageBufferType:
2018b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
2019b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAProtectedSliceDataBufferType:
2020b0fac498ca4863166252f1268fda83394db54153Fei Jiang        va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
2021b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
2022b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAEncCodedBufferType:
2023b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
2024b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAEncSequenceParameterBufferType:
202521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceVAEncSequenceParameterBufferH264(dpy, context, buffer, type, size, num_elements, pbuf);
2026b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
2027b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAEncPictureParameterBufferType:
202821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceVAEncPictureParameterBufferH264(dpy, context, buffer, type, size, num_elements, pbuf);
2029b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
2030b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAEncSliceParameterBufferType:
20314b672db6ee89c9846451bbab23cf18e93c4260b2hding        va_TraceVAEncSliceParameterBufferH264(dpy, context, buffer, type, size, num_elements, pbuf);
203221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        break;
203321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    case VAEncMiscParameterBufferType:
203421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceVAEncMiscParameterBuffer(dpy, context, buffer, type, size, num_elements, pbuf);
2035b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
2036b0fac498ca4863166252f1268fda83394db54153Fei Jiang    default:
2037b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
2038b0fac498ca4863166252f1268fda83394db54153Fei Jiang    }
2039b0fac498ca4863166252f1268fda83394db54153Fei Jiang}
2040b0fac498ca4863166252f1268fda83394db54153Fei Jiang
2041b0fac498ca4863166252f1268fda83394db54153Fei Jiang
2042901c77a7aa491f56b63af7b655b67439481e4177Fei Jiangstatic void va_TraceVC1Buf(
2043b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VADisplay dpy,
2044b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VAContextID context,
2045b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VABufferID buffer,
2046b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VABufferType type,
2047b0fac498ca4863166252f1268fda83394db54153Fei Jiang    unsigned int size,
2048b0fac498ca4863166252f1268fda83394db54153Fei Jiang    unsigned int num_elements,
2049b0fac498ca4863166252f1268fda83394db54153Fei Jiang    void *pbuf
2050b0fac498ca4863166252f1268fda83394db54153Fei Jiang)
2051b0fac498ca4863166252f1268fda83394db54153Fei Jiang{
205221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    DPY2INDEX(dpy);
205321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
2054b0fac498ca4863166252f1268fda83394db54153Fei Jiang    switch (type) {
2055b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAPictureParameterBufferType:
2056b0fac498ca4863166252f1268fda83394db54153Fei Jiang        va_TraceVAPictureParameterBufferVC1(dpy, context, buffer, type, size, num_elements, pbuf);
2057b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
2058b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAIQMatrixBufferType:
2059b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
2060b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VABitPlaneBufferType:
2061b0fac498ca4863166252f1268fda83394db54153Fei Jiang        va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
2062b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
2063b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VASliceGroupMapBufferType:
206421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
2065b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
2066b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VASliceParameterBufferType:
2067b0fac498ca4863166252f1268fda83394db54153Fei Jiang        va_TraceVASliceParameterBufferVC1(dpy, context, buffer, type, size, num_elements, pbuf);
2068b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
2069b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VASliceDataBufferType:
207021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceVABuffers(dpy, context, buffer, type, trace_context[idx].trace_slice_size, num_elements, pbuf);
2071b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
2072b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAMacroblockParameterBufferType:
207321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
2074b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
2075b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAResidualDataBufferType:
207621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
2077b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
2078b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VADeblockingParameterBufferType:
207921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
2080b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
2081b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAImageBufferType:
2082b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
2083b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAProtectedSliceDataBufferType:
2084b0fac498ca4863166252f1268fda83394db54153Fei Jiang        va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
2085b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
2086b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAEncCodedBufferType:
2087b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
2088b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAEncSequenceParameterBufferType:
208921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
2090b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
2091b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAEncPictureParameterBufferType:
209221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
2093b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
2094b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAEncSliceParameterBufferType:
209521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
2096b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
2097b0fac498ca4863166252f1268fda83394db54153Fei Jiang    default:
2098b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
2099b0fac498ca4863166252f1268fda83394db54153Fei Jiang    }
2100b0fac498ca4863166252f1268fda83394db54153Fei Jiang}
2101b0fac498ca4863166252f1268fda83394db54153Fei Jiang
2102293abef4f8172cc061d26f9d909c281b4190b514Bruce Bearevoid va_TraceRenderPicture(
2103b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VADisplay dpy,
2104b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VAContextID context,
2105b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VABufferID *buffers,
2106b0fac498ca4863166252f1268fda83394db54153Fei Jiang    int num_buffers
2107b0fac498ca4863166252f1268fda83394db54153Fei Jiang)
2108b0fac498ca4863166252f1268fda83394db54153Fei Jiang{
2109b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VABufferType type;
2110b0fac498ca4863166252f1268fda83394db54153Fei Jiang    unsigned int size;
2111b0fac498ca4863166252f1268fda83394db54153Fei Jiang    unsigned int num_elements;
2112b0fac498ca4863166252f1268fda83394db54153Fei Jiang    int i;
211321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    DPY2INDEX(dpy);
2114b0fac498ca4863166252f1268fda83394db54153Fei Jiang
211521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    TRACE_FUNCNAME(idx);
211621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
211721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tcontext = 0x%08x\n", context);
211821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tnum_buffers = %d\n", num_buffers);
2119b0fac498ca4863166252f1268fda83394db54153Fei Jiang    for (i = 0; i < num_buffers; i++) {
21205b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang        unsigned char *pbuf;
212121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        unsigned int j;
212221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
2123b0fac498ca4863166252f1268fda83394db54153Fei Jiang        /* get buffer type information */
2124b0fac498ca4863166252f1268fda83394db54153Fei Jiang        vaBufferInfo(dpy, context, buffers[i], &type, &size, &num_elements);
212572b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang
212672b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang        va_TraceMsg(idx, "\t---------------------------\n");
212721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceMsg(idx, "\tbuffers[%d] = 0x%08x\n", i, buffers[i]);
212821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceMsg(idx, "\t  type = %s\n", buffer_type_to_string(type));
212921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceMsg(idx, "\t  size = %d\n", size);
213021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceMsg(idx, "\t  num_elements = %d\n", num_elements);
2131b0fac498ca4863166252f1268fda83394db54153Fei Jiang
21325b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang        vaMapBuffer(dpy, buffers[i], (void **)&pbuf);
2133b0fac498ca4863166252f1268fda83394db54153Fei Jiang
213421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        switch (trace_context[idx].trace_profile) {
2135b0fac498ca4863166252f1268fda83394db54153Fei Jiang        case VAProfileMPEG2Simple:
2136b0fac498ca4863166252f1268fda83394db54153Fei Jiang        case VAProfileMPEG2Main:
213721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan            for (j=0; j<num_elements; j++) {
213850ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang                va_TraceMsg(idx, "\t---------------------------\n", j);
213972b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang                va_TraceMsg(idx, "\telement[%d] = ", j);
214021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan                va_TraceMPEG2Buf(dpy, context, buffers[i], type, size, num_elements, pbuf + size*j);
214121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan            }
2142b0fac498ca4863166252f1268fda83394db54153Fei Jiang            break;
2143b0fac498ca4863166252f1268fda83394db54153Fei Jiang        case VAProfileMPEG4Simple:
2144b0fac498ca4863166252f1268fda83394db54153Fei Jiang        case VAProfileMPEG4AdvancedSimple:
2145b0fac498ca4863166252f1268fda83394db54153Fei Jiang        case VAProfileMPEG4Main:
214621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan            for (j=0; j<num_elements; j++) {
214750ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang                va_TraceMsg(idx, "\t---------------------------\n", j);
214872b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang                va_TraceMsg(idx, "\telement[%d] = ", j);
214921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan                va_TraceMPEG4Buf(dpy, context, buffers[i], type, size, num_elements, pbuf + size*j);
215021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan            }
2151b0fac498ca4863166252f1268fda83394db54153Fei Jiang            break;
2152b0fac498ca4863166252f1268fda83394db54153Fei Jiang        case VAProfileH264Baseline:
2153b0fac498ca4863166252f1268fda83394db54153Fei Jiang        case VAProfileH264Main:
2154b0fac498ca4863166252f1268fda83394db54153Fei Jiang        case VAProfileH264High:
2155cceaa0568f77a7452857559614100b71fb36ee3awangkun        case VAProfileH264ConstrainedBaseline:
215621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan            for (j=0; j<num_elements; j++) {
215772b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang                va_TraceMsg(idx, "\t---------------------------\n", j);
215872b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang                va_TraceMsg(idx, "\telement[%d] = ", j);
215972b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang
216021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan                va_TraceH264Buf(dpy, context, buffers[i], type, size, num_elements, pbuf + size*j);
216121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan            }
2162b0fac498ca4863166252f1268fda83394db54153Fei Jiang            break;
2163b0fac498ca4863166252f1268fda83394db54153Fei Jiang        case VAProfileVC1Simple:
2164b0fac498ca4863166252f1268fda83394db54153Fei Jiang        case VAProfileVC1Main:
2165b0fac498ca4863166252f1268fda83394db54153Fei Jiang        case VAProfileVC1Advanced:
216621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan            for (j=0; j<num_elements; j++) {
216772b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang                va_TraceMsg(idx, "\t---------------------------\n", j);
216872b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang                va_TraceMsg(idx, "\telement[%d] = ", j);
216972b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang
217021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan                va_TraceVC1Buf(dpy, context, buffers[i], type, size, num_elements, pbuf + size*j);
217121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan            }
2172b0fac498ca4863166252f1268fda83394db54153Fei Jiang            break;
2173b0fac498ca4863166252f1268fda83394db54153Fei Jiang        case VAProfileH263Baseline:
217421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan            for (j=0; j<num_elements; j++) {
217572b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang                va_TraceMsg(idx, "\t---------------------------\n", j);
217672b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang                va_TraceMsg(idx, "\telement[%d] = ", j);
217772b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang
2178e742a3c7d8b89b69f65326582ea549c13a75b350Austin Yuan                va_TraceH263Buf(dpy, context, buffers[i], type, size, num_elements, pbuf + size*j);
217921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan            }
218021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan            break;
2181cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang        case VAProfileJPEGBaseline:
2182cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang            for (j=0; j<num_elements; j++) {
2183cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang                va_TraceMsg(idx, "\t---------------------------\n", j);
2184cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang                va_TraceMsg(idx, "\telement[%d] = ", j);
2185cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang
2186cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang                va_TraceJPEGBuf(dpy, context, buffers[i], type, size, num_elements, pbuf + size*j);
2187cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang            }
2188cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang            break;
218921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        default:
2190b0fac498ca4863166252f1268fda83394db54153Fei Jiang            break;
2191b0fac498ca4863166252f1268fda83394db54153Fei Jiang        }
2192b0fac498ca4863166252f1268fda83394db54153Fei Jiang
2193b0fac498ca4863166252f1268fda83394db54153Fei Jiang        vaUnmapBuffer(dpy, buffers[i]);
2194b0fac498ca4863166252f1268fda83394db54153Fei Jiang    }
219536bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang
219636bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceMsg(idx, NULL);
2197b0fac498ca4863166252f1268fda83394db54153Fei Jiang}
2198b0fac498ca4863166252f1268fda83394db54153Fei Jiang
2199293abef4f8172cc061d26f9d909c281b4190b514Bruce Bearevoid va_TraceEndPicture(
2200b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VADisplay dpy,
22015b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang    VAContextID context,
22025b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang    int endpic_done
2203b0fac498ca4863166252f1268fda83394db54153Fei Jiang)
2204b0fac498ca4863166252f1268fda83394db54153Fei Jiang{
22055b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang    int encode, decode, jpeg;
220621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    DPY2INDEX(dpy);
220721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
220821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    TRACE_FUNCNAME(idx);
2209b0fac498ca4863166252f1268fda83394db54153Fei Jiang
2210eb172ee78b4442658da7b4c7df17a9287d638089Austin Yuan    va_TraceMsg(idx, "\tcontext = 0x%08x\n", context);
2211eb172ee78b4442658da7b4c7df17a9287d638089Austin Yuan    va_TraceMsg(idx, "\trender_targets = 0x%08x\n", trace_context[idx].trace_rendertarget);
22125b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang
22135b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang    encode = (trace_context[idx].trace_entrypoint == VAEntrypointEncSlice) &&
22145b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang        (trace_flag & VA_TRACE_FLAG_SURFACE_ENCODE);
22155b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang    decode = (trace_context[idx].trace_entrypoint == VAEntrypointVLD) &&
22165b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang        (trace_flag & VA_TRACE_FLAG_SURFACE_DECODE);
22175b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang    jpeg = (trace_context[idx].trace_entrypoint == VAEntrypointEncPicture) &&
22185b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang        (trace_flag & VA_TRACE_FLAG_SURFACE_JPEG);
2219eb172ee78b4442658da7b4c7df17a9287d638089Austin Yuan
2220eb172ee78b4442658da7b4c7df17a9287d638089Austin Yuan    /* trace encode source surface, can do it before HW completes rendering */
2221eb172ee78b4442658da7b4c7df17a9287d638089Austin Yuan    if (encode || jpeg)
22225b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang        va_TraceSurface(dpy);
22235b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang
2224eb172ee78b4442658da7b4c7df17a9287d638089Austin Yuan    /* trace coded buffer, do it after HW completes rendering */
2225eb172ee78b4442658da7b4c7df17a9287d638089Austin Yuan    if ((encode || jpeg) && (trace_flag & VA_TRACE_FLAG_CODEDBUF)) {
222621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        vaSyncSurface(dpy, trace_context[idx].trace_rendertarget);
222721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceCodedBuf(dpy);
222821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    }
2229b0fac498ca4863166252f1268fda83394db54153Fei Jiang
2230eb172ee78b4442658da7b4c7df17a9287d638089Austin Yuan    /* trace decoded surface, do it after HW completes rendering */
2231eb172ee78b4442658da7b4c7df17a9287d638089Austin Yuan    if (decode) {
223221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        vaSyncSurface(dpy, trace_context[idx].trace_rendertarget);
223321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceSurface(dpy);
2234901c77a7aa491f56b63af7b655b67439481e4177Fei Jiang    }
2235eb172ee78b4442658da7b4c7df17a9287d638089Austin Yuan
223636bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceMsg(idx, NULL);
223721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan}
2238b0fac498ca4863166252f1268fda83394db54153Fei Jiang
2239cceaa0568f77a7452857559614100b71fb36ee3awangkunvoid va_TraceSyncSurface(
2240cceaa0568f77a7452857559614100b71fb36ee3awangkun    VADisplay dpy,
2241cceaa0568f77a7452857559614100b71fb36ee3awangkun    VASurfaceID render_target
2242cceaa0568f77a7452857559614100b71fb36ee3awangkun)
2243cceaa0568f77a7452857559614100b71fb36ee3awangkun{
2244cceaa0568f77a7452857559614100b71fb36ee3awangkun    DPY2INDEX(dpy);
2245cceaa0568f77a7452857559614100b71fb36ee3awangkun
2246cceaa0568f77a7452857559614100b71fb36ee3awangkun    TRACE_FUNCNAME(idx);
2247cceaa0568f77a7452857559614100b71fb36ee3awangkun
2248cceaa0568f77a7452857559614100b71fb36ee3awangkun    va_TraceMsg(idx, "\trender_target = 0x%08x\n", render_target);
224936bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceMsg(idx, NULL);
2250cceaa0568f77a7452857559614100b71fb36ee3awangkun}
2251cceaa0568f77a7452857559614100b71fb36ee3awangkun
2252cceaa0568f77a7452857559614100b71fb36ee3awangkun
2253cceaa0568f77a7452857559614100b71fb36ee3awangkunvoid va_TraceQuerySurfaceStatus(
2254cceaa0568f77a7452857559614100b71fb36ee3awangkun    VADisplay dpy,
2255cceaa0568f77a7452857559614100b71fb36ee3awangkun    VASurfaceID render_target,
225636bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    VASurfaceStatus *status    /* out */
2257cceaa0568f77a7452857559614100b71fb36ee3awangkun)
2258cceaa0568f77a7452857559614100b71fb36ee3awangkun{
2259cceaa0568f77a7452857559614100b71fb36ee3awangkun    DPY2INDEX(dpy);
2260cceaa0568f77a7452857559614100b71fb36ee3awangkun
2261cceaa0568f77a7452857559614100b71fb36ee3awangkun    TRACE_FUNCNAME(idx);
2262cceaa0568f77a7452857559614100b71fb36ee3awangkun
2263cceaa0568f77a7452857559614100b71fb36ee3awangkun    va_TraceMsg(idx, "\trender_target = 0x%08x\n", render_target);
2264cceaa0568f77a7452857559614100b71fb36ee3awangkun    va_TraceMsg(idx, "\tstatus = 0x%08x\n", *status);
226536bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceMsg(idx, NULL);
2266cceaa0568f77a7452857559614100b71fb36ee3awangkun}
2267cceaa0568f77a7452857559614100b71fb36ee3awangkun
2268cceaa0568f77a7452857559614100b71fb36ee3awangkun
2269cceaa0568f77a7452857559614100b71fb36ee3awangkunvoid va_TraceQuerySurfaceError(
227036bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    VADisplay dpy,
227136bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    VASurfaceID surface,
227236bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    VAStatus error_status,
227336bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    void **error_info       /*out*/
2274cceaa0568f77a7452857559614100b71fb36ee3awangkun)
2275cceaa0568f77a7452857559614100b71fb36ee3awangkun{
2276cceaa0568f77a7452857559614100b71fb36ee3awangkun    DPY2INDEX(dpy);
2277cceaa0568f77a7452857559614100b71fb36ee3awangkun
2278cceaa0568f77a7452857559614100b71fb36ee3awangkun    TRACE_FUNCNAME(idx);
2279cceaa0568f77a7452857559614100b71fb36ee3awangkun    va_TraceMsg(idx, "\tsurface = 0x%08x\n", surface);
2280cceaa0568f77a7452857559614100b71fb36ee3awangkun    va_TraceMsg(idx, "\terror_status = 0x%08x\n", error_status);
2281cceaa0568f77a7452857559614100b71fb36ee3awangkun    if (error_status == VA_STATUS_ERROR_DECODING_ERROR) {
228236bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang        VASurfaceDecodeMBErrors *p = *error_info;
228336bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang        while (p->status != -1) {
228436bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang            va_TraceMsg(idx, "\t\tstatus = %d\n", p->status);
228536bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang            va_TraceMsg(idx, "\t\tstart_mb = %d\n", p->start_mb);
228636bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang            va_TraceMsg(idx, "\t\tend_mb = %d\n", p->end_mb);
228736bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang            p++; /* next error record */
228836bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang        }
2289cceaa0568f77a7452857559614100b71fb36ee3awangkun    }
229036bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceMsg(idx, NULL);
2291cceaa0568f77a7452857559614100b71fb36ee3awangkun}
2292b0fac498ca4863166252f1268fda83394db54153Fei Jiang
229321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuanvoid va_TraceMaxNumDisplayAttributes (
229421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    VADisplay dpy,
229521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    int number
229621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan)
229721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan{
229821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    DPY2INDEX(dpy);
2299b0fac498ca4863166252f1268fda83394db54153Fei Jiang
230021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    TRACE_FUNCNAME(idx);
230121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
2302cceaa0568f77a7452857559614100b71fb36ee3awangkun    va_TraceMsg(idx, "\tmax_display_attributes = %d\n", number);
230336bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceMsg(idx, NULL);
230421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan}
230521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
230621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuanvoid va_TraceQueryDisplayAttributes (
230721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    VADisplay dpy,
230836bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    VADisplayAttribute *attr_list,    /* out */
230936bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    int *num_attributes               /* out */
231021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan)
231121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan{
231221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    int i;
231321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
231421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    DPY2INDEX(dpy);
231521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
231621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tnum_attributes = %d\n", *num_attributes);
231721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
231821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    for (i=0; i<*num_attributes; i++) {
231921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceMsg(idx, "\tattr_list[%d] =\n");
232021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceMsg(idx, "\t  typ = 0x%08x\n", attr_list[i].type);
232121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceMsg(idx, "\t  min_value = %d\n", attr_list[i].min_value);
232221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceMsg(idx, "\t  max_value = %d\n", attr_list[i].max_value);
232321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceMsg(idx, "\t  value = %d\n", attr_list[i].value);
232421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceMsg(idx, "\t  flags = %d\n", attr_list[i].flags);
2325b0fac498ca4863166252f1268fda83394db54153Fei Jiang    }
232636bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceMsg(idx, NULL);
232721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan}
2328b0fac498ca4863166252f1268fda83394db54153Fei Jiang
2329b0fac498ca4863166252f1268fda83394db54153Fei Jiang
233021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuanstatic void va_TraceDisplayAttributes (
233121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    VADisplay dpy,
233221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    VADisplayAttribute *attr_list,
233321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    int num_attributes
233421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan)
233521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan{
233621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    int i;
233721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
233821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    DPY2INDEX(dpy);
233921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
234021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tnum_attributes = %d\n", num_attributes);
234121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    for (i=0; i<num_attributes; i++) {
234221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceMsg(idx, "\tattr_list[%d] =\n");
234321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceMsg(idx, "\t  typ = 0x%08x\n", attr_list[i].type);
234421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceMsg(idx, "\t  min_value = %d\n", attr_list[i].min_value);
234521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceMsg(idx, "\t  max_value = %d\n", attr_list[i].max_value);
234621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceMsg(idx, "\t  value = %d\n", attr_list[i].value);
234721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceMsg(idx, "\t  flags = %d\n", attr_list[i].flags);
2348b0fac498ca4863166252f1268fda83394db54153Fei Jiang    }
234936bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceMsg(idx, NULL);
235021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan}
235121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
235221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
235321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuanvoid va_TraceGetDisplayAttributes (
235421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    VADisplay dpy,
235521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    VADisplayAttribute *attr_list,
235621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    int num_attributes
235721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan)
235821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan{
235921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    DPY2INDEX(dpy);
2360901c77a7aa491f56b63af7b655b67439481e4177Fei Jiang
236121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    TRACE_FUNCNAME(idx);
236221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
236321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceDisplayAttributes (dpy, attr_list, num_attributes);
236421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan}
236521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
236621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuanvoid va_TraceSetDisplayAttributes (
236721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    VADisplay dpy,
236821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    VADisplayAttribute *attr_list,
236921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    int num_attributes
237021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan)
237121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan{
237221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    DPY2INDEX(dpy);
237321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
237421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    TRACE_FUNCNAME(idx);
237521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
237621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceDisplayAttributes (dpy, attr_list, num_attributes);
237721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan}
237821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
237921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
238021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuanvoid va_TracePutSurface (
238121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    VADisplay dpy,
238221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    VASurfaceID surface,
238321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    void *draw, /* the target Drawable */
238421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    short srcx,
238521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    short srcy,
238621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    unsigned short srcw,
238721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    unsigned short srch,
238821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    short destx,
238921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    short desty,
239021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    unsigned short destw,
239121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    unsigned short desth,
239221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    VARectangle *cliprects, /* client supplied clip list */
239321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    unsigned int number_cliprects, /* number of clip rects in the clip list */
239421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    unsigned int flags /* de-interlacing flags */
239521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan)
239621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan{
239721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    DPY2INDEX(dpy);
239821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
239921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    TRACE_FUNCNAME(idx);
240021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
240121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tsurface = 0x%08x\n", surface);
240221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tdraw = 0x%08x\n", draw);
2403942aa8ad7f4275a637fb2c1e5edfab686110cc52Kun Wang    va_TraceMsg(idx, "\tsrcx = %d\n", srcx);
2404942aa8ad7f4275a637fb2c1e5edfab686110cc52Kun Wang    va_TraceMsg(idx, "\tsrcy = %d\n", srcy);
2405942aa8ad7f4275a637fb2c1e5edfab686110cc52Kun Wang    va_TraceMsg(idx, "\tsrcw = %d\n", srcw);
2406942aa8ad7f4275a637fb2c1e5edfab686110cc52Kun Wang    va_TraceMsg(idx, "\tsrch = %d\n", srch);
2407942aa8ad7f4275a637fb2c1e5edfab686110cc52Kun Wang    va_TraceMsg(idx, "\tdestx = %d\n", destx);
2408942aa8ad7f4275a637fb2c1e5edfab686110cc52Kun Wang    va_TraceMsg(idx, "\tdesty = %d\n", desty);
240921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tdestw = %d\n", destw);
241021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tdesth = %d\n", desth);
241121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tcliprects = 0x%08x\n", cliprects);
241221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tnumber_cliprects = %d\n", number_cliprects);
241321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tflags = 0x%08x\n", flags);
241436bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceMsg(idx, NULL);
2415b0fac498ca4863166252f1268fda83394db54153Fei Jiang}
2416