iter33 DIAG: env-gated dump of v4l2_ctrl_vp8_frame contents
LIBVA_VP8_DUMP_FRAME=1 prints the v4l2_ctrl_vp8_frame struct fields to stderr before VIDIOC_S_EXT_CTRLS. Goal: diff libva-side struct against expected kdirect-side values for VP8 frame-2+ divergence (libva produces non-trivial but wrong output; kdirect VP8 byte-equal to SW). Env-gated, no behavior change otherwise.
This commit is contained in:
@@ -59,6 +59,8 @@
|
|||||||
|
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
#include <sys/ioctl.h>
|
#include <sys/ioctl.h>
|
||||||
@@ -244,6 +246,64 @@ int vp8_set_controls(struct request_data *driver_data,
|
|||||||
if (picture->pic_fields.bits.sign_bias_alternate)
|
if (picture->pic_fields.bits.sign_bias_alternate)
|
||||||
frame.flags |= V4L2_VP8_FRAME_FLAG_SIGN_BIAS_ALT;
|
frame.flags |= V4L2_VP8_FRAME_FLAG_SIGN_BIAS_ALT;
|
||||||
|
|
||||||
|
/* iter33 DIAG: dump v4l2_ctrl_vp8_frame contents.
|
||||||
|
* LIBVA_VP8_DUMP_FRAME=1 enables. */
|
||||||
|
if (getenv("LIBVA_VP8_DUMP_FRAME")) {
|
||||||
|
uint8_t *p = (uint8_t *)&frame;
|
||||||
|
uint32_t k;
|
||||||
|
fprintf(stderr,
|
||||||
|
"vp8: width=%u height=%u version=%u flags=0x%llx num_dct=%u\n",
|
||||||
|
frame.width, frame.height, frame.version,
|
||||||
|
(unsigned long long)frame.flags, frame.num_dct_parts);
|
||||||
|
fprintf(stderr,
|
||||||
|
"vp8: first_part_size=%u first_part_header_bits=%u prob_skip_false=%u prob_intra=%u prob_last=%u prob_gf=%u\n",
|
||||||
|
frame.first_part_size, frame.first_part_header_bits,
|
||||||
|
frame.prob_skip_false, frame.prob_intra,
|
||||||
|
frame.prob_last, frame.prob_gf);
|
||||||
|
fprintf(stderr,
|
||||||
|
"vp8: lf level=%u sharpness=%u flags=0x%x ref_frm_delta=[%d %d %d %d] mb_mode_delta=[%d %d %d %d]\n",
|
||||||
|
frame.lf.level, frame.lf.sharpness_level, frame.lf.flags,
|
||||||
|
frame.lf.ref_frm_delta[0], frame.lf.ref_frm_delta[1],
|
||||||
|
frame.lf.ref_frm_delta[2], frame.lf.ref_frm_delta[3],
|
||||||
|
frame.lf.mb_mode_delta[0], frame.lf.mb_mode_delta[1],
|
||||||
|
frame.lf.mb_mode_delta[2], frame.lf.mb_mode_delta[3]);
|
||||||
|
fprintf(stderr,
|
||||||
|
"vp8: quant y_ac=%u y_dc_d=%d y2_dc_d=%d y2_ac_d=%d uv_dc_d=%d uv_ac_d=%d\n",
|
||||||
|
frame.quant.y_ac_qi, frame.quant.y_dc_delta,
|
||||||
|
frame.quant.y2_dc_delta, frame.quant.y2_ac_delta,
|
||||||
|
frame.quant.uv_dc_delta, frame.quant.uv_ac_delta);
|
||||||
|
fprintf(stderr,
|
||||||
|
"vp8: seg flags=0x%x quant_update=[%d %d %d %d] lf_update=[%d %d %d %d]\n",
|
||||||
|
frame.segment.flags,
|
||||||
|
frame.segment.quant_update[0], frame.segment.quant_update[1],
|
||||||
|
frame.segment.quant_update[2], frame.segment.quant_update[3],
|
||||||
|
frame.segment.lf_update[0], frame.segment.lf_update[1],
|
||||||
|
frame.segment.lf_update[2], frame.segment.lf_update[3]);
|
||||||
|
fprintf(stderr,
|
||||||
|
"vp8: coder range=%u value=%u bit_count=%u\n",
|
||||||
|
frame.coder_state.range, frame.coder_state.value,
|
||||||
|
frame.coder_state.bit_count);
|
||||||
|
fprintf(stderr, "vp8: dct_part_sizes=[");
|
||||||
|
for (k = 0; k < 8; k++)
|
||||||
|
fprintf(stderr, "%u%s", frame.dct_part_sizes[k],
|
||||||
|
k < 7 ? " " : "]\n");
|
||||||
|
fprintf(stderr,
|
||||||
|
"vp8: refs last=%llu golden=%llu alt=%llu\n",
|
||||||
|
(unsigned long long)frame.last_frame_ts,
|
||||||
|
(unsigned long long)frame.golden_frame_ts,
|
||||||
|
(unsigned long long)frame.alt_frame_ts);
|
||||||
|
fprintf(stderr, "vp8: entropy y_mode_probs=[%u %u %u %u] uv_mode_probs=[%u %u %u]\n",
|
||||||
|
frame.entropy.y_mode_probs[0], frame.entropy.y_mode_probs[1],
|
||||||
|
frame.entropy.y_mode_probs[2], frame.entropy.y_mode_probs[3],
|
||||||
|
frame.entropy.uv_mode_probs[0], frame.entropy.uv_mode_probs[1],
|
||||||
|
frame.entropy.uv_mode_probs[2]);
|
||||||
|
fprintf(stderr, "vp8: coeff_probs[0][0][0][0..11]=");
|
||||||
|
for (k = 0; k < 11; k++)
|
||||||
|
fprintf(stderr, "%u ", frame.entropy.coeff_probs[0][0][0][k]);
|
||||||
|
fprintf(stderr, "\n");
|
||||||
|
(void)p;
|
||||||
|
}
|
||||||
|
|
||||||
/* Clause 1+10: single-control batched submission */
|
/* Clause 1+10: single-control batched submission */
|
||||||
struct v4l2_ext_control ctrls[1] = {
|
struct v4l2_ext_control ctrls[1] = {
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user