va_trace.c revision 6044ab9a375eb73b08f45d87966652f98f918668
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"
319992891b62398a80bd0867f8d167c0faa49861fdCheng Yao#include "va_dec_jpeg.h"
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{
355409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan    unsigned int i, j;
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;
367409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan    unsigned char check_sum = 0;
36821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    DPY2INDEX(dpy);
3695b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang
37021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "==========dump surface data in file %s\n", trace_context[idx].trace_surface_fn);
37121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
37221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    if ((file_size(trace_context[idx].trace_fp_surface) >= trace_logsize)) {
37321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceMsg(idx, "==========truncate file %s\n", trace_context[idx].trace_surface_fn);
37421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        truncate_file(trace_context[idx].trace_fp_surface);
37521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    }
37636bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceMsg(idx, NULL);
37721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
37810965d59ea630e8a6856845faffb8e0f39b159a3Kun Wang    va_status = vaLockSurface(
37910965d59ea630e8a6856845faffb8e0f39b159a3Kun Wang        dpy,
38010965d59ea630e8a6856845faffb8e0f39b159a3Kun Wang        trace_context[idx].trace_rendertarget,
38110965d59ea630e8a6856845faffb8e0f39b159a3Kun Wang        &fourcc,
38210965d59ea630e8a6856845faffb8e0f39b159a3Kun Wang        &luma_stride, &chroma_u_stride, &chroma_v_stride,
38310965d59ea630e8a6856845faffb8e0f39b159a3Kun Wang        &luma_offset, &chroma_u_offset, &chroma_v_offset,
38410965d59ea630e8a6856845faffb8e0f39b159a3Kun Wang        &buffer_name, &buffer);
38521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
38621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    if (va_status != VA_STATUS_SUCCESS) {
38721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceMsg(idx, "Error:vaLockSurface failed\n");
38821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        return;
38921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    }
39021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
39121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tfourcc = 0x%08x\n", fourcc);
39221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\twidth = %d\n", trace_context[idx].trace_frame_width);
39321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\theight = %d\n", trace_context[idx].trace_frame_height);
39421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tluma_stride = %d\n", luma_stride);
39521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tchroma_u_stride = %d\n", chroma_u_stride);
39621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tchroma_v_stride = %d\n", chroma_v_stride);
39721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tluma_offset = %d\n", luma_offset);
39821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tchroma_u_offset = %d\n", chroma_u_offset);
39921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tchroma_v_offset = %d\n", chroma_v_offset);
40021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
40110965d59ea630e8a6856845faffb8e0f39b159a3Kun Wang    if (buffer == NULL) {
40221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceMsg(idx, "Error:vaLockSurface return NULL buffer\n");
40336bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang        va_TraceMsg(idx, NULL);
40436bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang
40521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        vaUnlockSurface(dpy, trace_context[idx].trace_rendertarget);
40621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        return;
40721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    }
40821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tbuffer location = 0x%08x\n", buffer);
40936bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceMsg(idx, NULL);
41021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
41110965d59ea630e8a6856845faffb8e0f39b159a3Kun Wang    Y_data = (unsigned char*)buffer;
41210965d59ea630e8a6856845faffb8e0f39b159a3Kun Wang    UV_data = (unsigned char*)buffer + chroma_u_offset;
41321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
414eb172ee78b4442658da7b4c7df17a9287d638089Austin Yuan    tmp = Y_data + luma_stride * trace_context[idx].trace_surface_yoff;
415eb172ee78b4442658da7b4c7df17a9287d638089Austin Yuan    for (i=0; i<trace_context[idx].trace_surface_height; i++) {
41621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        if (trace_context[idx].trace_fp_surface)
417eb172ee78b4442658da7b4c7df17a9287d638089Austin Yuan            fwrite(tmp + trace_context[idx].trace_surface_xoff,
418eb172ee78b4442658da7b4c7df17a9287d638089Austin Yuan                   trace_context[idx].trace_surface_width,
419eb172ee78b4442658da7b4c7df17a9287d638089Austin Yuan                   1, trace_context[idx].trace_fp_surface);
42021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
421eb172ee78b4442658da7b4c7df17a9287d638089Austin Yuan        tmp += luma_stride;
42221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    }
423eb172ee78b4442658da7b4c7df17a9287d638089Austin Yuan    tmp = UV_data + chroma_u_stride * trace_context[idx].trace_surface_yoff;
42421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    if (fourcc == VA_FOURCC_NV12) {
425eb172ee78b4442658da7b4c7df17a9287d638089Austin Yuan        for (i=0; i<trace_context[idx].trace_surface_height/2; i++) {
42621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan            if (trace_context[idx].trace_fp_surface)
427eb172ee78b4442658da7b4c7df17a9287d638089Austin Yuan                fwrite(tmp + trace_context[idx].trace_surface_xoff,
428eb172ee78b4442658da7b4c7df17a9287d638089Austin Yuan                       trace_context[idx].trace_surface_width,
429eb172ee78b4442658da7b4c7df17a9287d638089Austin Yuan                       1, trace_context[idx].trace_fp_surface);
43021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
431eb172ee78b4442658da7b4c7df17a9287d638089Austin Yuan            tmp += chroma_u_stride;
43221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        }
43321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    }
43421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
43521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    vaUnlockSurface(dpy, trace_context[idx].trace_rendertarget);
43621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
43736bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceMsg(idx, NULL);
43821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan}
43921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
440942aa8ad7f4275a637fb2c1e5edfab686110cc52Kun Wang
44110965d59ea630e8a6856845faffb8e0f39b159a3Kun Wangvoid va_TraceInitialize (
442942aa8ad7f4275a637fb2c1e5edfab686110cc52Kun Wang    VADisplay dpy,
44336bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    int *major_version,     /* out */
44436bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    int *minor_version      /* out */
445942aa8ad7f4275a637fb2c1e5edfab686110cc52Kun Wang)
446942aa8ad7f4275a637fb2c1e5edfab686110cc52Kun Wang{
44710965d59ea630e8a6856845faffb8e0f39b159a3Kun Wang    DPY2INDEX(dpy);
448942aa8ad7f4275a637fb2c1e5edfab686110cc52Kun Wang    TRACE_FUNCNAME(idx);
449942aa8ad7f4275a637fb2c1e5edfab686110cc52Kun Wang}
450942aa8ad7f4275a637fb2c1e5edfab686110cc52Kun Wang
45110965d59ea630e8a6856845faffb8e0f39b159a3Kun Wangvoid va_TraceTerminate (
452942aa8ad7f4275a637fb2c1e5edfab686110cc52Kun Wang    VADisplay dpy
453942aa8ad7f4275a637fb2c1e5edfab686110cc52Kun Wang)
454942aa8ad7f4275a637fb2c1e5edfab686110cc52Kun Wang{
45510965d59ea630e8a6856845faffb8e0f39b159a3Kun Wang    DPY2INDEX(dpy);
456942aa8ad7f4275a637fb2c1e5edfab686110cc52Kun Wang    TRACE_FUNCNAME(idx);
457942aa8ad7f4275a637fb2c1e5edfab686110cc52Kun Wang}
458942aa8ad7f4275a637fb2c1e5edfab686110cc52Kun Wang
459942aa8ad7f4275a637fb2c1e5edfab686110cc52Kun Wang
460293abef4f8172cc061d26f9d909c281b4190b514Bruce Bearevoid va_TraceCreateConfig(
461b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VADisplay dpy,
462b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VAProfile profile,
463b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VAEntrypoint entrypoint,
464b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VAConfigAttrib *attrib_list,
465b0fac498ca4863166252f1268fda83394db54153Fei Jiang    int num_attribs,
466b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VAConfigID *config_id /* out */
46721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan)
468b0fac498ca4863166252f1268fda83394db54153Fei Jiang{
469b0fac498ca4863166252f1268fda83394db54153Fei Jiang    int i;
4705b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang    int encode, decode, jpeg;
47121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    DPY2INDEX(dpy);
47221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
47321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    TRACE_FUNCNAME(idx);
474b0fac498ca4863166252f1268fda83394db54153Fei Jiang
47521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tprofile = %d\n", profile);
47621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tentrypoint = %d\n", entrypoint);
47721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tnum_attribs = %d\n", num_attribs);
478b0fac498ca4863166252f1268fda83394db54153Fei Jiang    for (i = 0; i < num_attribs; i++) {
47936bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang        va_TraceMsg(idx, "\t\tattrib_list[%d].type = 0x%08x\n", i, attrib_list[i].type);
48021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceMsg(idx, "\t\tattrib_list[%d].value = 0x%08x\n", i, attrib_list[i].value);
481b0fac498ca4863166252f1268fda83394db54153Fei Jiang    }
48236bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceMsg(idx, NULL);
483b0fac498ca4863166252f1268fda83394db54153Fei Jiang
48421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    trace_context[idx].trace_profile = profile;
48521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    trace_context[idx].trace_entrypoint = entrypoint;
4865b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang
4875b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang    /* avoid to create so many empty files */
4885b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang    encode = (trace_context[idx].trace_entrypoint == VAEntrypointEncSlice);
4895b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang    decode = (trace_context[idx].trace_entrypoint == VAEntrypointVLD);
4905b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang    jpeg = (trace_context[idx].trace_entrypoint == VAEntrypointEncPicture);
4915b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang    if ((encode && (trace_flag & VA_TRACE_FLAG_SURFACE_ENCODE)) ||
4925b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang        (decode && (trace_flag & VA_TRACE_FLAG_SURFACE_DECODE)) ||
4935b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang        (jpeg && (trace_flag & VA_TRACE_FLAG_SURFACE_JPEG))) {
4945b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang        FILE *tmp = fopen(trace_context[idx].trace_surface_fn, "w");
4955b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang
4965b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang        if (tmp)
4975b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang            trace_context[idx].trace_fp_surface = tmp;
4985b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang        else {
4995b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang            va_errorMessage("Open file %s failed (%s)\n",
5005b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang                            trace_context[idx].trace_surface_fn,
5015b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang                            strerror(errno));
5025b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang            trace_context[idx].trace_fp_surface = NULL;
5035b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang            trace_flag &= ~(VA_TRACE_FLAG_SURFACE);
5045b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang        }
5055b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang    }
5065b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang
5075b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang    if (encode && (trace_flag & VA_TRACE_FLAG_CODEDBUF)) {
5085b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang        FILE *tmp = fopen(trace_context[idx].trace_codedbuf_fn, "w");
5095b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang
5105b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang        if (tmp)
5115b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang            trace_context[idx].trace_fp_codedbuf = tmp;
5125b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang        else {
5135b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang            va_errorMessage("Open file %s failed (%s)\n",
5145b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang                            trace_context[idx].trace_codedbuf_fn,
5155b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang                            strerror(errno));
5165b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang            trace_context[idx].trace_fp_codedbuf = NULL;
5175b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang            trace_flag &= ~VA_TRACE_FLAG_CODEDBUF;
5185b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang        }
5195b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang    }
520b0fac498ca4863166252f1268fda83394db54153Fei Jiang}
521b0fac498ca4863166252f1268fda83394db54153Fei Jiang
5224b672db6ee89c9846451bbab23cf18e93c4260b2hding
5234b672db6ee89c9846451bbab23cf18e93c4260b2hdingvoid va_TraceCreateSurfaces(
524b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VADisplay dpy,
525b0fac498ca4863166252f1268fda83394db54153Fei Jiang    int width,
526b0fac498ca4863166252f1268fda83394db54153Fei Jiang    int height,
527b0fac498ca4863166252f1268fda83394db54153Fei Jiang    int format,
528b0fac498ca4863166252f1268fda83394db54153Fei Jiang    int num_surfaces,
5294b672db6ee89c9846451bbab23cf18e93c4260b2hding    VASurfaceID *surfaces,    /* out */
5304b672db6ee89c9846451bbab23cf18e93c4260b2hding    VASurfaceAttrib    *attrib_list,
5314b672db6ee89c9846451bbab23cf18e93c4260b2hding    unsigned int        num_attribs
53221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan)
533b0fac498ca4863166252f1268fda83394db54153Fei Jiang{
534b0fac498ca4863166252f1268fda83394db54153Fei Jiang    int i;
53521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    DPY2INDEX(dpy);
53621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
53721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    TRACE_FUNCNAME(idx);
538b0fac498ca4863166252f1268fda83394db54153Fei Jiang
53921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\twidth = %d\n", width);
54021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\theight = %d\n", height);
54121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tformat = %d\n", format);
54221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tnum_surfaces = %d\n", num_surfaces);
543b0fac498ca4863166252f1268fda83394db54153Fei Jiang
544b0fac498ca4863166252f1268fda83394db54153Fei Jiang    for (i = 0; i < num_surfaces; i++)
54521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceMsg(idx, "\t\tsurfaces[%d] = 0x%08x\n", i, surfaces[i]);
54636bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang
54736bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceMsg(idx, NULL);
548b0fac498ca4863166252f1268fda83394db54153Fei Jiang}
549b0fac498ca4863166252f1268fda83394db54153Fei Jiang
550b0fac498ca4863166252f1268fda83394db54153Fei Jiang
551293abef4f8172cc061d26f9d909c281b4190b514Bruce Bearevoid va_TraceCreateContext(
552b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VADisplay dpy,
553b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VAConfigID config_id,
554b0fac498ca4863166252f1268fda83394db54153Fei Jiang    int picture_width,
555b0fac498ca4863166252f1268fda83394db54153Fei Jiang    int picture_height,
556b0fac498ca4863166252f1268fda83394db54153Fei Jiang    int flag,
557b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VASurfaceID *render_targets,
558b0fac498ca4863166252f1268fda83394db54153Fei Jiang    int num_render_targets,
55936bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    VAContextID *context        /* out */
56021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan)
561b0fac498ca4863166252f1268fda83394db54153Fei Jiang{
562b0fac498ca4863166252f1268fda83394db54153Fei Jiang    int i;
56321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    DPY2INDEX(dpy);
564b0fac498ca4863166252f1268fda83394db54153Fei Jiang
56521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    TRACE_FUNCNAME(idx);
56621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
56721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\twidth = %d\n", picture_width);
56821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\theight = %d\n", picture_height);
56921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tflag = 0x%08x\n", flag);
57021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tnum_render_targets = %d\n", num_render_targets);
571b0fac498ca4863166252f1268fda83394db54153Fei Jiang    for (i=0; i<num_render_targets; i++)
57221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceMsg(idx, "\t\trender_targets[%d] = 0x%08x\n", i, render_targets[i]);
57321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tcontext = 0x%08x\n", *context);
57436bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceMsg(idx, NULL);
575b0fac498ca4863166252f1268fda83394db54153Fei Jiang
57621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    trace_context[idx].trace_context = *context;
577b0fac498ca4863166252f1268fda83394db54153Fei Jiang
57821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    trace_context[idx].trace_frame_no = 0;
57921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    trace_context[idx].trace_slice_no = 0;
58021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
58121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    trace_context[idx].trace_frame_width = picture_width;
58221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    trace_context[idx].trace_frame_height = picture_height;
583eb172ee78b4442658da7b4c7df17a9287d638089Austin Yuan
584eb172ee78b4442658da7b4c7df17a9287d638089Austin Yuan    if (trace_context[idx].trace_surface_width == 0)
585eb172ee78b4442658da7b4c7df17a9287d638089Austin Yuan        trace_context[idx].trace_surface_width = picture_width;
586eb172ee78b4442658da7b4c7df17a9287d638089Austin Yuan    if (trace_context[idx].trace_surface_height == 0)
587eb172ee78b4442658da7b4c7df17a9287d638089Austin Yuan        trace_context[idx].trace_surface_height = picture_height;
588b0fac498ca4863166252f1268fda83394db54153Fei Jiang}
589b0fac498ca4863166252f1268fda83394db54153Fei Jiang
590b0fac498ca4863166252f1268fda83394db54153Fei Jiang
591b0fac498ca4863166252f1268fda83394db54153Fei Jiangstatic char * buffer_type_to_string(int type)
592b0fac498ca4863166252f1268fda83394db54153Fei Jiang{
593b0fac498ca4863166252f1268fda83394db54153Fei Jiang    switch (type) {
594b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAPictureParameterBufferType: return "VAPictureParameterBufferType";
595b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAIQMatrixBufferType: return "VAIQMatrixBufferType";
596b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VABitPlaneBufferType: return "VABitPlaneBufferType";
597b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VASliceGroupMapBufferType: return "VASliceGroupMapBufferType";
598b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VASliceParameterBufferType: return "VASliceParameterBufferType";
599b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VASliceDataBufferType: return "VASliceDataBufferType";
600b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAProtectedSliceDataBufferType: return "VAProtectedSliceDataBufferType";
601b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAMacroblockParameterBufferType: return "VAMacroblockParameterBufferType";
602b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAResidualDataBufferType: return "VAResidualDataBufferType";
603b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VADeblockingParameterBufferType: return "VADeblockingParameterBufferType";
604b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAImageBufferType: return "VAImageBufferType";
605409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan    case VAQMatrixBufferType: return "VAQMatrixBufferType";
606409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan    case VAHuffmanTableBufferType: return "VAHuffmanTableBufferType";
607409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan    case VAProbabilityBufferType: return "VAProbabilityBufferType";
608409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan/* Following are encode buffer types */
609b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAEncCodedBufferType: return "VAEncCodedBufferType";
610b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAEncSequenceParameterBufferType: return "VAEncSequenceParameterBufferType";
611b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAEncPictureParameterBufferType: return "VAEncPictureParameterBufferType";
612b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAEncSliceParameterBufferType: return "VAEncSliceParameterBufferType";
613409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan    case VAEncPackedHeaderParameterBufferType: return "VAEncPackedHeaderParameterBufferType";
614409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan    case VAEncPackedHeaderDataBufferType: return "VAEncPackedHeaderDataBufferType";
61521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    case VAEncMiscParameterBufferType: return "VAEncMiscParameterBufferType";
616409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan    case VAEncMacroblockParameterBufferType: return "VAEncMacroblockParameterBufferType";
617409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan    case VAProcPipelineParameterBufferType: return "VAProcPipelineParameterBufferType";
618409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan    case VAProcFilterParameterBufferType: return "VAProcFilterParameterBufferType";
619b0fac498ca4863166252f1268fda83394db54153Fei Jiang    default: return "UnknowBuffer";
620b0fac498ca4863166252f1268fda83394db54153Fei Jiang    }
621b0fac498ca4863166252f1268fda83394db54153Fei Jiang}
622b0fac498ca4863166252f1268fda83394db54153Fei Jiang
62321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuanvoid va_TraceMapBuffer (
62421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    VADisplay dpy,
62536bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    VABufferID buf_id,    /* in */
62636bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    void **pbuf           /* out */
62721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan)
62821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan{
62921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    VABufferType type;
63021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    unsigned int size;
63121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    unsigned int num_elements;
63221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
63321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    VACodedBufferSegment *buf_list;
63421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    int i = 0;
63521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
63621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    DPY2INDEX(dpy);
63721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
63821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    vaBufferInfo(dpy, trace_context[idx].trace_context, buf_id, &type, &size, &num_elements);
63921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
64021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    /* only trace CodedBuffer */
64121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    if (type != VAEncCodedBufferType)
64221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        return;
64335f195a578d0bec4a0aa84d6162eda7e3a4a4db9Austin Yuan
64435f195a578d0bec4a0aa84d6162eda7e3a4a4db9Austin Yuan    TRACE_FUNCNAME(idx);
64535f195a578d0bec4a0aa84d6162eda7e3a4a4db9Austin Yuan    va_TraceMsg(idx, "\tbuf_id=0x%x\n", buf_id);
64635f195a578d0bec4a0aa84d6162eda7e3a4a4db9Austin Yuan    va_TraceMsg(idx, "\tbuf_type=%s\n", buffer_type_to_string(type));
64721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    buf_list = (VACodedBufferSegment *)(*pbuf);
64821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    while (buf_list != NULL) {
64921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceMsg(idx, "\tCodedbuf[%d] =\n", i++);
65021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
65121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceMsg(idx, "\t   size = %d\n", buf_list->size);
65221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceMsg(idx, "\t   bit_offset = %d\n", buf_list->bit_offset);
65321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceMsg(idx, "\t   status = 0x%08x\n", buf_list->status);
65421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceMsg(idx, "\t   reserved = 0x%08x\n", buf_list->reserved);
65521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceMsg(idx, "\t   buf = 0x%08x\n", buf_list->buf);
65621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
65721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        buf_list = buf_list->next;
65821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    }
65936bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceMsg(idx, NULL);
66021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan}
661b0fac498ca4863166252f1268fda83394db54153Fei Jiang
66221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuanstatic void va_TraceVABuffers(
663b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VADisplay dpy,
664b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VAContextID context,
665b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VABufferID buffer,
666b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VABufferType type,
667b0fac498ca4863166252f1268fda83394db54153Fei Jiang    unsigned int size,
668b0fac498ca4863166252f1268fda83394db54153Fei Jiang    unsigned int num_elements,
669b0fac498ca4863166252f1268fda83394db54153Fei Jiang    void *pbuf
67021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan)
671b0fac498ca4863166252f1268fda83394db54153Fei Jiang{
67221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    unsigned int i;
673b0fac498ca4863166252f1268fda83394db54153Fei Jiang    unsigned char *p = pbuf;
67421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    unsigned char  check_sum = 0;
67521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    DPY2INDEX(dpy);
67621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
67772b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx, "%s\n",  buffer_type_to_string(type));
678b0fac498ca4863166252f1268fda83394db54153Fei Jiang
679b0fac498ca4863166252f1268fda83394db54153Fei Jiang    for (i=0; i<size; i++) {
68021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        unsigned char value =  p[i];
68121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
6825b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang        if ((trace_flag & VA_TRACE_FLAG_BUFDATA) && ((i%16) == 0))
68321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan            va_TraceMsg(idx, "\n0x%08x:", i);
68421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
6855b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang        if (trace_flag & VA_TRACE_FLAG_BUFDATA)
68621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan            va_TraceMsg(idx, " %02x", value);
68721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
68821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        check_sum ^= value;
689b0fac498ca4863166252f1268fda83394db54153Fei Jiang    }
690b0fac498ca4863166252f1268fda83394db54153Fei Jiang
69121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tchecksum = 0x%02x\n", check_sum & 0xff);
69236bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceMsg(idx, NULL);
69321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
69421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    return;
695b0fac498ca4863166252f1268fda83394db54153Fei Jiang}
696b0fac498ca4863166252f1268fda83394db54153Fei Jiang
697b0fac498ca4863166252f1268fda83394db54153Fei Jiang
698b0fac498ca4863166252f1268fda83394db54153Fei Jiangstatic void va_TraceVAPictureParameterBufferMPEG2(
699b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VADisplay dpy,
700b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VAContextID context,
701b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VABufferID buffer,
702b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VABufferType type,
703b0fac498ca4863166252f1268fda83394db54153Fei Jiang    unsigned int size,
704b0fac498ca4863166252f1268fda83394db54153Fei Jiang    unsigned int num_elements,
705b0fac498ca4863166252f1268fda83394db54153Fei Jiang    void *data)
706b0fac498ca4863166252f1268fda83394db54153Fei Jiang{
70772b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    VAPictureParameterBufferMPEG2 *p=(VAPictureParameterBufferMPEG2 *)data;
70821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    DPY2INDEX(dpy);
70972b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang
71050ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    va_TraceMsg(idx,"VAPictureParameterBufferMPEG2\n");
71172b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang
71272b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\thorizontal size= %d\n", p->horizontal_size);
71372b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tvertical size= %d\n", p->vertical_size);
71472b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tforward reference picture= %d\n", p->forward_reference_picture);
71572b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tbackward reference picture= %d\n", p->backward_reference_picture);
71672b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tpicture coding type= %d\n", p->picture_coding_type);
71772b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tf mode= %d\n", p->f_code);
71872b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang
71972b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tpicture coding extension = %d\n", p->picture_coding_extension.value);
72072b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tintra_dc_precision= %d\n", p->picture_coding_extension.bits.intra_dc_precision);
72172b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tpicture_structure= %d\n", p->picture_coding_extension.bits.picture_structure);
72272b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\ttop_field_first= %d\n", p->picture_coding_extension.bits.top_field_first);
72372b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tframe_pred_frame_dct= %d\n", p->picture_coding_extension.bits.frame_pred_frame_dct);
72472b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tconcealment_motion_vectors= %d\n", p->picture_coding_extension.bits.concealment_motion_vectors);
72572b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tq_scale_type= %d\n", p->picture_coding_extension.bits.q_scale_type);
72672b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tintra_vlc_format= %d\n", p->picture_coding_extension.bits.intra_vlc_format);
72772b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\talternate_scan= %d\n", p->picture_coding_extension.bits.alternate_scan);
72872b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\trepeat_first_field= %d\n", p->picture_coding_extension.bits.repeat_first_field);
72972b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tprogressive_frame= %d\n", p->picture_coding_extension.bits.progressive_frame);
73072b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tis_first_field= %d\n", p->picture_coding_extension.bits.is_first_field);
73136bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceMsg(idx, NULL);
73272b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang
733b0fac498ca4863166252f1268fda83394db54153Fei Jiang    return;
734b0fac498ca4863166252f1268fda83394db54153Fei Jiang}
735b0fac498ca4863166252f1268fda83394db54153Fei Jiang
736b0fac498ca4863166252f1268fda83394db54153Fei Jiang
737b0fac498ca4863166252f1268fda83394db54153Fei Jiangstatic void va_TraceVAIQMatrixBufferMPEG2(
738b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VADisplay dpy,
739b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VAContextID context,
740b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VABufferID buffer,
741b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VABufferType type,
742b0fac498ca4863166252f1268fda83394db54153Fei Jiang    unsigned int size,
743b0fac498ca4863166252f1268fda83394db54153Fei Jiang    unsigned int num_elements,
744b0fac498ca4863166252f1268fda83394db54153Fei Jiang    void *data)
745b0fac498ca4863166252f1268fda83394db54153Fei Jiang{
74672b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    VAIQMatrixBufferMPEG2 *p=(VAIQMatrixBufferMPEG2 *)data;
74721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    DPY2INDEX(dpy);
74872b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang
74972b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"VAIQMatrixBufferMPEG2\n");
75072b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang
75172b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tload_intra_quantiser_matrix = %d\n", p->load_intra_quantiser_matrix);
75272b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tload_non_intra_quantiser_matrix = %d\n", p->load_non_intra_quantiser_matrix);
75372b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tload_chroma_intra_quantiser_matrix = %d\n", p->load_chroma_intra_quantiser_matrix);
75472b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tload_chroma_non_intra_quantiser_matrix = %d\n", p->load_chroma_non_intra_quantiser_matrix);
75572b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tintra_quantiser_matrix = %d\n", p->intra_quantiser_matrix);
75672b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tnon_intra_quantiser_matrix = %d\n", p->non_intra_quantiser_matrix);
75772b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tchroma_intra_quantiser_matrix = %d\n", p->chroma_intra_quantiser_matrix);
75872b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tchroma_non_intra_quantiser_matrix = %d\n", p->chroma_non_intra_quantiser_matrix);
75936bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceMsg(idx, NULL);
76072b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang
761b0fac498ca4863166252f1268fda83394db54153Fei Jiang    return;
762b0fac498ca4863166252f1268fda83394db54153Fei Jiang}
763b0fac498ca4863166252f1268fda83394db54153Fei Jiang
764b0fac498ca4863166252f1268fda83394db54153Fei Jiang
765b0fac498ca4863166252f1268fda83394db54153Fei Jiangstatic void va_TraceVASliceParameterBufferMPEG2(
766b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VADisplay dpy,
767b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VAContextID context,
768b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VABufferID buffer,
769b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VABufferType type,
770b0fac498ca4863166252f1268fda83394db54153Fei Jiang    unsigned int size,
771b0fac498ca4863166252f1268fda83394db54153Fei Jiang    unsigned int num_elements,
772b0fac498ca4863166252f1268fda83394db54153Fei Jiang    void *data)
773b0fac498ca4863166252f1268fda83394db54153Fei Jiang{
77472b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    VASliceParameterBufferMPEG2 *p=(VASliceParameterBufferMPEG2 *)data;
77572b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang
77621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    DPY2INDEX(dpy);
77721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
77821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    trace_context[idx].trace_slice_no++;
77921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
78072b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    trace_context[idx].trace_slice_size = p->slice_data_size;
78172b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang
78272b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"VASliceParameterBufferMPEG2\n");
78372b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang
78472b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tslice_data_size = %d\n", p->slice_data_size);
78572b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tslice_data_offset = %d\n", p->slice_data_offset);
78672b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tslice_data_flag = %d\n", p->slice_data_flag);
78772b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tmacroblock_offset = %d\n", p->macroblock_offset);
78872b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tslice_horizontal_position = %d\n", p->slice_horizontal_position);
78972b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tslice_vertical_position = %d\n", p->slice_vertical_position);
79072b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tquantiser_scale_code = %d\n", p->quantiser_scale_code);
79172b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tintra_slice_flag = %d\n", p->intra_slice_flag);
79236bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceMsg(idx, NULL);
79372b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang
794b0fac498ca4863166252f1268fda83394db54153Fei Jiang    return;
795b0fac498ca4863166252f1268fda83394db54153Fei Jiang}
796b0fac498ca4863166252f1268fda83394db54153Fei Jiang
7979992891b62398a80bd0867f8d167c0faa49861fdCheng Yaostatic void va_TraceVAPictureParameterBufferJPEG(
7989992891b62398a80bd0867f8d167c0faa49861fdCheng Yao    VADisplay dpy,
7999992891b62398a80bd0867f8d167c0faa49861fdCheng Yao    VAContextID context,
8009992891b62398a80bd0867f8d167c0faa49861fdCheng Yao    VABufferID buffer,
8019992891b62398a80bd0867f8d167c0faa49861fdCheng Yao    VABufferType type,
8029992891b62398a80bd0867f8d167c0faa49861fdCheng Yao    unsigned int size,
8039992891b62398a80bd0867f8d167c0faa49861fdCheng Yao    unsigned int num_elements,
8049992891b62398a80bd0867f8d167c0faa49861fdCheng Yao    void *data)
8059992891b62398a80bd0867f8d167c0faa49861fdCheng Yao{
8069992891b62398a80bd0867f8d167c0faa49861fdCheng Yao    int i;
8079992891b62398a80bd0867f8d167c0faa49861fdCheng Yao    VAPictureParameterBufferJPEGBaseline *p=(VAPictureParameterBufferJPEGBaseline *)data;
8089992891b62398a80bd0867f8d167c0faa49861fdCheng Yao    DPY2INDEX(dpy);
8099992891b62398a80bd0867f8d167c0faa49861fdCheng Yao
8109992891b62398a80bd0867f8d167c0faa49861fdCheng Yao    va_TraceMsg(idx,"*VAPictureParameterBufferJPEG\n");
8119992891b62398a80bd0867f8d167c0faa49861fdCheng Yao    va_TraceMsg(idx,"\tpicture_width = %u\n", p->picture_width);
8129992891b62398a80bd0867f8d167c0faa49861fdCheng Yao    va_TraceMsg(idx,"\tpicture_height = %u\n", p->picture_height);
8139992891b62398a80bd0867f8d167c0faa49861fdCheng Yao    va_TraceMsg(idx,"\tcomponents = \n");
8149992891b62398a80bd0867f8d167c0faa49861fdCheng Yao    for (i = 0; i < p->num_components && i < 255; ++i) {
8159992891b62398a80bd0867f8d167c0faa49861fdCheng Yao        va_TraceMsg(idx,"\t\t[%d] component_id = %u\n", i, p->components[i].component_id);
8169992891b62398a80bd0867f8d167c0faa49861fdCheng Yao        va_TraceMsg(idx,"\t\t[%d] h_sampling_factor = %u\n", i, p->components[i].h_sampling_factor);
8179992891b62398a80bd0867f8d167c0faa49861fdCheng Yao        va_TraceMsg(idx,"\t\t[%d] v_sampling_factor = %u\n", i, p->components[i].v_sampling_factor);
8189992891b62398a80bd0867f8d167c0faa49861fdCheng Yao        va_TraceMsg(idx,"\t\t[%d] quantiser_table_selector = %u\n", i, p->components[i].quantiser_table_selector);
8199992891b62398a80bd0867f8d167c0faa49861fdCheng Yao    }
8209992891b62398a80bd0867f8d167c0faa49861fdCheng Yao}
8219992891b62398a80bd0867f8d167c0faa49861fdCheng Yao
8229992891b62398a80bd0867f8d167c0faa49861fdCheng Yaostatic void va_TraceVAIQMatrixBufferJPEG(
8239992891b62398a80bd0867f8d167c0faa49861fdCheng Yao    VADisplay dpy,
8249992891b62398a80bd0867f8d167c0faa49861fdCheng Yao    VAContextID context,
8259992891b62398a80bd0867f8d167c0faa49861fdCheng Yao    VABufferID buffer,
8269992891b62398a80bd0867f8d167c0faa49861fdCheng Yao    VABufferType type,
8279992891b62398a80bd0867f8d167c0faa49861fdCheng Yao    unsigned int size,
8289992891b62398a80bd0867f8d167c0faa49861fdCheng Yao    unsigned int num_elements,
8299992891b62398a80bd0867f8d167c0faa49861fdCheng Yao    void *data)
8309992891b62398a80bd0867f8d167c0faa49861fdCheng Yao{
8319992891b62398a80bd0867f8d167c0faa49861fdCheng Yao    int i, j;
8329992891b62398a80bd0867f8d167c0faa49861fdCheng Yao    static char tmp[1024];
8339992891b62398a80bd0867f8d167c0faa49861fdCheng Yao    VAIQMatrixBufferJPEGBaseline *p=(VAIQMatrixBufferJPEGBaseline *)data;
8349992891b62398a80bd0867f8d167c0faa49861fdCheng Yao    DPY2INDEX(dpy);
8359992891b62398a80bd0867f8d167c0faa49861fdCheng Yao    va_TraceMsg(idx,"*VAIQMatrixParameterBufferJPEG\n");
8369992891b62398a80bd0867f8d167c0faa49861fdCheng Yao    va_TraceMsg(idx,"\tload_quantiser_table =\n");
8379992891b62398a80bd0867f8d167c0faa49861fdCheng Yao    for (i = 0; i < 4; ++i) {
8389992891b62398a80bd0867f8d167c0faa49861fdCheng Yao        va_TraceMsg(idx,"\t\t[%d] = %u\n", i, p->load_quantiser_table[i]);
8399992891b62398a80bd0867f8d167c0faa49861fdCheng Yao    }
8409992891b62398a80bd0867f8d167c0faa49861fdCheng Yao    va_TraceMsg(idx,"\tquantiser_table =\n");
8419992891b62398a80bd0867f8d167c0faa49861fdCheng Yao    for (i = 0; i < 4; ++i) {
8429992891b62398a80bd0867f8d167c0faa49861fdCheng Yao        memset(tmp, 0, sizeof tmp);
8439992891b62398a80bd0867f8d167c0faa49861fdCheng Yao        for (j = 0; j < 64; ++j) {
8449992891b62398a80bd0867f8d167c0faa49861fdCheng Yao            sprintf(tmp + strlen(tmp), "%u ", p->quantiser_table[i][j]);
8459992891b62398a80bd0867f8d167c0faa49861fdCheng Yao        }
8469992891b62398a80bd0867f8d167c0faa49861fdCheng Yao        va_TraceMsg(idx,"\t\t[%d] = %s\n", i, tmp);
8479992891b62398a80bd0867f8d167c0faa49861fdCheng Yao    }
8489992891b62398a80bd0867f8d167c0faa49861fdCheng Yao}
8499992891b62398a80bd0867f8d167c0faa49861fdCheng Yao
8509992891b62398a80bd0867f8d167c0faa49861fdCheng Yaostatic void va_TraceVASliceParameterBufferJPEG(
8519992891b62398a80bd0867f8d167c0faa49861fdCheng Yao    VADisplay dpy,
8529992891b62398a80bd0867f8d167c0faa49861fdCheng Yao    VAContextID context,
8539992891b62398a80bd0867f8d167c0faa49861fdCheng Yao    VABufferID buffer,
8549992891b62398a80bd0867f8d167c0faa49861fdCheng Yao    VABufferType type,
8559992891b62398a80bd0867f8d167c0faa49861fdCheng Yao    unsigned int size,
8569992891b62398a80bd0867f8d167c0faa49861fdCheng Yao    unsigned int num_elements,
8579992891b62398a80bd0867f8d167c0faa49861fdCheng Yao    void *data)
8589992891b62398a80bd0867f8d167c0faa49861fdCheng Yao{
8599992891b62398a80bd0867f8d167c0faa49861fdCheng Yao    int i;
8609992891b62398a80bd0867f8d167c0faa49861fdCheng Yao    VASliceParameterBufferJPEGBaseline *p=(VASliceParameterBufferJPEGBaseline *)data;
8619992891b62398a80bd0867f8d167c0faa49861fdCheng Yao    DPY2INDEX(dpy);
8629992891b62398a80bd0867f8d167c0faa49861fdCheng Yao    va_TraceMsg(idx,"*VASliceParameterBufferJPEG\n");
8639992891b62398a80bd0867f8d167c0faa49861fdCheng Yao    va_TraceMsg(idx,"\tslice_data_size = %u\n", p->slice_data_size);
8649992891b62398a80bd0867f8d167c0faa49861fdCheng Yao    va_TraceMsg(idx,"\tslice_data_offset = %u\n", p->slice_data_offset);
8659992891b62398a80bd0867f8d167c0faa49861fdCheng Yao    va_TraceMsg(idx,"\tslice_data_flag = %u\n", p->slice_data_flag);
8669992891b62398a80bd0867f8d167c0faa49861fdCheng Yao    va_TraceMsg(idx,"\tslice_horizontal_position = %u\n", p->slice_horizontal_position);
8679992891b62398a80bd0867f8d167c0faa49861fdCheng Yao    va_TraceMsg(idx,"\tslice_vertical_position = %u\n", p->slice_vertical_position);
8689992891b62398a80bd0867f8d167c0faa49861fdCheng Yao    va_TraceMsg(idx,"\tcomponents = \n");
8699992891b62398a80bd0867f8d167c0faa49861fdCheng Yao    for (i = 0; i < p->num_components && i < 4; ++i) {
8709992891b62398a80bd0867f8d167c0faa49861fdCheng Yao        va_TraceMsg(idx,"\t\t[%d] component_selector = %u\n", i, p->components[i].component_selector);
8719992891b62398a80bd0867f8d167c0faa49861fdCheng Yao        va_TraceMsg(idx,"\t\t[%d] dc_table_selector = %u\n", i, p->components[i].dc_table_selector);
8729992891b62398a80bd0867f8d167c0faa49861fdCheng Yao        va_TraceMsg(idx,"\t\t[%d] ac_table_selector = %u\n", i, p->components[i].ac_table_selector);
8739992891b62398a80bd0867f8d167c0faa49861fdCheng Yao    }
8749992891b62398a80bd0867f8d167c0faa49861fdCheng Yao    va_TraceMsg(idx,"\trestart_interval = %u\n", p->restart_interval);
8759992891b62398a80bd0867f8d167c0faa49861fdCheng Yao    va_TraceMsg(idx,"\tnum_mcus = %u\n", p->num_mcus);
8769992891b62398a80bd0867f8d167c0faa49861fdCheng Yao}
8779992891b62398a80bd0867f8d167c0faa49861fdCheng Yao
8789992891b62398a80bd0867f8d167c0faa49861fdCheng Yaostatic void va_TraceVAHuffmanTableBufferJPEG(
8799992891b62398a80bd0867f8d167c0faa49861fdCheng Yao    VADisplay dpy,
8809992891b62398a80bd0867f8d167c0faa49861fdCheng Yao    VAContextID context,
8819992891b62398a80bd0867f8d167c0faa49861fdCheng Yao    VABufferID buffer,
8829992891b62398a80bd0867f8d167c0faa49861fdCheng Yao    VABufferType type,
8839992891b62398a80bd0867f8d167c0faa49861fdCheng Yao    unsigned int size,
8849992891b62398a80bd0867f8d167c0faa49861fdCheng Yao    unsigned int num_elements,
8859992891b62398a80bd0867f8d167c0faa49861fdCheng Yao    void *data)
8869992891b62398a80bd0867f8d167c0faa49861fdCheng Yao{
8879992891b62398a80bd0867f8d167c0faa49861fdCheng Yao    int i, j;
8889992891b62398a80bd0867f8d167c0faa49861fdCheng Yao    static char tmp[1024];
8899992891b62398a80bd0867f8d167c0faa49861fdCheng Yao    VAHuffmanTableBufferJPEGBaseline *p=(VAHuffmanTableBufferJPEGBaseline *)data;
8909992891b62398a80bd0867f8d167c0faa49861fdCheng Yao    DPY2INDEX(dpy);
8919992891b62398a80bd0867f8d167c0faa49861fdCheng Yao    va_TraceMsg(idx,"*VAHuffmanTableBufferJPEG\n");
8929992891b62398a80bd0867f8d167c0faa49861fdCheng Yao
8939992891b62398a80bd0867f8d167c0faa49861fdCheng Yao    for (i = 0; i < 2; ++i) {
8949992891b62398a80bd0867f8d167c0faa49861fdCheng Yao        va_TraceMsg(idx,"\tload_huffman_table[%d] =%u\n", i, p->load_huffman_table[0]);
8959992891b62398a80bd0867f8d167c0faa49861fdCheng Yao        va_TraceMsg(idx,"\thuffman_table[%d] =\n", i);
8969992891b62398a80bd0867f8d167c0faa49861fdCheng Yao        memset(tmp, 0, sizeof tmp);
8979992891b62398a80bd0867f8d167c0faa49861fdCheng Yao        for (j = 0; j < 16; ++j) {
8989992891b62398a80bd0867f8d167c0faa49861fdCheng Yao            sprintf(tmp + strlen(tmp), "%u ", p->huffman_table[i].num_dc_codes[j]);
8999992891b62398a80bd0867f8d167c0faa49861fdCheng Yao        }
9009992891b62398a80bd0867f8d167c0faa49861fdCheng Yao        va_TraceMsg(idx,"\t\tnum_dc_codes =%s\n", tmp);
9019992891b62398a80bd0867f8d167c0faa49861fdCheng Yao        memset(tmp, 0, sizeof tmp);
9029992891b62398a80bd0867f8d167c0faa49861fdCheng Yao        for (j = 0; j < 12; ++j) {
9039992891b62398a80bd0867f8d167c0faa49861fdCheng Yao            sprintf(tmp + strlen(tmp), "%u ", p->huffman_table[i].dc_values[j]);
9049992891b62398a80bd0867f8d167c0faa49861fdCheng Yao        }
9059992891b62398a80bd0867f8d167c0faa49861fdCheng Yao        va_TraceMsg(idx,"\t\tdc_values =%s\n", tmp);
9069992891b62398a80bd0867f8d167c0faa49861fdCheng Yao        memset(tmp, 0, sizeof tmp);
9079992891b62398a80bd0867f8d167c0faa49861fdCheng Yao        for (j = 0; j < 16; ++j) {
9089992891b62398a80bd0867f8d167c0faa49861fdCheng Yao            sprintf(tmp + strlen(tmp), "%u ", p->huffman_table[i].num_ac_codes[j]);
9099992891b62398a80bd0867f8d167c0faa49861fdCheng Yao        }
9109992891b62398a80bd0867f8d167c0faa49861fdCheng Yao        va_TraceMsg(idx,"\t\tnum_dc_codes =%s\n", tmp);
9119992891b62398a80bd0867f8d167c0faa49861fdCheng Yao        memset(tmp, 0, sizeof tmp);
9129992891b62398a80bd0867f8d167c0faa49861fdCheng Yao        for (j = 0; j < 162; ++j) {
9139992891b62398a80bd0867f8d167c0faa49861fdCheng Yao            sprintf(tmp + strlen(tmp), "%u ", p->huffman_table[i].ac_values[j]);
9149992891b62398a80bd0867f8d167c0faa49861fdCheng Yao        }
9159992891b62398a80bd0867f8d167c0faa49861fdCheng Yao        va_TraceMsg(idx,"\t\tnum_dc_codes =%s\n", tmp);
9169992891b62398a80bd0867f8d167c0faa49861fdCheng Yao        memset(tmp, 0, sizeof tmp);
9179992891b62398a80bd0867f8d167c0faa49861fdCheng Yao        for (j = 0; j < 2; ++j) {
9189992891b62398a80bd0867f8d167c0faa49861fdCheng Yao            sprintf(tmp + strlen(tmp), "%u ", p->huffman_table[i].pad[j]);
9199992891b62398a80bd0867f8d167c0faa49861fdCheng Yao        }
9209992891b62398a80bd0867f8d167c0faa49861fdCheng Yao        va_TraceMsg(idx,"\t\tnum_dc_codes =%s\n", tmp);
9219992891b62398a80bd0867f8d167c0faa49861fdCheng Yao    }
9229992891b62398a80bd0867f8d167c0faa49861fdCheng Yao}
923b0fac498ca4863166252f1268fda83394db54153Fei Jiang
924b0fac498ca4863166252f1268fda83394db54153Fei Jiangstatic void va_TraceVAPictureParameterBufferMPEG4(
925b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VADisplay dpy,
926b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VAContextID context,
927b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VABufferID buffer,
928b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VABufferType type,
929b0fac498ca4863166252f1268fda83394db54153Fei Jiang    unsigned int size,
930b0fac498ca4863166252f1268fda83394db54153Fei Jiang    unsigned int num_elements,
931b0fac498ca4863166252f1268fda83394db54153Fei Jiang    void *data)
932b0fac498ca4863166252f1268fda83394db54153Fei Jiang{
93372b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    int i;
93472b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    VAPictureParameterBufferMPEG4 *p=(VAPictureParameterBufferMPEG4 *)data;
935b0fac498ca4863166252f1268fda83394db54153Fei Jiang
93672b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    DPY2INDEX(dpy);
93772b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang
93872b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"*VAPictureParameterBufferMPEG4\n");
93972b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tvop_width = %d\n", p->vop_width);
94072b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tvop_height = %d\n", p->vop_height);
94172b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tforward_reference_picture = %d\n", p->forward_reference_picture);
94272b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tbackward_reference_picture = %d\n", p->backward_reference_picture);
94372b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tvol_fields value = %d\n", p->vol_fields.value);
94472b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tshort_video_header= %d\n", p->vol_fields.bits.short_video_header);
94572b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tchroma_format= %d\n", p->vol_fields.bits.chroma_format);
94672b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tinterlaced= %d\n", p->vol_fields.bits.interlaced);
94772b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tobmc_disable= %d\n", p->vol_fields.bits.obmc_disable);
94872b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tsprite_enable= %d\n", p->vol_fields.bits.sprite_enable);
94972b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tsprite_warping_accuracy= %d\n", p->vol_fields.bits.sprite_warping_accuracy);
95072b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tquant_type= %d\n", p->vol_fields.bits.quant_type);
95172b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tquarter_sample= %d\n", p->vol_fields.bits.quarter_sample);
95272b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tdata_partitioned= %d\n", p->vol_fields.bits.data_partitioned);
95372b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\treversible_vlc= %d\n", p->vol_fields.bits.reversible_vlc);
95472b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tresync_marker_disable= %d\n", p->vol_fields.bits.resync_marker_disable);
95572b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tno_of_sprite_warping_points = %d\n", p->no_of_sprite_warping_points);
95672b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tsprite_trajectory_du =");
95772b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    for(i=0;i<3;i++)
95872b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang        va_TraceMsg(idx,"\t%d", p->sprite_trajectory_du[i]);
95972b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang
96072b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\n");
96172b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tsprite_trajectory_dv =");
96272b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    for(i=0;i<3;i++)
96372b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang        va_TraceMsg(idx,"\t%d", p->sprite_trajectory_dv[i]);
96436bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceMsg(idx,"\n");
96572b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tvop_fields value = %d\n", p->vop_fields.value);
96672b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tvop_coding_type= %d\n", p->vop_fields.bits.vop_coding_type);
96772b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tbackward_reference_vop_coding_type= %d\n", p->vop_fields.bits.backward_reference_vop_coding_type);
96872b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tvop_rounding_type= %d\n", p->vop_fields.bits.vop_rounding_type);
96972b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tintra_dc_vlc_thr= %d\n", p->vop_fields.bits.intra_dc_vlc_thr);
97072b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\ttop_field_first= %d\n", p->vop_fields.bits.top_field_first);
97172b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\talternate_vertical_scan_flag= %d\n", p->vop_fields.bits.alternate_vertical_scan_flag);
97272b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tvop_fcode_forward = %d\n", p->vop_fcode_forward);
97372b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tvop_fcode_backward = %d\n", p->vop_fcode_backward);
97472b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tnum_gobs_in_vop = %d\n", p->num_gobs_in_vop);
97572b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tnum_macroblocks_in_gob = %d\n", p->num_macroblocks_in_gob);
97672b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tTRB = %d\n", p->TRB);
97772b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tTRD = %d\n", p->TRD);
97836bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceMsg(idx, NULL);
97972b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang
980b0fac498ca4863166252f1268fda83394db54153Fei Jiang    return;
981b0fac498ca4863166252f1268fda83394db54153Fei Jiang}
982b0fac498ca4863166252f1268fda83394db54153Fei Jiang
983b0fac498ca4863166252f1268fda83394db54153Fei Jiang
984b0fac498ca4863166252f1268fda83394db54153Fei Jiangstatic void va_TraceVAIQMatrixBufferMPEG4(
985b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VADisplay dpy,
986b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VAContextID context,
987b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VABufferID buffer,
988b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VABufferType type,
989b0fac498ca4863166252f1268fda83394db54153Fei Jiang    unsigned int size,
990b0fac498ca4863166252f1268fda83394db54153Fei Jiang    unsigned int num_elements,
991b0fac498ca4863166252f1268fda83394db54153Fei Jiang    void *data)
992b0fac498ca4863166252f1268fda83394db54153Fei Jiang{
99372b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    int i;
99472b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    VAIQMatrixBufferMPEG4 *p=(VAIQMatrixBufferMPEG4 *)data;
99521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    DPY2INDEX(dpy);
99621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
99772b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"VAIQMatrixBufferMPEG4\n");
99872b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang
99972b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tload_intra_quant_mat = %d\n", p->load_intra_quant_mat);
100072b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tload_non_intra_quant_mat = %d\n", p->load_non_intra_quant_mat);
100172b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tintra_quant_mat =\n");
100272b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    for(i=0;i<64;i++)
100372b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang        va_TraceMsg(idx,"\t\t%d\n", p->intra_quant_mat[i]);
100472b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang
100572b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tnon_intra_quant_mat =\n");
100672b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    for(i=0;i<64;i++)
100772b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang        va_TraceMsg(idx,"\t\t%d\n", p->non_intra_quant_mat[i]);
100836bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceMsg(idx, NULL);
100972b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang
1010b0fac498ca4863166252f1268fda83394db54153Fei Jiang    return;
1011b0fac498ca4863166252f1268fda83394db54153Fei Jiang}
1012b0fac498ca4863166252f1268fda83394db54153Fei Jiang
101350ce1dbe8a3402d56c94238710964507db7d99e1Kun Wangstatic void va_TraceVAEncSequenceParameterBufferMPEG4(
101450ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    VADisplay dpy,
101550ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    VAContextID context,
101650ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    VABufferID buffer,
101750ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    VABufferType type,
101850ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    unsigned int size,
101950ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    unsigned int num_elements,
102050ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    void *data)
102150ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang{
102250ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    VAEncSequenceParameterBufferMPEG4 *p = (VAEncSequenceParameterBufferMPEG4 *)data;
102350ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    DPY2INDEX(dpy);
102450ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang
102550ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    va_TraceMsg(idx, "VAEncSequenceParameterBufferMPEG4\n");
102650ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang
102750ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    va_TraceMsg(idx, "\tprofile_and_level_indication = %d\n", p->profile_and_level_indication);
102850ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    va_TraceMsg(idx, "\tintra_period = %d\n", p->intra_period);
102950ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    va_TraceMsg(idx, "\tvideo_object_layer_width = %d\n", p->video_object_layer_width);
103050ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    va_TraceMsg(idx, "\tvideo_object_layer_height = %d\n", p->video_object_layer_height);
103150ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    va_TraceMsg(idx, "\tvop_time_increment_resolution = %d\n", p->vop_time_increment_resolution);
103250ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    va_TraceMsg(idx, "\tfixed_vop_rate = %d\n", p->fixed_vop_rate);
103350ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    va_TraceMsg(idx, "\tfixed_vop_time_increment = %d\n", p->fixed_vop_time_increment);
103450ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    va_TraceMsg(idx, "\tbits_per_second = %d\n", p->bits_per_second);
103550ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    va_TraceMsg(idx, "\tframe_rate = %d\n", p->frame_rate);
103650ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    va_TraceMsg(idx, "\tinitial_qp = %d\n", p->initial_qp);
103750ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    va_TraceMsg(idx, "\tmin_qp = %d\n", p->min_qp);
103850ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    va_TraceMsg(idx, NULL);
103950ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang
104050ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    /* start a new sequce, coded log file can be truncated */
104150ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    trace_context[idx].trace_sequence_start = 1;
104250ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang
104350ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    return;
104450ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang}
104550ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang
104650ce1dbe8a3402d56c94238710964507db7d99e1Kun Wangstatic void va_TraceVAEncPictureParameterBufferMPEG4(
104750ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    VADisplay dpy,
104850ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    VAContextID context,
104950ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    VABufferID buffer,
105050ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    VABufferType type,
105150ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    unsigned int size,
105250ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    unsigned int num_elements,
105350ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    void *data)
105450ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang{
105550ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    VAEncPictureParameterBufferMPEG4 *p = (VAEncPictureParameterBufferMPEG4 *)data;
105650ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    DPY2INDEX(dpy);
105750ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang
105850ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    va_TraceMsg(idx, "VAEncPictureParameterBufferMPEG4\n");
105950ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    va_TraceMsg(idx, "\treference_picture = 0x%08x\n", p->reference_picture);
106050ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    va_TraceMsg(idx, "\treconstructed_picture = 0x%08x\n", p->reconstructed_picture);
10616044ab9a375eb73b08f45d87966652f98f918668Austin Yuan    va_TraceMsg(idx, "\tcoded_buf = 0x%08x\n", p->coded_buf);
106250ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    va_TraceMsg(idx, "\tpicture_width = %d\n", p->picture_width);
106350ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    va_TraceMsg(idx, "\tpicture_height = %d\n", p->picture_height);
106450ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    va_TraceMsg(idx, "\tmodulo_time_base = %d\n", p->modulo_time_base);
106550ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    va_TraceMsg(idx, "\tvop_time_increment = %d\n", p->vop_time_increment);
106650ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    va_TraceMsg(idx, "\tpicture_type = %d\n", p->picture_type);
106750ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    va_TraceMsg(idx, NULL);
106850ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang
106950ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    trace_context[idx].trace_codedbuf =  p->coded_buf;
107050ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang
107150ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    return;
107250ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang}
107350ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang
1074b0fac498ca4863166252f1268fda83394db54153Fei Jiang
1075b0fac498ca4863166252f1268fda83394db54153Fei Jiangstatic void va_TraceVASliceParameterBufferMPEG4(
1076b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VADisplay dpy,
1077b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VAContextID context,
1078b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VABufferID buffer,
1079b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VABufferType type,
1080b0fac498ca4863166252f1268fda83394db54153Fei Jiang    unsigned int size,
1081b0fac498ca4863166252f1268fda83394db54153Fei Jiang    unsigned int num_elements,
1082b0fac498ca4863166252f1268fda83394db54153Fei Jiang    void *data)
1083b0fac498ca4863166252f1268fda83394db54153Fei Jiang{
108472b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    VASliceParameterBufferMPEG4 *p=(VASliceParameterBufferMPEG4 *)data;
108572b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang
108621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    DPY2INDEX(dpy);
108721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
108821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    trace_context[idx].trace_slice_no++;
108921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
109072b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    trace_context[idx].trace_slice_size = p->slice_data_size;
109172b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang
109272b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"VASliceParameterBufferMPEG4\n");
109372b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang
109472b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tslice_data_size = %d\n", p->slice_data_size);
109572b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tslice_data_offset = %d\n", p->slice_data_offset);
109672b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tslice_data_flag = %d\n", p->slice_data_flag);
109772b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tmacroblock_offset = %d\n", p->macroblock_offset);
109872b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tmacroblock_number = %d\n", p->macroblock_number);
109972b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx,"\tquant_scale = %d\n", p->quant_scale);
110036bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceMsg(idx, NULL);
110172b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang
1102b0fac498ca4863166252f1268fda83394db54153Fei Jiang    return;
1103b0fac498ca4863166252f1268fda83394db54153Fei Jiang}
1104b0fac498ca4863166252f1268fda83394db54153Fei Jiang
1105b0fac498ca4863166252f1268fda83394db54153Fei Jiang
110636bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sangstatic inline void va_TraceFlagIfNotZero(
110736bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    int idx,            /* in */
110836bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    const char *name,   /* in */
110936bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    unsigned int flag   /* in */
111036bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang)
111136bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang{
111236bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    if (flag != 0) {
111336bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang        va_TraceMsg(idx, "%s = %x\n", name, flag);
111436bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    }
111536bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang}
111636bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang
111736bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang
1118b0fac498ca4863166252f1268fda83394db54153Fei Jiangstatic void va_TraceVAPictureParameterBufferH264(
1119b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VADisplay dpy,
1120b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VAContextID context,
1121b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VABufferID buffer,
1122b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VABufferType type,
1123b0fac498ca4863166252f1268fda83394db54153Fei Jiang    unsigned int size,
1124b0fac498ca4863166252f1268fda83394db54153Fei Jiang    unsigned int num_elements,
1125b0fac498ca4863166252f1268fda83394db54153Fei Jiang    void *data)
1126b0fac498ca4863166252f1268fda83394db54153Fei Jiang{
1127b0fac498ca4863166252f1268fda83394db54153Fei Jiang    int i;
1128b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VAPictureParameterBufferH264 *p = (VAPictureParameterBufferH264*)data;
112972b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang
113072b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    DPY2INDEX(dpy);
1131b0fac498ca4863166252f1268fda83394db54153Fei Jiang
113272b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx, "VAPictureParameterBufferH264\n");
1133b0fac498ca4863166252f1268fda83394db54153Fei Jiang
113436bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceMsg(idx, "\tCurrPic.picture_id = 0x%08x\n", p->CurrPic.picture_id);
113521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tCurrPic.frame_idx = %d\n", p->CurrPic.frame_idx);
113621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tCurrPic.flags = %d\n", p->CurrPic.flags);
113721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tCurrPic.TopFieldOrderCnt = %d\n", p->CurrPic.TopFieldOrderCnt);
113821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tCurrPic.BottomFieldOrderCnt = %d\n", p->CurrPic.BottomFieldOrderCnt);
1139b0fac498ca4863166252f1268fda83394db54153Fei Jiang
11406044ab9a375eb73b08f45d87966652f98f918668Austin Yuan    va_TraceMsg(idx, "\tReferenceFrames (TopFieldOrderCnt-BottomFieldOrderCnt-picture_id-frame_idx-flags:\n");
1141b0fac498ca4863166252f1268fda83394db54153Fei Jiang    for (i = 0; i < 16; i++)
1142b0fac498ca4863166252f1268fda83394db54153Fei Jiang    {
11436044ab9a375eb73b08f45d87966652f98f918668Austin Yuan        if ((p->ReferenceFrames[i].picture_id != VA_INVALID_SURFACE) &&
11446044ab9a375eb73b08f45d87966652f98f918668Austin Yuan            ((p->ReferenceFrames[i].flags & VA_PICTURE_H264_INVALID) == 0)) {
11456044ab9a375eb73b08f45d87966652f98f918668Austin Yuan            va_TraceMsg(idx, "\t\t%08d-%08d-0x%08x-%08d-0x%08x\n",
114621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan                        p->ReferenceFrames[i].TopFieldOrderCnt,
114721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan                        p->ReferenceFrames[i].BottomFieldOrderCnt,
114821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan                        p->ReferenceFrames[i].picture_id,
11496044ab9a375eb73b08f45d87966652f98f918668Austin Yuan                        p->ReferenceFrames[i].frame_idx,
11506044ab9a375eb73b08f45d87966652f98f918668Austin Yuan                        p->ReferenceFrames[i].flags);
115121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        } else
11526044ab9a375eb73b08f45d87966652f98f918668Austin Yuan            va_TraceMsg(idx, "\t\tinv-inv-inv-inv-inv\n");
1153b0fac498ca4863166252f1268fda83394db54153Fei Jiang    }
115421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\n");
115521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
115621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tpicture_width_in_mbs_minus1 = %d\n", p->picture_width_in_mbs_minus1);
115721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tpicture_height_in_mbs_minus1 = %d\n", p->picture_height_in_mbs_minus1);
115821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tbit_depth_luma_minus8 = %d\n", p->bit_depth_luma_minus8);
115921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tbit_depth_chroma_minus8 = %d\n", p->bit_depth_chroma_minus8);
116021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tnum_ref_frames = %d\n", p->num_ref_frames);
116121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tseq fields = %d\n", p->seq_fields.value);
116221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tchroma_format_idc = %d\n", p->seq_fields.bits.chroma_format_idc);
116321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tresidual_colour_transform_flag = %d\n", p->seq_fields.bits.residual_colour_transform_flag);
116421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tframe_mbs_only_flag = %d\n", p->seq_fields.bits.frame_mbs_only_flag);
116521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tmb_adaptive_frame_field_flag = %d\n", p->seq_fields.bits.mb_adaptive_frame_field_flag);
116621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tdirect_8x8_inference_flag = %d\n", p->seq_fields.bits.direct_8x8_inference_flag);
116721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tMinLumaBiPredSize8x8 = %d\n", p->seq_fields.bits.MinLumaBiPredSize8x8);
116821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tnum_slice_groups_minus1 = %d\n", p->num_slice_groups_minus1);
116921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tslice_group_map_type = %d\n", p->slice_group_map_type);
117021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tslice_group_change_rate_minus1 = %d\n", p->slice_group_change_rate_minus1);
117121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tpic_init_qp_minus26 = %d\n", p->pic_init_qp_minus26);
117221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tpic_init_qs_minus26 = %d\n", p->pic_init_qs_minus26);
117321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tchroma_qp_index_offset = %d\n", p->chroma_qp_index_offset);
117421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tsecond_chroma_qp_index_offset = %d\n", p->second_chroma_qp_index_offset);
117536bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceMsg(idx, "\tpic_fields = 0x%03x\n", p->pic_fields.value);
117636bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceFlagIfNotZero(idx, "\t\tentropy_coding_mode_flag", p->pic_fields.bits.entropy_coding_mode_flag);
117736bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceFlagIfNotZero(idx, "\t\tweighted_pred_flag", p->pic_fields.bits.weighted_pred_flag);
117836bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceFlagIfNotZero(idx, "\t\tweighted_bipred_idc", p->pic_fields.bits.weighted_bipred_idc);
117936bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceFlagIfNotZero(idx, "\t\ttransform_8x8_mode_flag", p->pic_fields.bits.transform_8x8_mode_flag);
118036bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceFlagIfNotZero(idx, "\t\tfield_pic_flag", p->pic_fields.bits.field_pic_flag);
118136bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceFlagIfNotZero(idx, "\t\tconstrained_intra_pred_flag", p->pic_fields.bits.constrained_intra_pred_flag);
118236bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceFlagIfNotZero(idx, "\t\tpic_order_present_flag", p->pic_fields.bits.pic_order_present_flag);
118336bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceFlagIfNotZero(idx, "\t\tdeblocking_filter_control_present_flag", p->pic_fields.bits.deblocking_filter_control_present_flag);
118436bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceFlagIfNotZero(idx, "\t\tredundant_pic_cnt_present_flag", p->pic_fields.bits.redundant_pic_cnt_present_flag);
118536bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceFlagIfNotZero(idx, "\t\treference_pic_flag", p->pic_fields.bits.reference_pic_flag);
118621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tframe_num = %d\n", p->frame_num);
118736bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceMsg(idx, NULL);
1188b0fac498ca4863166252f1268fda83394db54153Fei Jiang
1189b0fac498ca4863166252f1268fda83394db54153Fei Jiang    return;
1190b0fac498ca4863166252f1268fda83394db54153Fei Jiang}
1191b0fac498ca4863166252f1268fda83394db54153Fei Jiang
1192b0fac498ca4863166252f1268fda83394db54153Fei Jiangstatic void va_TraceVASliceParameterBufferH264(
1193b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VADisplay dpy,
1194b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VAContextID context,
1195b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VABufferID buffer,
1196b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VABufferType type,
1197b0fac498ca4863166252f1268fda83394db54153Fei Jiang    unsigned int size,
1198b0fac498ca4863166252f1268fda83394db54153Fei Jiang    unsigned int num_elements,
1199b0fac498ca4863166252f1268fda83394db54153Fei Jiang    void *data)
1200b0fac498ca4863166252f1268fda83394db54153Fei Jiang{
1201b0fac498ca4863166252f1268fda83394db54153Fei Jiang    int i;
1202b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VASliceParameterBufferH264* p = (VASliceParameterBufferH264*)data;
120321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    DPY2INDEX(dpy);
120421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
120521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    trace_context[idx].trace_slice_no++;
120621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    trace_context[idx].trace_slice_size = p->slice_data_size;
120721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
120872b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx, "VASliceParameterBufferH264\n");
120921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tslice_data_size = %d\n", p->slice_data_size);
121021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tslice_data_offset = %d\n", p->slice_data_offset);
121121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tslice_data_flag = %d\n", p->slice_data_flag);
121221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tslice_data_bit_offset = %d\n", p->slice_data_bit_offset);
121321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tfirst_mb_in_slice = %d\n", p->first_mb_in_slice);
121421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tslice_type = %d\n", p->slice_type);
121521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tdirect_spatial_mv_pred_flag = %d\n", p->direct_spatial_mv_pred_flag);
121621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tnum_ref_idx_l0_active_minus1 = %d\n", p->num_ref_idx_l0_active_minus1);
121721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tnum_ref_idx_l1_active_minus1 = %d\n", p->num_ref_idx_l1_active_minus1);
121821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tcabac_init_idc = %d\n", p->cabac_init_idc);
121921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tslice_qp_delta = %d\n", p->slice_qp_delta);
122021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tdisable_deblocking_filter_idc = %d\n", p->disable_deblocking_filter_idc);
122121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tslice_alpha_c0_offset_div2 = %d\n", p->slice_alpha_c0_offset_div2);
122236bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceMsg(idx, "\tslice_beta_offset_div2 = %d\n", p->slice_beta_offset_div2);
122321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
122421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    if (p->slice_type == 0 || p->slice_type == 1) {
122521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceMsg(idx, "\tRefPicList0 =");
12262687b6fb4c688fd1d045527aa48692c9db1ab141pingshix        for (i = 0; (i < p->num_ref_idx_l0_active_minus1 + 1 && i < 32); i++) {
12276044ab9a375eb73b08f45d87966652f98f918668Austin Yuan            va_TraceMsg(idx, "%08d-%08d-0x%08x-%08d-0x%08x\n", p->RefPicList0[i].TopFieldOrderCnt, p->RefPicList0[i].BottomFieldOrderCnt, p->RefPicList0[i].picture_id, p->RefPicList0[i].frame_idx,  p->RefPicList0[i].flags);
1228b0fac498ca4863166252f1268fda83394db54153Fei Jiang        }
122921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        if (p->slice_type == 1) {
123021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan            va_TraceMsg(idx, "\tRefPicList1 =");
12312687b6fb4c688fd1d045527aa48692c9db1ab141pingshix            for (i = 0; (i < p->num_ref_idx_l1_active_minus1 + 1 && i < 32); i++)
1232b0fac498ca4863166252f1268fda83394db54153Fei Jiang            {
12336044ab9a375eb73b08f45d87966652f98f918668Austin Yuan                va_TraceMsg(idx, "%08d-%08d-0x%08x-%08d-0x%08x\n", p->RefPicList1[i].TopFieldOrderCnt, p->RefPicList1[i].BottomFieldOrderCnt, p->RefPicList1[i].picture_id, p->RefPicList1[i].frame_idx, p->RefPicList1[i].flags);
1234b0fac498ca4863166252f1268fda83394db54153Fei Jiang            }
1235b0fac498ca4863166252f1268fda83394db54153Fei Jiang        }
1236b0fac498ca4863166252f1268fda83394db54153Fei Jiang    }
123721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
123821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tluma_log2_weight_denom = %d\n", p->luma_log2_weight_denom);
123921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tchroma_log2_weight_denom = %d\n", p->chroma_log2_weight_denom);
124021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tluma_weight_l0_flag = %d\n", p->luma_weight_l0_flag);
124121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    if (p->luma_weight_l0_flag) {
124221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        for (i = 0; i <=  p->num_ref_idx_l0_active_minus1; i++) {
124321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan            va_TraceMsg(idx, "\t%d ", p->luma_weight_l0[i]);
124421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan            va_TraceMsg(idx, "\t%d ", p->luma_offset_l0[i]);
1245b0fac498ca4863166252f1268fda83394db54153Fei Jiang        }
1246b0fac498ca4863166252f1268fda83394db54153Fei Jiang    }
124736bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang
124821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tchroma_weight_l0_flag = %d\n", p->chroma_weight_l0_flag);
124921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    if (p->chroma_weight_l0_flag) {
125021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        for (i = 0; i <= p->num_ref_idx_l0_active_minus1; i++) {
125121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan            va_TraceMsg(idx, "\t\t%d ", p->chroma_weight_l0[i][0]);
125221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan            va_TraceMsg(idx, "\t\t%d ", p->chroma_offset_l0[i][0]);
125321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan            va_TraceMsg(idx, "\t\t%d ", p->chroma_weight_l0[i][1]);
125421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan            va_TraceMsg(idx, "\t\t%d ", p->chroma_offset_l0[i][1]);
1255b0fac498ca4863166252f1268fda83394db54153Fei Jiang        }
1256b0fac498ca4863166252f1268fda83394db54153Fei Jiang    }
125721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
125821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tluma_weight_l1_flag = %d\n", p->luma_weight_l1_flag);
125921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    if (p->luma_weight_l1_flag) {
126021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        for (i = 0; i <=  p->num_ref_idx_l1_active_minus1; i++) {
126121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan            va_TraceMsg(idx, "\t\t%d ", p->luma_weight_l1[i]);
126221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan            va_TraceMsg(idx, "\t\t%d ", p->luma_offset_l1[i]);
1263b0fac498ca4863166252f1268fda83394db54153Fei Jiang        }
1264b0fac498ca4863166252f1268fda83394db54153Fei Jiang    }
126521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
126621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tchroma_weight_l1_flag = %d\n", p->chroma_weight_l1_flag);
126721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    if (p->chroma_weight_l1_flag) {
126821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        for (i = 0; i <= p->num_ref_idx_l1_active_minus1; i++) {
126921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan            va_TraceMsg(idx, "\t\t%d ", p->chroma_weight_l1[i][0]);
127021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan            va_TraceMsg(idx, "\t\t%d ", p->chroma_offset_l1[i][0]);
127121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan            va_TraceMsg(idx, "\t\t%d ", p->chroma_weight_l1[i][1]);
127221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan            va_TraceMsg(idx, "\t\t%d ", p->chroma_offset_l1[i][1]);
1273b0fac498ca4863166252f1268fda83394db54153Fei Jiang        }
127436bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang        va_TraceMsg(idx, "\n");
127536bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    }
127636bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceMsg(idx, NULL);
1277b0fac498ca4863166252f1268fda83394db54153Fei Jiang}
1278b0fac498ca4863166252f1268fda83394db54153Fei Jiang
1279b0fac498ca4863166252f1268fda83394db54153Fei Jiangstatic void va_TraceVAIQMatrixBufferH264(
1280b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VADisplay dpy,
1281b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VAContextID context,
1282b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VABufferID buffer,
1283b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VABufferType type,
1284b0fac498ca4863166252f1268fda83394db54153Fei Jiang    unsigned int size,
1285b0fac498ca4863166252f1268fda83394db54153Fei Jiang    unsigned int num_elements,
1286b0fac498ca4863166252f1268fda83394db54153Fei Jiang    void *data
1287b0fac498ca4863166252f1268fda83394db54153Fei Jiang)
1288b0fac498ca4863166252f1268fda83394db54153Fei Jiang{
128972b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    int i, j;
1290b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VAIQMatrixBufferH264* p = (VAIQMatrixBufferH264* )data;
129172b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang
129221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    DPY2INDEX(dpy);
129321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
129472b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx, "VAIQMatrixBufferH264\n");
129521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
129621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tScalingList4x4[6][16]=\n");
129721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    for (i = 0; i < 6; i++) {
129821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        for (j = 0; j < 16; j++) {
129921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan            va_TraceMsg(idx, "\t%d\t", p->ScalingList4x4[i][j]);
1300b0fac498ca4863166252f1268fda83394db54153Fei Jiang            if ((j + 1) % 8 == 0)
130121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan                va_TraceMsg(idx, "\n");
1302b0fac498ca4863166252f1268fda83394db54153Fei Jiang        }
1303b0fac498ca4863166252f1268fda83394db54153Fei Jiang    }
1304b0fac498ca4863166252f1268fda83394db54153Fei Jiang
130521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tScalingList8x8[2][64]=\n");
130621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    for (i = 0; i < 2; i++) {
130721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        for (j = 0; j < 64; j++) {
130821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan            va_TraceMsg(idx, "\t%d", p->ScalingList8x8[i][j]);
1309b0fac498ca4863166252f1268fda83394db54153Fei Jiang            if ((j + 1) % 8 == 0)
131021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan                va_TraceMsg(idx, "\n");
131136bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang        }
1312b0fac498ca4863166252f1268fda83394db54153Fei Jiang    }
131336bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang
131436bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceMsg(idx, NULL);
1315b0fac498ca4863166252f1268fda83394db54153Fei Jiang}
1316b0fac498ca4863166252f1268fda83394db54153Fei Jiang
1317409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan
1318409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan
131921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuanstatic void va_TraceVAEncSequenceParameterBufferH264(
132021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    VADisplay dpy,
132121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    VAContextID context,
132221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    VABufferID buffer,
132321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    VABufferType type,
132421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    unsigned int size,
132521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    unsigned int num_elements,
132621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    void *data)
132721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan{
132821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    VAEncSequenceParameterBufferH264 *p = (VAEncSequenceParameterBufferH264 *)data;
132921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    DPY2INDEX(dpy);
1330409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan    int i;
13314b672db6ee89c9846451bbab23cf18e93c4260b2hding
133272b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx, "VAEncSequenceParameterBufferH264\n");
13334b672db6ee89c9846451bbab23cf18e93c4260b2hding
133421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tseq_parameter_set_id = %d\n", p->seq_parameter_set_id);
133521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tlevel_idc = %d\n", p->level_idc);
133621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tintra_period = %d\n", p->intra_period);
133721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tintra_idr_period = %d\n", p->intra_idr_period);
13384b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tip_period = %d\n", p->ip_period);
13394b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tbits_per_second = %d\n", p->bits_per_second);
1340cceaa0568f77a7452857559614100b71fb36ee3awangkun    va_TraceMsg(idx, "\tmax_num_ref_frames = %d\n", p->max_num_ref_frames);
134121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tpicture_width_in_mbs = %d\n", p->picture_width_in_mbs);
134221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tpicture_height_in_mbs = %d\n", p->picture_height_in_mbs);
13434b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tchroma_format_idc = %d\n", p->seq_fields.bits.chroma_format_idc);
13444b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tframe_mbs_only_flag = %d\n", p->seq_fields.bits.frame_mbs_only_flag);
13454b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tmb_adaptive_frame_field_flag = %d\n", p->seq_fields.bits.mb_adaptive_frame_field_flag);
13464b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tseq_scaling_matrix_present_flag = %d\n", p->seq_fields.bits.seq_scaling_matrix_present_flag);
13474b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tdirect_8x8_inference_flag = %d\n", p->seq_fields.bits.direct_8x8_inference_flag);
13484b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tlog2_max_frame_num_minus4 = %d\n", p->seq_fields.bits.log2_max_frame_num_minus4);
13494b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tpic_order_cnt_type = %d\n", p->seq_fields.bits.pic_order_cnt_type);
13504b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tlog2_max_pic_order_cnt_lsb_minus4 = %d\n", p->seq_fields.bits.log2_max_pic_order_cnt_lsb_minus4);
13514b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tdelta_pic_order_always_zero_flag = %d\n", p->seq_fields.bits.delta_pic_order_always_zero_flag);
13524b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tbit_depth_luma_minus8 = %d\n", p->bit_depth_luma_minus8);
13534b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tbit_depth_chroma_minus8 = %d\n", p->bit_depth_chroma_minus8);
13544b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tnum_ref_frames_in_pic_order_cnt_cycle = %d\n", p->num_ref_frames_in_pic_order_cnt_cycle);
13554b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\toffset_for_non_ref_pic = %d\n", p->offset_for_non_ref_pic);
13564b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\toffset_for_top_to_bottom_field = %d\n", p->offset_for_top_to_bottom_field);
13574b672db6ee89c9846451bbab23cf18e93c4260b2hding    for(i = 0; i< p->max_num_ref_frames; ++i)
13584b672db6ee89c9846451bbab23cf18e93c4260b2hding        va_TraceMsg(idx, "\toffset_for_ref_frame[%d] = %d\n", i, p->offset_for_ref_frame[i]);
13594b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tframe_cropping_flag = %d\n", p->frame_cropping_flag);
13604b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tframe_crop_left_offset = %d\n", p->frame_crop_left_offset);
13614b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tframe_crop_right_offset = %d\n", p->frame_crop_right_offset);
13624b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tframe_crop_top_offset = %d\n", p->frame_crop_top_offset);
13634b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tframe_crop_bottom_offset = %d\n", p->frame_crop_bottom_offset);
13644b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tvui_parameters_present_flag = %d\n", p->vui_parameters_present_flag);
13654b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\taspect_ratio_info_present_flag = %d\n", p->vui_fields.bits.aspect_ratio_info_present_flag);
13664b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\ttiming_info_present_flag = %d\n", p->vui_fields.bits.timing_info_present_flag);
13674b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tbitstream_restriction_flag = %d\n", p->vui_fields.bits.bitstream_restriction_flag);
13684b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tlog2_max_mv_length_horizontal = %d\n", p->vui_fields.bits.log2_max_mv_length_horizontal);
13694b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tlog2_max_mv_length_vertical = %d\n", p->vui_fields.bits.log2_max_mv_length_vertical);
13704b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\taspect_ratio_idc = %d\n", p->aspect_ratio_idc);
13714b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tsar_width = %d\n", p->sar_width);
13724b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tsar_height = %d\n", p->sar_height);
13734b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tnum_units_in_tick = %d\n", p->num_units_in_tick);
13744b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\ttime_scale = %d\n", p->time_scale);
13754b672db6ee89c9846451bbab23cf18e93c4260b2hding
137636bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceMsg(idx, NULL);
137721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
137821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    /* start a new sequce, coded log file can be truncated */
137921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    trace_context[idx].trace_sequence_start = 1;
138036bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang
138121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    return;
138221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan}
138321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
13844b672db6ee89c9846451bbab23cf18e93c4260b2hding
138521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuanstatic void va_TraceVAEncPictureParameterBufferH264(
138621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    VADisplay dpy,
138721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    VAContextID context,
138821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    VABufferID buffer,
138921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    VABufferType type,
139021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    unsigned int size,
139121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    unsigned int num_elements,
139221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    void *data)
139321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan{
139421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    VAEncPictureParameterBufferH264 *p = (VAEncPictureParameterBufferH264 *)data;
139521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    DPY2INDEX(dpy);
13964b672db6ee89c9846451bbab23cf18e93c4260b2hding    int i;
13974b672db6ee89c9846451bbab23cf18e93c4260b2hding
13980295fce5ef0741be8ea0a8c67ea69e459deda2fcFei Jiang    va_TraceMsg(idx, "VAEncPictureParameterBufferH264\n");
13994b672db6ee89c9846451bbab23cf18e93c4260b2hding
14004b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tCurrPic.picture_id = 0x%08x\n", p->CurrPic.picture_id);
14014b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tCurrPic.frame_idx = %d\n", p->CurrPic.frame_idx);
14024b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tCurrPic.flags = %d\n", p->CurrPic.flags);
14034b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tCurrPic.TopFieldOrderCnt = %d\n", p->CurrPic.TopFieldOrderCnt);
14044b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tCurrPic.BottomFieldOrderCnt = %d\n", p->CurrPic.BottomFieldOrderCnt);
14056044ab9a375eb73b08f45d87966652f98f918668Austin Yuan    va_TraceMsg(idx, "\tReferenceFrames (TopFieldOrderCnt-BottomFieldOrderCnt-picture_id-frame_idx-flags):\n");
14064b672db6ee89c9846451bbab23cf18e93c4260b2hding    for (i = 0; i < 16; i++)
14074b672db6ee89c9846451bbab23cf18e93c4260b2hding    {
14086044ab9a375eb73b08f45d87966652f98f918668Austin Yuan        if ((p->ReferenceFrames[i].picture_id != VA_INVALID_SURFACE) &&
14096044ab9a375eb73b08f45d87966652f98f918668Austin Yuan            ((p->ReferenceFrames[i].flags & VA_PICTURE_H264_INVALID) == 0)) {
14106044ab9a375eb73b08f45d87966652f98f918668Austin Yuan            va_TraceMsg(idx, "\t\t%08d-%08d-0x%08x-%08d-0x%08x\n",
14114b672db6ee89c9846451bbab23cf18e93c4260b2hding                        p->ReferenceFrames[i].TopFieldOrderCnt,
14124b672db6ee89c9846451bbab23cf18e93c4260b2hding                        p->ReferenceFrames[i].BottomFieldOrderCnt,
14134b672db6ee89c9846451bbab23cf18e93c4260b2hding                        p->ReferenceFrames[i].picture_id,
14146044ab9a375eb73b08f45d87966652f98f918668Austin Yuan                        p->ReferenceFrames[i].frame_idx,
14156044ab9a375eb73b08f45d87966652f98f918668Austin Yuan                        p->ReferenceFrames[i].flags
14166044ab9a375eb73b08f45d87966652f98f918668Austin Yuan                        );
14174b672db6ee89c9846451bbab23cf18e93c4260b2hding        } else
14186044ab9a375eb73b08f45d87966652f98f918668Austin Yuan            va_TraceMsg(idx, "\t\tinv-inv-inv-inv-inv\n");
14194b672db6ee89c9846451bbab23cf18e93c4260b2hding    }
142072b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx, "\tcoded_buf = %08x\n", p->coded_buf);
14214b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tpic_parameter_set_id = %d\n", p->pic_parameter_set_id);
14224b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tseq_parameter_set_id = %d\n", p->seq_parameter_set_id);
142372b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx, "\tlast_picture = 0x%08x\n", p->last_picture);
14244b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tframe_num = %d\n", p->frame_num);
14254b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tpic_init_qp = %d\n", p->pic_init_qp);
14264b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tnum_ref_idx_l0_active_minus1 = %d\n", p->num_ref_idx_l0_active_minus1);
14274b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tnum_ref_idx_l1_active_minus1 = %d\n", p->num_ref_idx_l1_active_minus1);
14284b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tchroma_qp_index_offset = %d\n", p->chroma_qp_index_offset);
14294b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tsecond_chroma_qp_index_offset = %d\n", p->second_chroma_qp_index_offset);
14304b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tpic_fields = 0x%03x\n", p->pic_fields.value);
14314b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tidr_pic_flag = %d\n", p->pic_fields.bits.idr_pic_flag);
14324b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\treference_pic_flag = %d\n", p->pic_fields.bits.reference_pic_flag);
14334b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tentropy_coding_mode_flag = %d\n", p->pic_fields.bits.entropy_coding_mode_flag);
14344b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tweighted_pred_flag = %d\n", p->pic_fields.bits.weighted_pred_flag);
14354b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tweighted_bipred_idc = %d\n", p->pic_fields.bits.weighted_bipred_idc);
14364b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tconstrained_intra_pred_flag = %d\n", p->pic_fields.bits.constrained_intra_pred_flag);
14374b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\ttransform_8x8_mode_flag = %d\n", p->pic_fields.bits.transform_8x8_mode_flag);
14384b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tdeblocking_filter_control_present_flag = %d\n", p->pic_fields.bits.deblocking_filter_control_present_flag);
14394b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tredundant_pic_cnt_present_flag = %d\n", p->pic_fields.bits.redundant_pic_cnt_present_flag);
14404b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tpic_order_present_flag = %d\n", p->pic_fields.bits.pic_order_present_flag);
14414b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tpic_scaling_matrix_present_flag = %d\n", p->pic_fields.bits.pic_scaling_matrix_present_flag);
14424b672db6ee89c9846451bbab23cf18e93c4260b2hding
144336bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceMsg(idx, NULL);
144421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
144521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    trace_context[idx].trace_codedbuf =  p->coded_buf;
14464b672db6ee89c9846451bbab23cf18e93c4260b2hding
144721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    return;
144821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan}
144921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
145021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuanstatic void va_TraceVAEncSliceParameterBuffer(
145121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    VADisplay dpy,
145221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    VAContextID context,
145321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    VABufferID buffer,
145421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    VABufferType type,
145521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    unsigned int size,
145621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    unsigned int num_elements,
145721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    void *data)
145821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan{
145921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    VAEncSliceParameterBuffer* p = (VAEncSliceParameterBuffer*)data;
146021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    DPY2INDEX(dpy);
146121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
146272b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx, "VAEncSliceParameterBuffer\n");
146321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
146421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tstart_row_number = %d\n", p->start_row_number);
146521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tslice_height = %d\n", p->slice_height);
146621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tslice_flags.is_intra = %d\n", p->slice_flags.bits.is_intra);
146721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tslice_flags.disable_deblocking_filter_idc = %d\n", p->slice_flags.bits.disable_deblocking_filter_idc);
1468cceaa0568f77a7452857559614100b71fb36ee3awangkun    va_TraceMsg(idx, "\tslice_flags.uses_long_term_ref = %d\n", p->slice_flags.bits.uses_long_term_ref);
1469cceaa0568f77a7452857559614100b71fb36ee3awangkun    va_TraceMsg(idx, "\tslice_flags.is_long_term_ref = %d\n", p->slice_flags.bits.is_long_term_ref);
147036bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceMsg(idx, NULL);
147136bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang
147221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    return;
147321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan}
147421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
14754b672db6ee89c9846451bbab23cf18e93c4260b2hdingstatic void va_TraceVAEncSliceParameterBufferH264(
14764b672db6ee89c9846451bbab23cf18e93c4260b2hding    VADisplay dpy,
14774b672db6ee89c9846451bbab23cf18e93c4260b2hding    VAContextID context,
14784b672db6ee89c9846451bbab23cf18e93c4260b2hding    VABufferID buffer,
14794b672db6ee89c9846451bbab23cf18e93c4260b2hding    VABufferType type,
14804b672db6ee89c9846451bbab23cf18e93c4260b2hding    unsigned int size,
14814b672db6ee89c9846451bbab23cf18e93c4260b2hding    unsigned int num_elements,
14824b672db6ee89c9846451bbab23cf18e93c4260b2hding    void *data)
14834b672db6ee89c9846451bbab23cf18e93c4260b2hding{
14844b672db6ee89c9846451bbab23cf18e93c4260b2hding    VAEncSliceParameterBufferH264* p = (VAEncSliceParameterBufferH264*)data;
14854b672db6ee89c9846451bbab23cf18e93c4260b2hding    DPY2INDEX(dpy);
14864b672db6ee89c9846451bbab23cf18e93c4260b2hding    int i;
14874b672db6ee89c9846451bbab23cf18e93c4260b2hding
1488ac1c6d1120d34338e679ac23f1348ade77b61317Elaine Wang    if (!p)
1489ac1c6d1120d34338e679ac23f1348ade77b61317Elaine Wang        return;
14904b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "VAEncSliceParameterBufferH264\n");
14914b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tmacroblock_address = %d\n", p->macroblock_address);
14924b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tnum_macroblocks = %d\n", p->num_macroblocks);
14934b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tmacroblock_info = %08x\n", p->macroblock_info);
14944b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tslice_type = %d\n", p->slice_type);
14954b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tpic_parameter_set_id = %d\n", p->pic_parameter_set_id);
14964b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tidr_pic_id = %d\n", p->idr_pic_id);
14974b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tpic_order_cnt_lsb = %d\n", p->pic_order_cnt_lsb);
14984b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tdelta_pic_order_cnt_bottom = %d\n", p->delta_pic_order_cnt_bottom);
14994b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tdelta_pic_order_cnt[0] = %d\n", p->delta_pic_order_cnt[0]);
15004b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tdelta_pic_order_cnt[1] = %d\n", p->delta_pic_order_cnt[1]);
15014b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tdirect_spatial_mv_pred_flag = %d\n", p->direct_spatial_mv_pred_flag);
15024b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tnum_ref_idx_active_override_flag = %d\n", p->num_ref_idx_active_override_flag);
15034b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tnum_ref_idx_l1_active_minus1 = %d\n", p->num_ref_idx_l1_active_minus1);
15044b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tslice_beta_offset_div2 = %d\n", p->slice_beta_offset_div2);
15054b672db6ee89c9846451bbab23cf18e93c4260b2hding
15064b672db6ee89c9846451bbab23cf18e93c4260b2hding    if (p->slice_type == 0 || p->slice_type == 1) {
15076044ab9a375eb73b08f45d87966652f98f918668Austin Yuan        va_TraceMsg(idx, "\tRefPicList0 (TopFieldOrderCnt-BottomFieldOrderCnt-picture_id-frame_idx-flags):\n");
15086044ab9a375eb73b08f45d87966652f98f918668Austin Yuan        for (i = 0; i < 32; i++) {
15096044ab9a375eb73b08f45d87966652f98f918668Austin Yuan            if ((p->RefPicList0[i].picture_id != VA_INVALID_SURFACE) &&
15106044ab9a375eb73b08f45d87966652f98f918668Austin Yuan                ((p->RefPicList0[i].flags & VA_PICTURE_H264_INVALID) == 0))
15116044ab9a375eb73b08f45d87966652f98f918668Austin Yuan                va_TraceMsg(idx, "\t\t%08d-%08d-0x%08x-%08d-0x%08x\n",
15126044ab9a375eb73b08f45d87966652f98f918668Austin Yuan                            p->RefPicList0[i].TopFieldOrderCnt,
15136044ab9a375eb73b08f45d87966652f98f918668Austin Yuan                            p->RefPicList0[i].BottomFieldOrderCnt,
15146044ab9a375eb73b08f45d87966652f98f918668Austin Yuan                            p->RefPicList0[i].picture_id,
15156044ab9a375eb73b08f45d87966652f98f918668Austin Yuan                            p->RefPicList0[i].frame_idx,
15166044ab9a375eb73b08f45d87966652f98f918668Austin Yuan                            p->RefPicList0[i].flags);
15176044ab9a375eb73b08f45d87966652f98f918668Austin Yuan            else
15186044ab9a375eb73b08f45d87966652f98f918668Austin Yuan                break;
15194b672db6ee89c9846451bbab23cf18e93c4260b2hding        }
15206044ab9a375eb73b08f45d87966652f98f918668Austin Yuan    }
15216044ab9a375eb73b08f45d87966652f98f918668Austin Yuan
15226044ab9a375eb73b08f45d87966652f98f918668Austin Yuan    if (p->slice_type == 1) {
15236044ab9a375eb73b08f45d87966652f98f918668Austin Yuan        va_TraceMsg(idx, "\tRefPicList1 (TopFieldOrderCnt-BottomFieldOrderCnt-picture_id-frame_idx-flags):\n");
15246044ab9a375eb73b08f45d87966652f98f918668Austin Yuan        for (i = 0; i < 32; i++) {
15256044ab9a375eb73b08f45d87966652f98f918668Austin Yuan            if ((p->RefPicList1[i].picture_id != VA_INVALID_SURFACE) &&
15266044ab9a375eb73b08f45d87966652f98f918668Austin Yuan                ((p->RefPicList1[i].flags & VA_PICTURE_H264_INVALID) == 0))
15276044ab9a375eb73b08f45d87966652f98f918668Austin Yuan                va_TraceMsg(idx, "\t\t%08d-%08d-0x%08x-%08d-0x%08d\n",
15286044ab9a375eb73b08f45d87966652f98f918668Austin Yuan                            p->RefPicList1[i].TopFieldOrderCnt,
15296044ab9a375eb73b08f45d87966652f98f918668Austin Yuan                            p->RefPicList1[i].BottomFieldOrderCnt,
15306044ab9a375eb73b08f45d87966652f98f918668Austin Yuan                            p->RefPicList1[i].picture_id,
15316044ab9a375eb73b08f45d87966652f98f918668Austin Yuan                            p->RefPicList1[i].frame_idx,
15326044ab9a375eb73b08f45d87966652f98f918668Austin Yuan                            p->RefPicList1[i].flags
15336044ab9a375eb73b08f45d87966652f98f918668Austin Yuan                            );
15346044ab9a375eb73b08f45d87966652f98f918668Austin Yuan            else
15356044ab9a375eb73b08f45d87966652f98f918668Austin Yuan                break;
15364b672db6ee89c9846451bbab23cf18e93c4260b2hding        }
15374b672db6ee89c9846451bbab23cf18e93c4260b2hding    }
15386044ab9a375eb73b08f45d87966652f98f918668Austin Yuan
15394b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tluma_log2_weight_denom = %d\n", p->luma_log2_weight_denom);
15404b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tchroma_log2_weight_denom = %d\n", p->chroma_log2_weight_denom);
15414b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tluma_weight_l0_flag = %d\n", p->luma_weight_l0_flag);
1542ac1c6d1120d34338e679ac23f1348ade77b61317Elaine Wang    if (p->luma_weight_l0_flag && p->num_ref_idx_l0_active_minus1 < 32) {
15434b672db6ee89c9846451bbab23cf18e93c4260b2hding        for (i = 0; i <=  p->num_ref_idx_l0_active_minus1; i++) {
15444b672db6ee89c9846451bbab23cf18e93c4260b2hding            va_TraceMsg(idx, "\t%d ", p->luma_weight_l0[i]);
15454b672db6ee89c9846451bbab23cf18e93c4260b2hding            va_TraceMsg(idx, "\t%d ", p->luma_offset_l0[i]);
15464b672db6ee89c9846451bbab23cf18e93c4260b2hding        }
15474b672db6ee89c9846451bbab23cf18e93c4260b2hding    }
15484b672db6ee89c9846451bbab23cf18e93c4260b2hding
15494b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tchroma_weight_l0_flag = %d\n", p->chroma_weight_l0_flag);
1550ac1c6d1120d34338e679ac23f1348ade77b61317Elaine Wang    if (p->chroma_weight_l0_flag && p->num_ref_idx_l0_active_minus1 < 32) {
15514b672db6ee89c9846451bbab23cf18e93c4260b2hding        for (i = 0; i <= p->num_ref_idx_l0_active_minus1; i++) {
15524b672db6ee89c9846451bbab23cf18e93c4260b2hding            va_TraceMsg(idx, "\t\t%d ", p->chroma_weight_l0[i][0]);
15534b672db6ee89c9846451bbab23cf18e93c4260b2hding            va_TraceMsg(idx, "\t\t%d ", p->chroma_offset_l0[i][0]);
15544b672db6ee89c9846451bbab23cf18e93c4260b2hding            va_TraceMsg(idx, "\t\t%d ", p->chroma_weight_l0[i][1]);
15554b672db6ee89c9846451bbab23cf18e93c4260b2hding            va_TraceMsg(idx, "\t\t%d ", p->chroma_offset_l0[i][1]);
15564b672db6ee89c9846451bbab23cf18e93c4260b2hding        }
15574b672db6ee89c9846451bbab23cf18e93c4260b2hding    }
15584b672db6ee89c9846451bbab23cf18e93c4260b2hding
15594b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tluma_weight_l1_flag = %d\n", p->luma_weight_l1_flag);
1560ac1c6d1120d34338e679ac23f1348ade77b61317Elaine Wang    if (p->luma_weight_l1_flag && p->num_ref_idx_l1_active_minus1 < 32) {
15614b672db6ee89c9846451bbab23cf18e93c4260b2hding        for (i = 0; i <=  p->num_ref_idx_l1_active_minus1; i++) {
15624b672db6ee89c9846451bbab23cf18e93c4260b2hding            va_TraceMsg(idx, "\t\t%d ", p->luma_weight_l1[i]);
15634b672db6ee89c9846451bbab23cf18e93c4260b2hding            va_TraceMsg(idx, "\t\t%d ", p->luma_offset_l1[i]);
15644b672db6ee89c9846451bbab23cf18e93c4260b2hding        }
15654b672db6ee89c9846451bbab23cf18e93c4260b2hding    }
15664b672db6ee89c9846451bbab23cf18e93c4260b2hding
15674b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tchroma_weight_l1_flag = %d\n", p->chroma_weight_l1_flag);
1568ac1c6d1120d34338e679ac23f1348ade77b61317Elaine Wang    if (p->chroma_weight_l1_flag && p->num_ref_idx_l1_active_minus1 < 32) {
15694b672db6ee89c9846451bbab23cf18e93c4260b2hding        for (i = 0; i <= p->num_ref_idx_l1_active_minus1; i++) {
15704b672db6ee89c9846451bbab23cf18e93c4260b2hding            va_TraceMsg(idx, "\t\t%d ", p->chroma_weight_l1[i][0]);
15714b672db6ee89c9846451bbab23cf18e93c4260b2hding            va_TraceMsg(idx, "\t\t%d ", p->chroma_offset_l1[i][0]);
15724b672db6ee89c9846451bbab23cf18e93c4260b2hding            va_TraceMsg(idx, "\t\t%d ", p->chroma_weight_l1[i][1]);
15734b672db6ee89c9846451bbab23cf18e93c4260b2hding            va_TraceMsg(idx, "\t\t%d ", p->chroma_offset_l1[i][1]);
15744b672db6ee89c9846451bbab23cf18e93c4260b2hding        }
15754b672db6ee89c9846451bbab23cf18e93c4260b2hding        va_TraceMsg(idx, "\n");
15764b672db6ee89c9846451bbab23cf18e93c4260b2hding    }
15774b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, NULL);
15784b672db6ee89c9846451bbab23cf18e93c4260b2hding
15794b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tcabac_init_idc = %d\n", p->cabac_init_idc);
15804b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tslice_qp_delta = %d\n", p->slice_qp_delta);
15814b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tdisable_deblocking_filter_idc = %d\n", p->disable_deblocking_filter_idc);
15824b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tslice_alpha_c0_offset_div2 = %d\n", p->slice_alpha_c0_offset_div2);
15834b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, "\tslice_beta_offset_div2 = %d\n", p->slice_beta_offset_div2);
15844b672db6ee89c9846451bbab23cf18e93c4260b2hding    va_TraceMsg(idx, NULL);
15854b672db6ee89c9846451bbab23cf18e93c4260b2hding
15864b672db6ee89c9846451bbab23cf18e93c4260b2hding    return;
15874b672db6ee89c9846451bbab23cf18e93c4260b2hding}
15884b672db6ee89c9846451bbab23cf18e93c4260b2hding
158921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuanstatic void va_TraceVAEncMiscParameterBuffer(
159021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    VADisplay dpy,
159121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    VAContextID context,
159221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    VABufferID buffer,
159321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    VABufferType type,
159421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    unsigned int size,
159521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    unsigned int num_elements,
159621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    void *data)
159721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan{
159821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    VAEncMiscParameterBuffer* tmp = (VAEncMiscParameterBuffer*)data;
159921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    DPY2INDEX(dpy);
160021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
160121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    switch (tmp->type) {
160221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    case VAEncMiscParameterTypeFrameRate:
160321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    {
160421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        VAEncMiscParameterFrameRate *p = (VAEncMiscParameterFrameRate *)tmp->data;
160572b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang        va_TraceMsg(idx, "VAEncMiscParameterFrameRate\n");
160621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceMsg(idx, "\tframerate = %d\n", p->framerate);
160721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
160821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        break;
160921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    }
161021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    case VAEncMiscParameterTypeRateControl:
161121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    {
161221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        VAEncMiscParameterRateControl *p = (VAEncMiscParameterRateControl *)tmp->data;
161321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
161472b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang        va_TraceMsg(idx, "VAEncMiscParameterRateControl\n");
161521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceMsg(idx, "\tbits_per_second = %d\n", p->bits_per_second);
161621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceMsg(idx, "\twindow_size = %d\n", p->window_size);
161721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceMsg(idx, "\tinitial_qp = %d\n", p->initial_qp);
161821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceMsg(idx, "\tmin_qp = %d\n", p->min_qp);
16193ba486105912b27b566ccf65e2729231aa3f8a31Austin Yuan        va_TraceMsg(idx, "\tbasic_unit_size = %d\n", p->basic_unit_size);
16203ba486105912b27b566ccf65e2729231aa3f8a31Austin Yuan        va_TraceMsg(idx, "\trc_flags.reset = %d \n", p->rc_flags.bits.reset);
16213ba486105912b27b566ccf65e2729231aa3f8a31Austin Yuan        va_TraceMsg(idx, "\trc_flags.disable_frame_skip = %d\n", p->rc_flags.bits.disable_frame_skip);
16223ba486105912b27b566ccf65e2729231aa3f8a31Austin Yuan        va_TraceMsg(idx, "\trc_flags.disable_bit_stuffing = %d\n", p->rc_flags.bits.disable_bit_stuffing);
162321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        break;
162421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    }
162521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    case VAEncMiscParameterTypeMaxSliceSize:
162621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    {
162721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        VAEncMiscParameterMaxSliceSize *p = (VAEncMiscParameterMaxSliceSize *)tmp->data;
162821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
162972b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang        va_TraceMsg(idx, "VAEncMiscParameterTypeMaxSliceSize\n");
163021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceMsg(idx, "\tmax_slice_size = %d\n", p->max_slice_size);
163121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        break;
163221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    }
163321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    case VAEncMiscParameterTypeAIR:
163421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    {
163521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        VAEncMiscParameterAIR *p = (VAEncMiscParameterAIR *)tmp->data;
163621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
163772b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang        va_TraceMsg(idx, "VAEncMiscParameterAIR\n");
163821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceMsg(idx, "\tair_num_mbs = %d\n", p->air_num_mbs);
163921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceMsg(idx, "\tair_threshold = %d\n", p->air_threshold);
164021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceMsg(idx, "\tair_auto = %d\n", p->air_auto);
164121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        break;
164221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    }
16434b672db6ee89c9846451bbab23cf18e93c4260b2hding    case VAEncMiscParameterTypeHRD:
16444b672db6ee89c9846451bbab23cf18e93c4260b2hding    {
16454b672db6ee89c9846451bbab23cf18e93c4260b2hding        VAEncMiscParameterHRD *p = (VAEncMiscParameterHRD *)tmp->data;
16464b672db6ee89c9846451bbab23cf18e93c4260b2hding
16474b672db6ee89c9846451bbab23cf18e93c4260b2hding        va_TraceMsg(idx, "VAEncMiscParameterHRD\n");
16484b672db6ee89c9846451bbab23cf18e93c4260b2hding        va_TraceMsg(idx, "\tinitial_buffer_fullness = %d\n", p->initial_buffer_fullness);
16494b672db6ee89c9846451bbab23cf18e93c4260b2hding        va_TraceMsg(idx, "\tbuffer_size = %d\n", p->buffer_size);
16504b672db6ee89c9846451bbab23cf18e93c4260b2hding        break;
16514b672db6ee89c9846451bbab23cf18e93c4260b2hding    }
165221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    default:
165321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceMsg(idx, "invalid VAEncMiscParameterBuffer type = %d\n", tmp->type);
165421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        break;
165521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    }
165636bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceMsg(idx, NULL);
165736bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang
165821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    return;
165921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan}
166021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
166121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
1662b0fac498ca4863166252f1268fda83394db54153Fei Jiangstatic void va_TraceVAPictureParameterBufferVC1(
1663b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VADisplay dpy,
1664b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VAContextID context,
1665b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VABufferID buffer,
1666b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VABufferType type,
1667b0fac498ca4863166252f1268fda83394db54153Fei Jiang    unsigned int size,
1668b0fac498ca4863166252f1268fda83394db54153Fei Jiang    unsigned int num_elements,
1669b0fac498ca4863166252f1268fda83394db54153Fei Jiang    void *data
1670b0fac498ca4863166252f1268fda83394db54153Fei Jiang)
1671b0fac498ca4863166252f1268fda83394db54153Fei Jiang{
1672b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VAPictureParameterBufferVC1* p = (VAPictureParameterBufferVC1*)data;
167321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    DPY2INDEX(dpy);
167421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
167572b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx, "VAPictureParameterBufferVC1\n");
167621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
167721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tforward_reference_picture = 0x%08x\n", p->forward_reference_picture);
167821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tbackward_reference_picture = 0x%08x\n", p->backward_reference_picture);
167921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tinloop_decoded_picture = 0x%08x\n", p->inloop_decoded_picture);
168021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
168121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tpulldown = %d\n", p->sequence_fields.bits.pulldown);
168221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tinterlace = %d\n", p->sequence_fields.bits.interlace);
168321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\ttfcntrflag = %d\n", p->sequence_fields.bits.tfcntrflag);
168421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tfinterpflag = %d\n", p->sequence_fields.bits.finterpflag);
168521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tpsf = %d\n", p->sequence_fields.bits.psf);
168621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tmultires = %d\n", p->sequence_fields.bits.multires);
168721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\toverlap = %d\n", p->sequence_fields.bits.overlap);
168821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tsyncmarker = %d\n", p->sequence_fields.bits.syncmarker);
168921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\trangered = %d\n", p->sequence_fields.bits.rangered);
169021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tmax_b_frames = %d\n", p->sequence_fields.bits.max_b_frames);
169136bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceMsg(idx, "\tprofile = %d\n", p->sequence_fields.bits.profile);
169221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tcoded_width = %d\n", p->coded_width);
169321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tcoded_height = %d\n", p->coded_height);
169421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tclosed_entry = %d\n", p->entrypoint_fields.bits.closed_entry);
169521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tbroken_link = %d\n", p->entrypoint_fields.bits.broken_link);
169621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tclosed_entry = %d\n", p->entrypoint_fields.bits.closed_entry);
169721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tpanscan_flag = %d\n", p->entrypoint_fields.bits.panscan_flag);
169821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tloopfilter = %d\n", p->entrypoint_fields.bits.loopfilter);
169921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tconditional_overlap_flag = %d\n", p->conditional_overlap_flag);
170021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tfast_uvmc_flag = %d\n", p->fast_uvmc_flag);
170121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\trange_mapping_luma_flag = %d\n", p->range_mapping_fields.bits.luma_flag);
170221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\trange_mapping_luma = %d\n", p->range_mapping_fields.bits.luma);
170321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\trange_mapping_chroma_flag = %d\n", p->range_mapping_fields.bits.chroma_flag);
170421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\trange_mapping_chroma = %d\n", p->range_mapping_fields.bits.chroma);
170521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tb_picture_fraction = %d\n", p->b_picture_fraction);
170621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tcbp_table = %d\n", p->cbp_table);
170721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tmb_mode_table = %d\n", p->mb_mode_table);
170821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\trange_reduction_frame = %d\n", p->range_reduction_frame);
170921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\trounding_control = %d\n", p->rounding_control);
171021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tpost_processing = %d\n", p->post_processing);
171121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tpicture_resolution_index = %d\n", p->picture_resolution_index);
171221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tluma_scale = %d\n", p->luma_scale);
171321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tluma_shift = %d\n", p->luma_shift);
171421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tpicture_type = %d\n", p->picture_fields.bits.picture_type);
171521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tframe_coding_mode = %d\n", p->picture_fields.bits.frame_coding_mode);
171621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\ttop_field_first = %d\n", p->picture_fields.bits.top_field_first);
171721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tis_first_field = %d\n", p->picture_fields.bits.is_first_field);
171821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tintensity_compensation = %d\n", p->picture_fields.bits.intensity_compensation);
171921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tmv_type_mb = %d\n", p->raw_coding.flags.mv_type_mb);
172021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tdirect_mb = %d\n", p->raw_coding.flags.direct_mb);
172121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tskip_mb = %d\n", p->raw_coding.flags.skip_mb);
172221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tfield_tx = %d\n", p->raw_coding.flags.field_tx);
172321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tforward_mb = %d\n", p->raw_coding.flags.forward_mb);
172421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tac_pred = %d\n", p->raw_coding.flags.ac_pred);
172521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\toverflags = %d\n", p->raw_coding.flags.overflags);
172621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tbp_mv_type_mb = %d\n", p->bitplane_present.flags.bp_mv_type_mb);
172721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tbp_direct_mb = %d\n", p->bitplane_present.flags.bp_direct_mb);
172821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tbp_skip_mb = %d\n", p->bitplane_present.flags.bp_skip_mb);
172921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tbp_field_tx = %d\n", p->bitplane_present.flags.bp_field_tx);
173021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tbp_forward_mb = %d\n", p->bitplane_present.flags.bp_forward_mb);
173121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tbp_ac_pred = %d\n", p->bitplane_present.flags.bp_ac_pred);
173221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tbp_overflags = %d\n", p->bitplane_present.flags.bp_overflags);
173321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\treference_distance_flag = %d\n", p->reference_fields.bits.reference_distance_flag);
173421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\treference_distance = %d\n", p->reference_fields.bits.reference_distance);
173521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tnum_reference_pictures = %d\n", p->reference_fields.bits.num_reference_pictures);
173621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\treference_field_pic_indicator = %d\n", p->reference_fields.bits.reference_field_pic_indicator);
173721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tmv_mode = %d\n", p->mv_fields.bits.mv_mode);
173821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tmv_mode2 = %d\n", p->mv_fields.bits.mv_mode2);
173921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tmv_table = %d\n", p->mv_fields.bits.mv_table);
174021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\ttwo_mv_block_pattern_table = %d\n", p->mv_fields.bits.two_mv_block_pattern_table);
174121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tfour_mv_switch = %d\n", p->mv_fields.bits.four_mv_switch);
174221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tfour_mv_block_pattern_table = %d\n", p->mv_fields.bits.four_mv_block_pattern_table);
174321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\textended_mv_flag = %d\n", p->mv_fields.bits.extended_mv_flag);
174421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\textended_mv_range = %d\n", p->mv_fields.bits.extended_mv_range);
174521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\textended_dmv_flag = %d\n", p->mv_fields.bits.extended_dmv_flag);
174621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\textended_dmv_range = %d\n", p->mv_fields.bits.extended_dmv_range);
174721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tdquant = %d\n", p->pic_quantizer_fields.bits.dquant);
174821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tquantizer = %d\n", p->pic_quantizer_fields.bits.quantizer);
174921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\thalf_qp = %d\n", p->pic_quantizer_fields.bits.half_qp);
175021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tpic_quantizer_scale = %d\n", p->pic_quantizer_fields.bits.pic_quantizer_scale);
175121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tpic_quantizer_type = %d\n", p->pic_quantizer_fields.bits.pic_quantizer_type);
175221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tdq_frame = %d\n", p->pic_quantizer_fields.bits.dq_frame);
175321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tdq_profile = %d\n", p->pic_quantizer_fields.bits.dq_profile);
175421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tdq_sb_edge = %d\n", p->pic_quantizer_fields.bits.dq_sb_edge);
175521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tdq_db_edge = %d\n", p->pic_quantizer_fields.bits.dq_db_edge);
175621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tdq_binary_level = %d\n", p->pic_quantizer_fields.bits.dq_binary_level);
175721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\talt_pic_quantizer = %d\n", p->pic_quantizer_fields.bits.alt_pic_quantizer);
175821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tvariable_sized_transform_flag = %d\n", p->transform_fields.bits.variable_sized_transform_flag);
175921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tmb_level_transform_type_flag = %d\n", p->transform_fields.bits.mb_level_transform_type_flag);
176021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tframe_level_transform_type = %d\n", p->transform_fields.bits.frame_level_transform_type);
176121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\ttransform_ac_codingset_idx1 = %d\n", p->transform_fields.bits.transform_ac_codingset_idx1);
176221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\ttransform_ac_codingset_idx2 = %d\n", p->transform_fields.bits.transform_ac_codingset_idx2);
176321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tintra_transform_dc_table = %d\n", p->transform_fields.bits.intra_transform_dc_table);
176436bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceMsg(idx, NULL);
1765b0fac498ca4863166252f1268fda83394db54153Fei Jiang}
1766b0fac498ca4863166252f1268fda83394db54153Fei Jiang
1767b0fac498ca4863166252f1268fda83394db54153Fei Jiangstatic void va_TraceVASliceParameterBufferVC1(
1768b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VADisplay dpy,
1769b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VAContextID context,
1770b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VABufferID buffer,
1771b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VABufferType type,
1772b0fac498ca4863166252f1268fda83394db54153Fei Jiang    unsigned int size,
1773b0fac498ca4863166252f1268fda83394db54153Fei Jiang    unsigned int num_elements,
1774b0fac498ca4863166252f1268fda83394db54153Fei Jiang    void* data
1775b0fac498ca4863166252f1268fda83394db54153Fei Jiang)
1776b0fac498ca4863166252f1268fda83394db54153Fei Jiang{
1777b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VASliceParameterBufferVC1 *p = (VASliceParameterBufferVC1*)data;
177821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    DPY2INDEX(dpy);
177921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
178021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    trace_context[idx].trace_slice_no++;
178121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    trace_context[idx].trace_slice_size = p->slice_data_size;
1782b0fac498ca4863166252f1268fda83394db54153Fei Jiang
178372b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang    va_TraceMsg(idx, "VASliceParameterBufferVC1\n");
178421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tslice_data_size = %d\n", p->slice_data_size);
178521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tslice_data_offset = %d\n", p->slice_data_offset);
178621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tslice_data_flag = %d\n", p->slice_data_flag);
178721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tmacroblock_offset = %d\n", p->macroblock_offset);
178821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tslice_vertical_position = %d\n", p->slice_vertical_position);
178936bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceMsg(idx, NULL);
1790b0fac498ca4863166252f1268fda83394db54153Fei Jiang}
1791b0fac498ca4863166252f1268fda83394db54153Fei Jiang
1792293abef4f8172cc061d26f9d909c281b4190b514Bruce Bearevoid va_TraceBeginPicture(
1793b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VADisplay dpy,
1794b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VAContextID context,
1795b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VASurfaceID render_target
1796b0fac498ca4863166252f1268fda83394db54153Fei Jiang)
1797b0fac498ca4863166252f1268fda83394db54153Fei Jiang{
179821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    DPY2INDEX(dpy);
1799b0fac498ca4863166252f1268fda83394db54153Fei Jiang
180021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    TRACE_FUNCNAME(idx);
1801cceaa0568f77a7452857559614100b71fb36ee3awangkun
180221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tcontext = 0x%08x\n", context);
180321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\trender_targets = 0x%08x\n", render_target);
1804cceaa0568f77a7452857559614100b71fb36ee3awangkun    va_TraceMsg(idx, "\tframe_count  = #%d\n", trace_context[idx].trace_frame_no);
180536bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceMsg(idx, NULL);
1806b0fac498ca4863166252f1268fda83394db54153Fei Jiang
180721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    trace_context[idx].trace_rendertarget = render_target; /* for surface data dump after vaEndPicture */
1808b0fac498ca4863166252f1268fda83394db54153Fei Jiang
180921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    trace_context[idx].trace_frame_no++;
181021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    trace_context[idx].trace_slice_no = 0;
1811b0fac498ca4863166252f1268fda83394db54153Fei Jiang}
1812b0fac498ca4863166252f1268fda83394db54153Fei Jiang
1813901c77a7aa491f56b63af7b655b67439481e4177Fei Jiangstatic void va_TraceMPEG2Buf(
1814b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VADisplay dpy,
1815b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VAContextID context,
1816b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VABufferID buffer,
1817b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VABufferType type,
1818b0fac498ca4863166252f1268fda83394db54153Fei Jiang    unsigned int size,
1819b0fac498ca4863166252f1268fda83394db54153Fei Jiang    unsigned int num_elements,
1820b0fac498ca4863166252f1268fda83394db54153Fei Jiang    void *pbuf
1821b0fac498ca4863166252f1268fda83394db54153Fei Jiang)
1822b0fac498ca4863166252f1268fda83394db54153Fei Jiang{
1823b0fac498ca4863166252f1268fda83394db54153Fei Jiang    switch (type) {
1824b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAPictureParameterBufferType:
1825b0fac498ca4863166252f1268fda83394db54153Fei Jiang        va_TraceVAPictureParameterBufferMPEG2(dpy, context, buffer, type, size, num_elements, pbuf);
1826b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
1827b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAIQMatrixBufferType:
1828b0fac498ca4863166252f1268fda83394db54153Fei Jiang        va_TraceVAIQMatrixBufferMPEG2(dpy, context, buffer, type, size, num_elements, pbuf);
1829b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
1830b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VABitPlaneBufferType:
183121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
1832b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
1833b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VASliceGroupMapBufferType:
183421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
1835b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
1836b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VASliceParameterBufferType:
1837b0fac498ca4863166252f1268fda83394db54153Fei Jiang        va_TraceVASliceParameterBufferMPEG2(dpy, context, buffer, type, size, num_elements, pbuf);
1838b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
1839b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VASliceDataBufferType:
1840b0fac498ca4863166252f1268fda83394db54153Fei Jiang        va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
1841b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
1842b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAMacroblockParameterBufferType:
184321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
1844b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
1845b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAResidualDataBufferType:
184621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
1847b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
1848b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VADeblockingParameterBufferType:
184921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
1850b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
1851b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAImageBufferType:
1852b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
1853b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAProtectedSliceDataBufferType:
185421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
1855b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
1856b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAEncCodedBufferType:
1857b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
1858b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAEncSequenceParameterBufferType:
1859b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
1860b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAEncPictureParameterBufferType:
1861b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
1862b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAEncSliceParameterBufferType:
1863b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
186421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    default:
186521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        break;
1866b0fac498ca4863166252f1268fda83394db54153Fei Jiang    }
1867b0fac498ca4863166252f1268fda83394db54153Fei Jiang}
1868b0fac498ca4863166252f1268fda83394db54153Fei Jiang
186950ce1dbe8a3402d56c94238710964507db7d99e1Kun Wangstatic void va_TraceVAEncSequenceParameterBufferH263(
187050ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    VADisplay dpy,
187150ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    VAContextID context,
187250ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    VABufferID buffer,
187350ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    VABufferType type,
187450ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    unsigned int size,
187550ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    unsigned int num_elements,
187650ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    void *data)
187750ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang{
187850ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    VAEncSequenceParameterBufferH263 *p = (VAEncSequenceParameterBufferH263 *)data;
187950ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    DPY2INDEX(dpy);
188050ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang
188150ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    va_TraceMsg(idx, "VAEncSequenceParameterBufferH263\n");
188250ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang
188350ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    va_TraceMsg(idx, "\tintra_period = %d\n", p->intra_period);
188450ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    va_TraceMsg(idx, "\tbits_per_second = %d\n", p->bits_per_second);
188550ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    va_TraceMsg(idx, "\tframe_rate = %d\n", p->frame_rate);
188650ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    va_TraceMsg(idx, "\tinitial_qp = %d\n", p->initial_qp);
188750ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    va_TraceMsg(idx, "\tmin_qp = %d\n", p->min_qp);
188850ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    va_TraceMsg(idx, NULL);
188950ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang
189050ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    /* start a new sequce, coded log file can be truncated */
189150ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    trace_context[idx].trace_sequence_start = 1;
189250ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang
189350ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    return;
189450ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang}
189550ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang
189650ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang
189750ce1dbe8a3402d56c94238710964507db7d99e1Kun Wangstatic void va_TraceVAEncPictureParameterBufferH263(
189850ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    VADisplay dpy,
189950ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    VAContextID context,
190050ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    VABufferID buffer,
190150ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    VABufferType type,
190250ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    unsigned int size,
190350ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    unsigned int num_elements,
190450ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    void *data)
190550ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang{
190650ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    VAEncPictureParameterBufferH263 *p = (VAEncPictureParameterBufferH263 *)data;
190750ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    DPY2INDEX(dpy);
190850ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang
190950ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    va_TraceMsg(idx, "VAEncPictureParameterBufferH263\n");
191050ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    va_TraceMsg(idx, "\treference_picture = 0x%08x\n", p->reference_picture);
191150ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    va_TraceMsg(idx, "\treconstructed_picture = 0x%08x\n", p->reconstructed_picture);
191250ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    va_TraceMsg(idx, "\tcoded_buf = %08x\n", p->coded_buf);
191350ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    va_TraceMsg(idx, "\tpicture_width = %d\n", p->picture_width);
191450ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    va_TraceMsg(idx, "\tpicture_height = %d\n", p->picture_height);
191550ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    va_TraceMsg(idx, "\tpicture_type = 0x%08x\n", p->picture_type);
191650ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    va_TraceMsg(idx, NULL);
191750ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang
191850ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    trace_context[idx].trace_codedbuf =  p->coded_buf;
191950ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang
192050ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    return;
192150ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang}
192250ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang
1923cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wangstatic void va_TraceVAEncPictureParameterBufferJPEG(
1924cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    VADisplay dpy,
1925cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    VAContextID context,
1926cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    VABufferID buffer,
1927cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    VABufferType type,
1928cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    unsigned int size,
1929cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    unsigned int num_elements,
1930cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    void *data)
1931cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang{
1932cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    VAEncPictureParameterBufferJPEG *p = (VAEncPictureParameterBufferJPEG *)data;
1933cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    DPY2INDEX(dpy);
1934cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang
1935cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    va_TraceMsg(idx, "VAEncPictureParameterBufferJPEG\n");
1936cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    va_TraceMsg(idx, "\treconstructed_picture = 0x%08x\n", p->reconstructed_picture);
1937cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    va_TraceMsg(idx, "\tcoded_buf = %08x\n", p->coded_buf);
1938cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    va_TraceMsg(idx, "\tpicture_width = %d\n", p->picture_width);
1939cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    va_TraceMsg(idx, "\tpicture_height = %d\n", p->picture_height);
1940cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    va_TraceMsg(idx, NULL);
1941cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang
1942cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    trace_context[idx].trace_codedbuf =  p->coded_buf;
1943cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang
1944cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    return;
1945cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang}
1946cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang
1947cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wangstatic void va_TraceVAEncQMatrixBufferJPEG(
1948cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    VADisplay dpy,
1949cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    VAContextID context,
1950cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    VABufferID buffer,
1951cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    VABufferType type,
1952cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    unsigned int size,
1953cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    unsigned int num_elements,
1954cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    void *data)
1955cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang{
1956cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    VAQMatrixBufferJPEG *p = (VAQMatrixBufferJPEG *)data;
1957cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    DPY2INDEX(dpy);
1958cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang
1959cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    va_TraceMsg(idx, "VAQMatrixBufferJPEG\n");
1960cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    va_TraceMsg(idx, "\tload_lum_quantiser_matrix = %d", p->load_lum_quantiser_matrix);
1961cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    if (p->load_lum_quantiser_matrix) {
1962cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang        int i;
1963cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang        for (i = 0; i < 64; i++) {
1964cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang            if ((i % 8) == 0)
1965cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang                va_TraceMsg(idx, "\n\t");
1966cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang            va_TraceMsg(idx, "\t0x%02x", p->lum_quantiser_matrix[i]);
1967cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang        }
1968cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang        va_TraceMsg(idx, "\n");
1969cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    }
1970cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    va_TraceMsg(idx, "\tload_chroma_quantiser_matrix = %08x\n", p->load_chroma_quantiser_matrix);
1971cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    if (p->load_chroma_quantiser_matrix) {
1972cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang        int i;
1973cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang        for (i = 0; i < 64; i++) {
1974cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang            if ((i % 8) == 0)
1975cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang                va_TraceMsg(idx, "\n\t");
1976cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang            va_TraceMsg(idx, "\t0x%02x", p->chroma_quantiser_matrix[i]);
1977cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang        }
1978cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang        va_TraceMsg(idx, "\n");
1979cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    }
1980cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang
1981cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    va_TraceMsg(idx, NULL);
1982cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang
1983cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    return;
1984cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang}
198550ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang
198650ce1dbe8a3402d56c94238710964507db7d99e1Kun Wangstatic void va_TraceH263Buf(
198750ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    VADisplay dpy,
198850ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    VAContextID context,
198950ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    VABufferID buffer,
199050ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    VABufferType type,
199150ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    unsigned int size,
199250ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    unsigned int num_elements,
199350ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    void *pbuf
199450ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang)
199550ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang{
199650ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    switch (type) {
1997e742a3c7d8b89b69f65326582ea549c13a75b350Austin Yuan    case VAPictureParameterBufferType:/* print MPEG4 buffer */
1998e742a3c7d8b89b69f65326582ea549c13a75b350Austin Yuan        va_TraceVAPictureParameterBufferMPEG4(dpy, context, buffer, type, size, num_elements, pbuf);
1999e742a3c7d8b89b69f65326582ea549c13a75b350Austin Yuan        break;
2000e742a3c7d8b89b69f65326582ea549c13a75b350Austin Yuan    case VAIQMatrixBufferType:/* print MPEG4 buffer */
2001e742a3c7d8b89b69f65326582ea549c13a75b350Austin Yuan        va_TraceVAIQMatrixBufferMPEG4(dpy, context, buffer, type, size, num_elements, pbuf);
2002e742a3c7d8b89b69f65326582ea549c13a75b350Austin Yuan        break;
2003e742a3c7d8b89b69f65326582ea549c13a75b350Austin Yuan    case VABitPlaneBufferType:/* print MPEG4 buffer */
2004e742a3c7d8b89b69f65326582ea549c13a75b350Austin Yuan        va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
2005e742a3c7d8b89b69f65326582ea549c13a75b350Austin Yuan        break;
200650ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    case VASliceGroupMapBufferType:
2007e742a3c7d8b89b69f65326582ea549c13a75b350Austin Yuan        break;
2008e742a3c7d8b89b69f65326582ea549c13a75b350Austin Yuan    case VASliceParameterBufferType:/* print MPEG4 buffer */
2009e742a3c7d8b89b69f65326582ea549c13a75b350Austin Yuan        va_TraceVASliceParameterBufferMPEG4(dpy, context, buffer, type, size, num_elements, pbuf);
2010e742a3c7d8b89b69f65326582ea549c13a75b350Austin Yuan        break;
201150ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    case VASliceDataBufferType:
2012e742a3c7d8b89b69f65326582ea549c13a75b350Austin Yuan        va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
2013e742a3c7d8b89b69f65326582ea549c13a75b350Austin Yuan        break;
201450ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    case VAMacroblockParameterBufferType:
2015e742a3c7d8b89b69f65326582ea549c13a75b350Austin Yuan        va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
2016e742a3c7d8b89b69f65326582ea549c13a75b350Austin Yuan        break;
201750ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    case VAResidualDataBufferType:
2018e742a3c7d8b89b69f65326582ea549c13a75b350Austin Yuan        va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
2019e742a3c7d8b89b69f65326582ea549c13a75b350Austin Yuan        break;
202050ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    case VADeblockingParameterBufferType:
2021e742a3c7d8b89b69f65326582ea549c13a75b350Austin Yuan        va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
2022e742a3c7d8b89b69f65326582ea549c13a75b350Austin Yuan        break;
202350ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    case VAImageBufferType:
2024e742a3c7d8b89b69f65326582ea549c13a75b350Austin Yuan        break;
202550ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    case VAProtectedSliceDataBufferType:
202650ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang        va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
202750ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang        break;
202850ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    case VAEncCodedBufferType:
202950ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang        break;
203050ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    case VAEncSequenceParameterBufferType:
203150ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang        va_TraceVAEncSequenceParameterBufferH263(dpy, context, buffer, type, size, num_elements, pbuf);
203250ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang        break;
203350ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    case VAEncPictureParameterBufferType:
203450ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang        va_TraceVAEncPictureParameterBufferH263(dpy, context, buffer, type, size, num_elements, pbuf);
203550ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang        break;
203650ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    case VAEncSliceParameterBufferType:
203750ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang        va_TraceVAEncSliceParameterBuffer(dpy, context, buffer, type, size, num_elements, pbuf);
203850ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang        break;
203950ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    default:
204035f195a578d0bec4a0aa84d6162eda7e3a4a4db9Austin Yuan        va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
204150ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang        break;
204250ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang    }
204350ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang}
204450ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang
2045cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang
2046cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wangstatic void va_TraceJPEGBuf(
2047cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    VADisplay dpy,
2048cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    VAContextID context,
2049cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    VABufferID buffer,
2050cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    VABufferType type,
2051cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    unsigned int size,
2052cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    unsigned int num_elements,
2053cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    void *pbuf
2054cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang)
2055cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang{
2056cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    switch (type) {
20579992891b62398a80bd0867f8d167c0faa49861fdCheng Yao    case VABitPlaneBufferType:
2058cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    case VASliceGroupMapBufferType:
2059cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    case VASliceDataBufferType:
2060cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    case VAMacroblockParameterBufferType:
2061cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    case VAResidualDataBufferType:
2062cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    case VADeblockingParameterBufferType:
2063cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    case VAImageBufferType:
2064cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    case VAProtectedSliceDataBufferType:
2065cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    case VAEncCodedBufferType:
2066cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    case VAEncSequenceParameterBufferType:
2067cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    case VAEncSliceParameterBufferType:
2068cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang        va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
2069cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang        break;
20709992891b62398a80bd0867f8d167c0faa49861fdCheng Yao    case VAPictureParameterBufferType:
20719992891b62398a80bd0867f8d167c0faa49861fdCheng Yao        va_TraceVAPictureParameterBufferJPEG(dpy, context, buffer, type, size, num_elements, pbuf);
20729992891b62398a80bd0867f8d167c0faa49861fdCheng Yao        break;
20739992891b62398a80bd0867f8d167c0faa49861fdCheng Yao    case VAIQMatrixBufferType:
20749992891b62398a80bd0867f8d167c0faa49861fdCheng Yao        va_TraceVAIQMatrixBufferJPEG(dpy, context, buffer, type, size, num_elements, pbuf);
20759992891b62398a80bd0867f8d167c0faa49861fdCheng Yao        break;
20769992891b62398a80bd0867f8d167c0faa49861fdCheng Yao    case VASliceParameterBufferType:
20779992891b62398a80bd0867f8d167c0faa49861fdCheng Yao        va_TraceVASliceParameterBufferJPEG(dpy, context, buffer, type, size, num_elements, pbuf);
20789992891b62398a80bd0867f8d167c0faa49861fdCheng Yao        break;
20799992891b62398a80bd0867f8d167c0faa49861fdCheng Yao    case VAHuffmanTableBufferType:
20809992891b62398a80bd0867f8d167c0faa49861fdCheng Yao        va_TraceVAHuffmanTableBufferJPEG(dpy, context, buffer, type, size, num_elements, pbuf);
20819992891b62398a80bd0867f8d167c0faa49861fdCheng Yao        break;
2082cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    case VAEncPictureParameterBufferType:
2083cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang        va_TraceVAEncPictureParameterBufferJPEG(dpy, context, buffer, type, size, num_elements, pbuf);
2084cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang        break;
2085cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    case VAQMatrixBufferType:
2086cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang        va_TraceVAEncQMatrixBufferJPEG(dpy, context, buffer, type, size, num_elements, pbuf);
2087cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang        break;
2088cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    default:
208935f195a578d0bec4a0aa84d6162eda7e3a4a4db9Austin Yuan        va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
2090cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang        break;
2091cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang    }
2092cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang}
2093cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang
2094901c77a7aa491f56b63af7b655b67439481e4177Fei Jiangstatic void va_TraceMPEG4Buf(
2095b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VADisplay dpy,
2096b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VAContextID context,
2097b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VABufferID buffer,
2098b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VABufferType type,
2099b0fac498ca4863166252f1268fda83394db54153Fei Jiang    unsigned int size,
2100b0fac498ca4863166252f1268fda83394db54153Fei Jiang    unsigned int num_elements,
2101b0fac498ca4863166252f1268fda83394db54153Fei Jiang    void *pbuf
2102b0fac498ca4863166252f1268fda83394db54153Fei Jiang)
2103b0fac498ca4863166252f1268fda83394db54153Fei Jiang{
2104b0fac498ca4863166252f1268fda83394db54153Fei Jiang    switch (type) {
2105b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAPictureParameterBufferType:
2106b0fac498ca4863166252f1268fda83394db54153Fei Jiang        va_TraceVAPictureParameterBufferMPEG4(dpy, context, buffer, type, size, num_elements, pbuf);
2107b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
2108b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAIQMatrixBufferType:
2109b0fac498ca4863166252f1268fda83394db54153Fei Jiang        va_TraceVAIQMatrixBufferMPEG4(dpy, context, buffer, type, size, num_elements, pbuf);
2110b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
2111b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VABitPlaneBufferType:
211221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
2113b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
2114b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VASliceGroupMapBufferType:
2115b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
2116b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VASliceParameterBufferType:
2117b0fac498ca4863166252f1268fda83394db54153Fei Jiang        va_TraceVASliceParameterBufferMPEG4(dpy, context, buffer, type, size, num_elements, pbuf);
2118b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
2119b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VASliceDataBufferType:
2120b0fac498ca4863166252f1268fda83394db54153Fei Jiang        va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
2121b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
2122b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAMacroblockParameterBufferType:
212321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
2124b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
2125b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAResidualDataBufferType:
212621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
2127b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
2128b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VADeblockingParameterBufferType:
212921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
2130b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
2131b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAImageBufferType:
2132b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
2133b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAProtectedSliceDataBufferType:
2134b0fac498ca4863166252f1268fda83394db54153Fei Jiang        va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
2135b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
2136b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAEncCodedBufferType:
2137b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
2138b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAEncSequenceParameterBufferType:
213950ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang        va_TraceVAEncSequenceParameterBufferMPEG4(dpy, context, buffer, type, size, num_elements, pbuf);
2140b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
2141b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAEncPictureParameterBufferType:
214250ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang        va_TraceVAEncPictureParameterBufferMPEG4(dpy, context, buffer, type, size, num_elements, pbuf);
2143b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
2144b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAEncSliceParameterBufferType:
214521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceVAEncSliceParameterBuffer(dpy, context, buffer, type, size, num_elements, pbuf);
2146b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
2147b0fac498ca4863166252f1268fda83394db54153Fei Jiang    default:
214835f195a578d0bec4a0aa84d6162eda7e3a4a4db9Austin Yuan        va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
2149b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
2150b0fac498ca4863166252f1268fda83394db54153Fei Jiang    }
2151b0fac498ca4863166252f1268fda83394db54153Fei Jiang}
2152b0fac498ca4863166252f1268fda83394db54153Fei Jiang
2153b0fac498ca4863166252f1268fda83394db54153Fei Jiang
2154901c77a7aa491f56b63af7b655b67439481e4177Fei Jiangstatic void va_TraceH264Buf(
2155b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VADisplay dpy,
2156b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VAContextID context,
2157b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VABufferID buffer,
2158b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VABufferType type,
2159b0fac498ca4863166252f1268fda83394db54153Fei Jiang    unsigned int size,
2160b0fac498ca4863166252f1268fda83394db54153Fei Jiang    unsigned int num_elements,
2161b0fac498ca4863166252f1268fda83394db54153Fei Jiang    void *pbuf
2162b0fac498ca4863166252f1268fda83394db54153Fei Jiang)
2163b0fac498ca4863166252f1268fda83394db54153Fei Jiang{
216421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    DPY2INDEX(dpy);
216521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
2166b0fac498ca4863166252f1268fda83394db54153Fei Jiang    switch (type) {
2167b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAPictureParameterBufferType:
2168901c77a7aa491f56b63af7b655b67439481e4177Fei Jiang        va_TraceVAPictureParameterBufferH264(dpy, context, buffer, type, size, num_elements, pbuf);
2169b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
2170b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAIQMatrixBufferType:
2171b0fac498ca4863166252f1268fda83394db54153Fei Jiang        va_TraceVAIQMatrixBufferH264(dpy, context, buffer, type, size, num_elements, pbuf);
2172b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
2173b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VABitPlaneBufferType:
217421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
2175b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
2176b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VASliceGroupMapBufferType:
217721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
2178b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
2179b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VASliceParameterBufferType:
2180b0fac498ca4863166252f1268fda83394db54153Fei Jiang        va_TraceVASliceParameterBufferH264(dpy, context, buffer, type, size, num_elements, pbuf);
2181b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
2182b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VASliceDataBufferType:
218321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceVABuffers(dpy, context, buffer, type, trace_context[idx].trace_slice_size, num_elements, pbuf);
2184b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
2185b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAMacroblockParameterBufferType:
218621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
2187b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
2188b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAResidualDataBufferType:
218921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
2190b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
2191b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VADeblockingParameterBufferType:
219221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
2193b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
2194b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAImageBufferType:
2195b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
2196b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAProtectedSliceDataBufferType:
2197b0fac498ca4863166252f1268fda83394db54153Fei Jiang        va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
2198b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
2199b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAEncCodedBufferType:
2200b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
2201b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAEncSequenceParameterBufferType:
220221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceVAEncSequenceParameterBufferH264(dpy, context, buffer, type, size, num_elements, pbuf);
2203b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
2204b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAEncPictureParameterBufferType:
220521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceVAEncPictureParameterBufferH264(dpy, context, buffer, type, size, num_elements, pbuf);
2206b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
2207b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAEncSliceParameterBufferType:
2208ac1c6d1120d34338e679ac23f1348ade77b61317Elaine Wang        if (size == sizeof(VAEncSliceParameterBuffer))
2209ac1c6d1120d34338e679ac23f1348ade77b61317Elaine Wang            va_TraceVAEncSliceParameterBuffer(dpy, context, buffer, type, size, num_elements, pbuf);
2210ac1c6d1120d34338e679ac23f1348ade77b61317Elaine Wang        else
2211ac1c6d1120d34338e679ac23f1348ade77b61317Elaine Wang            va_TraceVAEncSliceParameterBufferH264(dpy, context, buffer, type, size, num_elements, pbuf);
221221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        break;
221321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    case VAEncMiscParameterBufferType:
221421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceVAEncMiscParameterBuffer(dpy, context, buffer, type, size, num_elements, pbuf);
2215b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
2216b0fac498ca4863166252f1268fda83394db54153Fei Jiang    default:
221735f195a578d0bec4a0aa84d6162eda7e3a4a4db9Austin Yuan        va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
2218b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
2219b0fac498ca4863166252f1268fda83394db54153Fei Jiang    }
2220b0fac498ca4863166252f1268fda83394db54153Fei Jiang}
2221b0fac498ca4863166252f1268fda83394db54153Fei Jiang
2222b0fac498ca4863166252f1268fda83394db54153Fei Jiang
2223901c77a7aa491f56b63af7b655b67439481e4177Fei Jiangstatic void va_TraceVC1Buf(
2224b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VADisplay dpy,
2225b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VAContextID context,
2226b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VABufferID buffer,
2227b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VABufferType type,
2228b0fac498ca4863166252f1268fda83394db54153Fei Jiang    unsigned int size,
2229b0fac498ca4863166252f1268fda83394db54153Fei Jiang    unsigned int num_elements,
2230b0fac498ca4863166252f1268fda83394db54153Fei Jiang    void *pbuf
2231b0fac498ca4863166252f1268fda83394db54153Fei Jiang)
2232b0fac498ca4863166252f1268fda83394db54153Fei Jiang{
223321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    DPY2INDEX(dpy);
223421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
2235b0fac498ca4863166252f1268fda83394db54153Fei Jiang    switch (type) {
2236b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAPictureParameterBufferType:
2237b0fac498ca4863166252f1268fda83394db54153Fei Jiang        va_TraceVAPictureParameterBufferVC1(dpy, context, buffer, type, size, num_elements, pbuf);
2238b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
2239b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAIQMatrixBufferType:
2240b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
2241b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VABitPlaneBufferType:
2242b0fac498ca4863166252f1268fda83394db54153Fei Jiang        va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
2243b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
2244b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VASliceGroupMapBufferType:
224521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
2246b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
2247b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VASliceParameterBufferType:
2248b0fac498ca4863166252f1268fda83394db54153Fei Jiang        va_TraceVASliceParameterBufferVC1(dpy, context, buffer, type, size, num_elements, pbuf);
2249b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
2250b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VASliceDataBufferType:
225121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceVABuffers(dpy, context, buffer, type, trace_context[idx].trace_slice_size, num_elements, pbuf);
2252b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
2253b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAMacroblockParameterBufferType:
225421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
2255b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
2256b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAResidualDataBufferType:
225721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
2258b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
2259b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VADeblockingParameterBufferType:
226021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
2261b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
2262b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAImageBufferType:
2263b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
2264b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAProtectedSliceDataBufferType:
2265b0fac498ca4863166252f1268fda83394db54153Fei Jiang        va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
2266b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
2267b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAEncCodedBufferType:
2268b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
2269b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAEncSequenceParameterBufferType:
227021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
2271b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
2272b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAEncPictureParameterBufferType:
227321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
2274b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
2275b0fac498ca4863166252f1268fda83394db54153Fei Jiang    case VAEncSliceParameterBufferType:
227621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
2277b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
2278b0fac498ca4863166252f1268fda83394db54153Fei Jiang    default:
227935f195a578d0bec4a0aa84d6162eda7e3a4a4db9Austin Yuan        va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
2280b0fac498ca4863166252f1268fda83394db54153Fei Jiang        break;
2281b0fac498ca4863166252f1268fda83394db54153Fei Jiang    }
2282b0fac498ca4863166252f1268fda83394db54153Fei Jiang}
2283b0fac498ca4863166252f1268fda83394db54153Fei Jiang
2284293abef4f8172cc061d26f9d909c281b4190b514Bruce Bearevoid va_TraceRenderPicture(
2285b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VADisplay dpy,
2286b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VAContextID context,
2287b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VABufferID *buffers,
2288b0fac498ca4863166252f1268fda83394db54153Fei Jiang    int num_buffers
2289b0fac498ca4863166252f1268fda83394db54153Fei Jiang)
2290b0fac498ca4863166252f1268fda83394db54153Fei Jiang{
2291b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VABufferType type;
2292b0fac498ca4863166252f1268fda83394db54153Fei Jiang    unsigned int size;
2293b0fac498ca4863166252f1268fda83394db54153Fei Jiang    unsigned int num_elements;
2294b0fac498ca4863166252f1268fda83394db54153Fei Jiang    int i;
229521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    DPY2INDEX(dpy);
2296b0fac498ca4863166252f1268fda83394db54153Fei Jiang
229721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    TRACE_FUNCNAME(idx);
229821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
229921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tcontext = 0x%08x\n", context);
230021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tnum_buffers = %d\n", num_buffers);
2301b0fac498ca4863166252f1268fda83394db54153Fei Jiang    for (i = 0; i < num_buffers; i++) {
23025b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang        unsigned char *pbuf;
230321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        unsigned int j;
230421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
2305b0fac498ca4863166252f1268fda83394db54153Fei Jiang        /* get buffer type information */
2306b0fac498ca4863166252f1268fda83394db54153Fei Jiang        vaBufferInfo(dpy, context, buffers[i], &type, &size, &num_elements);
230772b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang
230872b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang        va_TraceMsg(idx, "\t---------------------------\n");
230921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceMsg(idx, "\tbuffers[%d] = 0x%08x\n", i, buffers[i]);
231021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceMsg(idx, "\t  type = %s\n", buffer_type_to_string(type));
231121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceMsg(idx, "\t  size = %d\n", size);
231221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceMsg(idx, "\t  num_elements = %d\n", num_elements);
2313b0fac498ca4863166252f1268fda83394db54153Fei Jiang
23145b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang        vaMapBuffer(dpy, buffers[i], (void **)&pbuf);
2315b0fac498ca4863166252f1268fda83394db54153Fei Jiang
231621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        switch (trace_context[idx].trace_profile) {
2317b0fac498ca4863166252f1268fda83394db54153Fei Jiang        case VAProfileMPEG2Simple:
2318b0fac498ca4863166252f1268fda83394db54153Fei Jiang        case VAProfileMPEG2Main:
231921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan            for (j=0; j<num_elements; j++) {
232050ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang                va_TraceMsg(idx, "\t---------------------------\n", j);
232172b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang                va_TraceMsg(idx, "\telement[%d] = ", j);
232221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan                va_TraceMPEG2Buf(dpy, context, buffers[i], type, size, num_elements, pbuf + size*j);
232321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan            }
2324b0fac498ca4863166252f1268fda83394db54153Fei Jiang            break;
2325b0fac498ca4863166252f1268fda83394db54153Fei Jiang        case VAProfileMPEG4Simple:
2326b0fac498ca4863166252f1268fda83394db54153Fei Jiang        case VAProfileMPEG4AdvancedSimple:
2327b0fac498ca4863166252f1268fda83394db54153Fei Jiang        case VAProfileMPEG4Main:
232821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan            for (j=0; j<num_elements; j++) {
232950ce1dbe8a3402d56c94238710964507db7d99e1Kun Wang                va_TraceMsg(idx, "\t---------------------------\n", j);
233072b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang                va_TraceMsg(idx, "\telement[%d] = ", j);
233121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan                va_TraceMPEG4Buf(dpy, context, buffers[i], type, size, num_elements, pbuf + size*j);
233221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan            }
2333b0fac498ca4863166252f1268fda83394db54153Fei Jiang            break;
2334b0fac498ca4863166252f1268fda83394db54153Fei Jiang        case VAProfileH264Baseline:
2335b0fac498ca4863166252f1268fda83394db54153Fei Jiang        case VAProfileH264Main:
2336b0fac498ca4863166252f1268fda83394db54153Fei Jiang        case VAProfileH264High:
2337cceaa0568f77a7452857559614100b71fb36ee3awangkun        case VAProfileH264ConstrainedBaseline:
233821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan            for (j=0; j<num_elements; j++) {
233972b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang                va_TraceMsg(idx, "\t---------------------------\n", j);
234072b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang                va_TraceMsg(idx, "\telement[%d] = ", j);
234172b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang
234221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan                va_TraceH264Buf(dpy, context, buffers[i], type, size, num_elements, pbuf + size*j);
234321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan            }
2344b0fac498ca4863166252f1268fda83394db54153Fei Jiang            break;
2345b0fac498ca4863166252f1268fda83394db54153Fei Jiang        case VAProfileVC1Simple:
2346b0fac498ca4863166252f1268fda83394db54153Fei Jiang        case VAProfileVC1Main:
2347b0fac498ca4863166252f1268fda83394db54153Fei Jiang        case VAProfileVC1Advanced:
234821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan            for (j=0; j<num_elements; j++) {
234972b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang                va_TraceMsg(idx, "\t---------------------------\n", j);
235072b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang                va_TraceMsg(idx, "\telement[%d] = ", j);
235172b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang
235221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan                va_TraceVC1Buf(dpy, context, buffers[i], type, size, num_elements, pbuf + size*j);
235321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan            }
2354b0fac498ca4863166252f1268fda83394db54153Fei Jiang            break;
2355b0fac498ca4863166252f1268fda83394db54153Fei Jiang        case VAProfileH263Baseline:
235621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan            for (j=0; j<num_elements; j++) {
235772b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang                va_TraceMsg(idx, "\t---------------------------\n", j);
235872b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang                va_TraceMsg(idx, "\telement[%d] = ", j);
235972b466b2b0f0ab67f78e9f1b964b0ca86b036292Fei Jiang
2360e742a3c7d8b89b69f65326582ea549c13a75b350Austin Yuan                va_TraceH263Buf(dpy, context, buffers[i], type, size, num_elements, pbuf + size*j);
236121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan            }
236221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan            break;
2363cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang        case VAProfileJPEGBaseline:
2364cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang            for (j=0; j<num_elements; j++) {
2365cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang                va_TraceMsg(idx, "\t---------------------------\n", j);
2366cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang                va_TraceMsg(idx, "\telement[%d] = ", j);
2367cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang
2368cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang                va_TraceJPEGBuf(dpy, context, buffers[i], type, size, num_elements, pbuf + size*j);
2369cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang            }
2370cb99e83c12e445ca5b8fc8e56b4c04dbf1719fb4Kun Wang            break;
237121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        default:
2372b0fac498ca4863166252f1268fda83394db54153Fei Jiang            break;
2373b0fac498ca4863166252f1268fda83394db54153Fei Jiang        }
2374b0fac498ca4863166252f1268fda83394db54153Fei Jiang
2375b0fac498ca4863166252f1268fda83394db54153Fei Jiang        vaUnmapBuffer(dpy, buffers[i]);
2376b0fac498ca4863166252f1268fda83394db54153Fei Jiang    }
237736bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang
237836bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceMsg(idx, NULL);
2379b0fac498ca4863166252f1268fda83394db54153Fei Jiang}
2380b0fac498ca4863166252f1268fda83394db54153Fei Jiang
2381293abef4f8172cc061d26f9d909c281b4190b514Bruce Bearevoid va_TraceEndPicture(
2382b0fac498ca4863166252f1268fda83394db54153Fei Jiang    VADisplay dpy,
23835b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang    VAContextID context,
23845b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang    int endpic_done
2385b0fac498ca4863166252f1268fda83394db54153Fei Jiang)
2386b0fac498ca4863166252f1268fda83394db54153Fei Jiang{
23875b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang    int encode, decode, jpeg;
238821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    DPY2INDEX(dpy);
238921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
239021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    TRACE_FUNCNAME(idx);
2391b0fac498ca4863166252f1268fda83394db54153Fei Jiang
2392eb172ee78b4442658da7b4c7df17a9287d638089Austin Yuan    va_TraceMsg(idx, "\tcontext = 0x%08x\n", context);
2393eb172ee78b4442658da7b4c7df17a9287d638089Austin Yuan    va_TraceMsg(idx, "\trender_targets = 0x%08x\n", trace_context[idx].trace_rendertarget);
23945b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang
239537667c3bc88b76462b2487a3dc2577260819b3ecElaine Wang    /* avoid to create so many empty files */
239637667c3bc88b76462b2487a3dc2577260819b3ecElaine Wang    encode = (trace_context[idx].trace_entrypoint == VAEntrypointEncSlice);
239737667c3bc88b76462b2487a3dc2577260819b3ecElaine Wang    decode = (trace_context[idx].trace_entrypoint == VAEntrypointVLD);
239837667c3bc88b76462b2487a3dc2577260819b3ecElaine Wang    jpeg = (trace_context[idx].trace_entrypoint == VAEntrypointEncPicture);
2399eb172ee78b4442658da7b4c7df17a9287d638089Austin Yuan
2400eb172ee78b4442658da7b4c7df17a9287d638089Austin Yuan    /* trace encode source surface, can do it before HW completes rendering */
240137667c3bc88b76462b2487a3dc2577260819b3ecElaine Wang    if ((encode && (trace_flag & VA_TRACE_FLAG_SURFACE_ENCODE))||
240237667c3bc88b76462b2487a3dc2577260819b3ecElaine Wang	    (jpeg && (trace_flag & VA_TRACE_FLAG_SURFACE_JPEG)))
24035b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang        va_TraceSurface(dpy);
24045b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang
2405eb172ee78b4442658da7b4c7df17a9287d638089Austin Yuan    /* trace coded buffer, do it after HW completes rendering */
2406eb172ee78b4442658da7b4c7df17a9287d638089Austin Yuan    if ((encode || jpeg) && (trace_flag & VA_TRACE_FLAG_CODEDBUF)) {
240721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        vaSyncSurface(dpy, trace_context[idx].trace_rendertarget);
240821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceCodedBuf(dpy);
240921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    }
2410b0fac498ca4863166252f1268fda83394db54153Fei Jiang
2411eb172ee78b4442658da7b4c7df17a9287d638089Austin Yuan    /* trace decoded surface, do it after HW completes rendering */
241237667c3bc88b76462b2487a3dc2577260819b3ecElaine Wang    if (decode && ((trace_flag & VA_TRACE_FLAG_SURFACE_DECODE))) {
241321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        vaSyncSurface(dpy, trace_context[idx].trace_rendertarget);
241421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceSurface(dpy);
2415901c77a7aa491f56b63af7b655b67439481e4177Fei Jiang    }
2416eb172ee78b4442658da7b4c7df17a9287d638089Austin Yuan
241736bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceMsg(idx, NULL);
241821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan}
2419b0fac498ca4863166252f1268fda83394db54153Fei Jiang
2420409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan
2421cceaa0568f77a7452857559614100b71fb36ee3awangkunvoid va_TraceSyncSurface(
2422cceaa0568f77a7452857559614100b71fb36ee3awangkun    VADisplay dpy,
2423cceaa0568f77a7452857559614100b71fb36ee3awangkun    VASurfaceID render_target
2424cceaa0568f77a7452857559614100b71fb36ee3awangkun)
2425cceaa0568f77a7452857559614100b71fb36ee3awangkun{
2426cceaa0568f77a7452857559614100b71fb36ee3awangkun    DPY2INDEX(dpy);
2427cceaa0568f77a7452857559614100b71fb36ee3awangkun
2428cceaa0568f77a7452857559614100b71fb36ee3awangkun    TRACE_FUNCNAME(idx);
2429cceaa0568f77a7452857559614100b71fb36ee3awangkun
2430cceaa0568f77a7452857559614100b71fb36ee3awangkun    va_TraceMsg(idx, "\trender_target = 0x%08x\n", render_target);
243136bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceMsg(idx, NULL);
2432cceaa0568f77a7452857559614100b71fb36ee3awangkun}
2433cceaa0568f77a7452857559614100b71fb36ee3awangkun
2434cceaa0568f77a7452857559614100b71fb36ee3awangkun
2435cceaa0568f77a7452857559614100b71fb36ee3awangkunvoid va_TraceQuerySurfaceStatus(
2436cceaa0568f77a7452857559614100b71fb36ee3awangkun    VADisplay dpy,
2437cceaa0568f77a7452857559614100b71fb36ee3awangkun    VASurfaceID render_target,
243836bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    VASurfaceStatus *status    /* out */
2439cceaa0568f77a7452857559614100b71fb36ee3awangkun)
2440cceaa0568f77a7452857559614100b71fb36ee3awangkun{
2441cceaa0568f77a7452857559614100b71fb36ee3awangkun    DPY2INDEX(dpy);
2442cceaa0568f77a7452857559614100b71fb36ee3awangkun
2443cceaa0568f77a7452857559614100b71fb36ee3awangkun    TRACE_FUNCNAME(idx);
2444cceaa0568f77a7452857559614100b71fb36ee3awangkun
2445cceaa0568f77a7452857559614100b71fb36ee3awangkun    va_TraceMsg(idx, "\trender_target = 0x%08x\n", render_target);
2446cceaa0568f77a7452857559614100b71fb36ee3awangkun    va_TraceMsg(idx, "\tstatus = 0x%08x\n", *status);
244736bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceMsg(idx, NULL);
2448cceaa0568f77a7452857559614100b71fb36ee3awangkun}
2449cceaa0568f77a7452857559614100b71fb36ee3awangkun
2450cceaa0568f77a7452857559614100b71fb36ee3awangkun
2451cceaa0568f77a7452857559614100b71fb36ee3awangkunvoid va_TraceQuerySurfaceError(
245236bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    VADisplay dpy,
245336bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    VASurfaceID surface,
245436bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    VAStatus error_status,
245536bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    void **error_info       /*out*/
2456cceaa0568f77a7452857559614100b71fb36ee3awangkun)
2457cceaa0568f77a7452857559614100b71fb36ee3awangkun{
2458cceaa0568f77a7452857559614100b71fb36ee3awangkun    DPY2INDEX(dpy);
2459cceaa0568f77a7452857559614100b71fb36ee3awangkun
2460cceaa0568f77a7452857559614100b71fb36ee3awangkun    TRACE_FUNCNAME(idx);
2461cceaa0568f77a7452857559614100b71fb36ee3awangkun    va_TraceMsg(idx, "\tsurface = 0x%08x\n", surface);
2462cceaa0568f77a7452857559614100b71fb36ee3awangkun    va_TraceMsg(idx, "\terror_status = 0x%08x\n", error_status);
2463cceaa0568f77a7452857559614100b71fb36ee3awangkun    if (error_status == VA_STATUS_ERROR_DECODING_ERROR) {
246436bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang        VASurfaceDecodeMBErrors *p = *error_info;
246536bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang        while (p->status != -1) {
246636bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang            va_TraceMsg(idx, "\t\tstatus = %d\n", p->status);
246736bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang            va_TraceMsg(idx, "\t\tstart_mb = %d\n", p->start_mb);
246836bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang            va_TraceMsg(idx, "\t\tend_mb = %d\n", p->end_mb);
246936bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang            p++; /* next error record */
247036bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang        }
2471cceaa0568f77a7452857559614100b71fb36ee3awangkun    }
247236bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceMsg(idx, NULL);
2473cceaa0568f77a7452857559614100b71fb36ee3awangkun}
2474b0fac498ca4863166252f1268fda83394db54153Fei Jiang
247521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuanvoid va_TraceMaxNumDisplayAttributes (
247621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    VADisplay dpy,
247721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    int number
247821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan)
247921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan{
248021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    DPY2INDEX(dpy);
2481b0fac498ca4863166252f1268fda83394db54153Fei Jiang
248221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    TRACE_FUNCNAME(idx);
248321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
2484cceaa0568f77a7452857559614100b71fb36ee3awangkun    va_TraceMsg(idx, "\tmax_display_attributes = %d\n", number);
248536bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceMsg(idx, NULL);
248621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan}
248721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
248821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuanvoid va_TraceQueryDisplayAttributes (
248921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    VADisplay dpy,
249036bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    VADisplayAttribute *attr_list,    /* out */
249136bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    int *num_attributes               /* out */
249221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan)
249321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan{
249421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    int i;
249521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
249621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    DPY2INDEX(dpy);
249721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
249821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tnum_attributes = %d\n", *num_attributes);
249921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
250021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    for (i=0; i<*num_attributes; i++) {
250121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceMsg(idx, "\tattr_list[%d] =\n");
250221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceMsg(idx, "\t  typ = 0x%08x\n", attr_list[i].type);
250321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceMsg(idx, "\t  min_value = %d\n", attr_list[i].min_value);
250421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceMsg(idx, "\t  max_value = %d\n", attr_list[i].max_value);
250521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceMsg(idx, "\t  value = %d\n", attr_list[i].value);
250621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceMsg(idx, "\t  flags = %d\n", attr_list[i].flags);
2507b0fac498ca4863166252f1268fda83394db54153Fei Jiang    }
250836bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceMsg(idx, NULL);
250921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan}
2510b0fac498ca4863166252f1268fda83394db54153Fei Jiang
2511b0fac498ca4863166252f1268fda83394db54153Fei Jiang
251221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuanstatic void va_TraceDisplayAttributes (
251321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    VADisplay dpy,
251421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    VADisplayAttribute *attr_list,
251521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    int num_attributes
251621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan)
251721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan{
251821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    int i;
251921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
252021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    DPY2INDEX(dpy);
252121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
252221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tnum_attributes = %d\n", num_attributes);
252321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    for (i=0; i<num_attributes; i++) {
252421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceMsg(idx, "\tattr_list[%d] =\n");
252521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceMsg(idx, "\t  typ = 0x%08x\n", attr_list[i].type);
252621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceMsg(idx, "\t  min_value = %d\n", attr_list[i].min_value);
252721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceMsg(idx, "\t  max_value = %d\n", attr_list[i].max_value);
252821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceMsg(idx, "\t  value = %d\n", attr_list[i].value);
252921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan        va_TraceMsg(idx, "\t  flags = %d\n", attr_list[i].flags);
2530b0fac498ca4863166252f1268fda83394db54153Fei Jiang    }
253136bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceMsg(idx, NULL);
253221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan}
253321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
253421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
253521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuanvoid va_TraceGetDisplayAttributes (
253621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    VADisplay dpy,
253721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    VADisplayAttribute *attr_list,
253821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    int num_attributes
253921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan)
254021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan{
254121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    DPY2INDEX(dpy);
2542901c77a7aa491f56b63af7b655b67439481e4177Fei Jiang
254321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    TRACE_FUNCNAME(idx);
254421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
254521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceDisplayAttributes (dpy, attr_list, num_attributes);
254621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan}
254721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
254821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuanvoid va_TraceSetDisplayAttributes (
254921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    VADisplay dpy,
255021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    VADisplayAttribute *attr_list,
255121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    int num_attributes
255221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan)
255321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan{
255421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    DPY2INDEX(dpy);
255521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
255621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    TRACE_FUNCNAME(idx);
255721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
255821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceDisplayAttributes (dpy, attr_list, num_attributes);
255921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan}
256021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
256121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
256221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuanvoid va_TracePutSurface (
256321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    VADisplay dpy,
256421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    VASurfaceID surface,
256521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    void *draw, /* the target Drawable */
256621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    short srcx,
256721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    short srcy,
256821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    unsigned short srcw,
256921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    unsigned short srch,
257021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    short destx,
257121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    short desty,
257221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    unsigned short destw,
257321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    unsigned short desth,
257421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    VARectangle *cliprects, /* client supplied clip list */
257521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    unsigned int number_cliprects, /* number of clip rects in the clip list */
257621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    unsigned int flags /* de-interlacing flags */
257721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan)
257821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan{
257921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    DPY2INDEX(dpy);
258021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
258121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    TRACE_FUNCNAME(idx);
258221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan
258321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tsurface = 0x%08x\n", surface);
258421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tdraw = 0x%08x\n", draw);
2585942aa8ad7f4275a637fb2c1e5edfab686110cc52Kun Wang    va_TraceMsg(idx, "\tsrcx = %d\n", srcx);
2586942aa8ad7f4275a637fb2c1e5edfab686110cc52Kun Wang    va_TraceMsg(idx, "\tsrcy = %d\n", srcy);
2587942aa8ad7f4275a637fb2c1e5edfab686110cc52Kun Wang    va_TraceMsg(idx, "\tsrcw = %d\n", srcw);
2588942aa8ad7f4275a637fb2c1e5edfab686110cc52Kun Wang    va_TraceMsg(idx, "\tsrch = %d\n", srch);
2589942aa8ad7f4275a637fb2c1e5edfab686110cc52Kun Wang    va_TraceMsg(idx, "\tdestx = %d\n", destx);
2590942aa8ad7f4275a637fb2c1e5edfab686110cc52Kun Wang    va_TraceMsg(idx, "\tdesty = %d\n", desty);
259121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tdestw = %d\n", destw);
259221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tdesth = %d\n", desth);
259321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tcliprects = 0x%08x\n", cliprects);
259421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tnumber_cliprects = %d\n", number_cliprects);
259521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan    va_TraceMsg(idx, "\tflags = 0x%08x\n", flags);
259636bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang    va_TraceMsg(idx, NULL);
2597b0fac498ca4863166252f1268fda83394db54153Fei Jiang}
2598