summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLiu Bolun <bolun.liu@intel.com>2013-07-31 10:30:33 +0800
committerGwenole Beauchesne <gwenole.beauchesne@intel.com>2013-08-27 11:16:45 +0200
commit534475e2cdd619f5c8063d80a66bb0e9c6bca8f3 (patch)
tree54008e724e95cecd5637b38b0f0e347a320b09ba
parent9d4f6255a65047addf5fcc84f7c2c4062f6453a4 (diff)
downloadlibva-534475e2cdd619f5c8063d80a66bb0e9c6bca8f3.tar.gz
Enhance LIBVA_TRACE to dump SPS/PPS/ for VP8 encode.
Enhance LIBVA_TRACE tool to dump VP8 encode related parameters based on the new libva interface. Change-Id: I2c731761bb180061e18dac6b63d77572ca1abef6 Signed-off-by: Liu Bolun <bolun.liu@intel.com>
-rw-r--r--va/va_trace.c174
1 files changed, 174 insertions, 0 deletions
diff --git a/va/va_trace.c b/va/va_trace.c
index 1f70f50..0ca9169 100644
--- a/va/va_trace.c
+++ b/va/va_trace.c
@@ -30,6 +30,7 @@
#include "va_trace.h"
#include "va_enc_h264.h"
#include "va_enc_jpeg.h"
+#include "va_enc_vp8.h"
#include "va_dec_jpeg.h"
#include <assert.h>
#include <stdarg.h>
@@ -1952,6 +1953,116 @@ static void va_TraceVASliceParameterBufferVC1(
va_TraceMsg(trace_ctx, NULL);
}
+static void va_TraceVAEncSequenceParameterBufferVP8(
+ VADisplay dpy,
+ VAContextID context,
+ VABufferID buffer,
+ VABufferType type,
+ unsigned int size,
+ unsigned int num_elements,
+ void *data)
+{
+ VAEncSequenceParameterBufferVP8 *p = (VAEncSequenceParameterBufferVP8 *)data;
+ DPY2TRACECTX(dpy);
+ int i;
+
+ va_TraceMsg(trace_ctx, "\t--VAEncSequenceParameterBufferVP8\n");
+
+ va_TraceMsg(trace_ctx, "\tbits_per_second = %d\n", p->bits_per_second);
+ va_TraceMsg(trace_ctx, "\terror_resilient = %d\n", p->error_resilient);
+ va_TraceMsg(trace_ctx, "\tframe_height = %d\n", p->frame_height);
+ va_TraceMsg(trace_ctx, "\tframe_width = %d\n", p->frame_width);
+ va_TraceMsg(trace_ctx, "\tframe_height_scale = %d\n", p->frame_height_scale);
+ va_TraceMsg(trace_ctx, "\tframe_width_scale = %d\n", p->frame_width_scale);
+ va_TraceMsg(trace_ctx, "\tkf_auto = %d\n", p->kf_auto);
+ va_TraceMsg(trace_ctx, "\tkf_max_dist = %d\n", p->kf_max_dist);
+ va_TraceMsg(trace_ctx, "\tkf_min_dist = %d\n", p->kf_min_dist);
+ va_TraceMsg(trace_ctx, "\tintra_period = %d\n", p->intra_period);
+
+ for(i = 0; i<4; ++i)
+ va_TraceMsg(trace_ctx, "\treference_frames[%d] = 0x%08x\n", i, p->reference_frames[i]);
+
+ va_TraceMsg(trace_ctx, NULL);
+
+ /* start a new sequce, coded log file can be truncated */
+ trace_ctx->trace_sequence_start = 1;
+
+ return;
+}
+
+static void va_TraceVAEncPictureParameterBufferVP8(
+ VADisplay dpy,
+ VAContextID context,
+ VABufferID buffer,
+ VABufferType type,
+ unsigned int size,
+ unsigned int num_elements,
+ void *data)
+{
+ VAEncPictureParameterBufferVP8 *p = (VAEncPictureParameterBufferVP8 *)data;
+ DPY2TRACECTX(dpy);
+ int i;
+
+ va_TraceMsg(trace_ctx, "\t--VAEncPictureParameterBufferVP8\n");
+
+ va_TraceMsg(trace_ctx, "\treconstructed_frame = 0x%08x\n", i, p->reconstructed_frame);
+ va_TraceMsg(trace_ctx, "\tref_last_frame = 0x%08x\n", i, p->ref_last_frame);
+ va_TraceMsg(trace_ctx, "\tref_gf_frame = 0x%08x\n", i, p->ref_gf_frame);
+ va_TraceMsg(trace_ctx, "\tref_arf_frame = 0x%08x\n", i, p->ref_arf_frame);
+ va_TraceMsg(trace_ctx, "\tcoded_buf = 0x%08x\n", i, p->coded_buf);
+
+ va_TraceMsg(trace_ctx, "\tref_flags.bits.force_kf = %d\n", i, p->ref_flags.bits.force_kf);
+ va_TraceMsg(trace_ctx, "\tref_flags.bits.no_ref_last = %d\n", i, p->ref_flags.bits.no_ref_last);
+ va_TraceMsg(trace_ctx, "\tref_flags.bits.no_ref_gf = %d\n", i, p->ref_flags.bits.no_ref_gf);
+ va_TraceMsg(trace_ctx, "\tref_flags.bits.no_ref_arf = %d\n", i, p->ref_flags.bits.no_ref_arf);
+ va_TraceMsg(trace_ctx, "\tref_flags.bits.no_ref_arf = 0x%08x\n", i, p->ref_flags.bits.reserved);
+
+ va_TraceMsg(trace_ctx, "\tpic_flags.bits.version = %d\n", i, p->pic_flags.bits.version);
+ va_TraceMsg(trace_ctx, "\tpic_flags.bits.show_frame = %d\n", i, p->pic_flags.bits.show_frame);
+ va_TraceMsg(trace_ctx, "\tpic_flags.bits.color_space = %d\n", i, p->pic_flags.bits.color_space);
+ va_TraceMsg(trace_ctx, "\tpic_flags.bits.recon_filter_type = %d\n", i, p->pic_flags.bits.recon_filter_type);
+ va_TraceMsg(trace_ctx, "\tpic_flags.bits.loop_filter_type = %d\n", i, p->pic_flags.bits.loop_filter_type);
+ va_TraceMsg(trace_ctx, "\tpic_flags.bits.auto_partitions = %d\n", i, p->pic_flags.bits.auto_partitions);
+ va_TraceMsg(trace_ctx, "\tpic_flags.bits.num_token_partitions = %d\n", i, p->pic_flags.bits.num_token_partitions);
+ va_TraceMsg(trace_ctx, "\tpic_flags.bits.clamping_type = %d\n", i, p->pic_flags.bits.clamping_type);
+ va_TraceMsg(trace_ctx, "\tpic_flags.bits.segmentation_enabled = %d\n", i, p->pic_flags.bits.segmentation_enabled);
+ va_TraceMsg(trace_ctx, "\tpic_flags.bits.update_mb_segmentation_map = %d\n", i, p->pic_flags.bits.update_mb_segmentation_map);
+ va_TraceMsg(trace_ctx, "\tpic_flags.bits.update_segment_feature_data = %d\n", i, p->pic_flags.bits.update_segment_feature_data);
+ va_TraceMsg(trace_ctx, "\tpic_flags.bits.loop_filter_adj_enable = %d\n", i, p->pic_flags.bits.loop_filter_adj_enable);
+ va_TraceMsg(trace_ctx, "\tpic_flags.bits.refresh_entropy_probs = %d\n", i, p->pic_flags.bits.refresh_entropy_probs);
+ va_TraceMsg(trace_ctx, "\tpic_flags.bits.refresh_golden_frame = %d\n", i, p->pic_flags.bits.refresh_golden_frame);
+ va_TraceMsg(trace_ctx, "\tpic_flags.bits.refresh_alternate_frame = %d\n", i, p->pic_flags.bits.refresh_alternate_frame);
+ va_TraceMsg(trace_ctx, "\tpic_flags.bits.refresh_last = %d\n", i, p->pic_flags.bits.refresh_last);
+ va_TraceMsg(trace_ctx, "\tpic_flags.bits.copy_buffer_to_golden = %d\n", i, p->pic_flags.bits.copy_buffer_to_golden);
+ va_TraceMsg(trace_ctx, "\tpic_flags.bits.copy_buffer_to_alternate = %d\n", i, p->pic_flags.bits.copy_buffer_to_alternate);
+
+ va_TraceMsg(trace_ctx, "\tpic_flags.bits.sign_bias_golden = %d\n", i, p->pic_flags.bits.sign_bias_golden);
+ va_TraceMsg(trace_ctx, "\tpic_flags.bits.sign_bias_alternate = %d\n", i, p->pic_flags.bits.sign_bias_alternate);
+ va_TraceMsg(trace_ctx, "\tpic_flags.bits.mb_no_coeff_skip = %d\n", i, p->pic_flags.bits.mb_no_coeff_skip);
+ va_TraceMsg(trace_ctx, "\tpic_flags.bits.forced_lf_adjustment = %d\n", i, p->pic_flags.bits.forced_lf_adjustment);
+ va_TraceMsg(trace_ctx, "\tpic_flags.bits.reserved = %d\n", i, p->pic_flags.bits.reserved);
+
+
+ for(i=0;i<4;i++)
+ va_TraceMsg(trace_ctx, "\tloop_filter_level[%d] = %d\n", p->loop_filter_level[i]);
+ for(i=0;i<4;i++)
+ va_TraceMsg(trace_ctx, "\tref_lf_delta[%d] = %d\n", i, p->ref_lf_delta[i]);
+ for(i=0;i<4;i++)
+ va_TraceMsg(trace_ctx, "\tmode_lf_delta[%d] = %d\n", i, p->mode_lf_delta[i]);
+
+ va_TraceMsg(trace_ctx, "\tsharpness_level = %d\n", p->sharpness_level);
+ va_TraceMsg(trace_ctx, "\tclamp_qindex_high = %d\n", p->clamp_qindex_high);
+ va_TraceMsg(trace_ctx, "\tclamp_qindex_low = %d\n", p->clamp_qindex_low);
+
+ va_TraceMsg(trace_ctx, NULL);
+
+ trace_ctx->trace_codedbuf = p->coded_buf;
+
+ return;
+}
+
+
+
void va_TraceBeginPicture(
VADisplay dpy,
VAContextID context,
@@ -2442,6 +2553,62 @@ static void va_TraceH264Buf(
}
}
+static void va_TraceVP8Buf(
+ VADisplay dpy,
+ VAContextID context,
+ VABufferID buffer,
+ VABufferType type,
+ unsigned int size,
+ unsigned int num_elements,
+ void *pbuf
+)
+{
+ DPY2TRACECTX(dpy);
+
+ switch (type) {
+ case VAPictureParameterBufferType:
+ break;
+ case VAIQMatrixBufferType:
+ break;
+ case VABitPlaneBufferType:
+ break;
+ case VASliceGroupMapBufferType:
+ break;
+ case VASliceParameterBufferType:
+ break;
+ case VASliceDataBufferType:
+ break;
+ case VAMacroblockParameterBufferType:
+ break;
+ case VAResidualDataBufferType:
+ break;
+ case VADeblockingParameterBufferType:
+ break;
+ case VAImageBufferType:
+ break;
+ case VAProtectedSliceDataBufferType:
+ break;
+ case VAEncCodedBufferType:
+ break;
+ case VAEncSequenceParameterBufferType:
+ va_TraceVAEncSequenceParameterBufferVP8(dpy, context, buffer, type, size, num_elements, pbuf);
+ break;
+ case VAEncPictureParameterBufferType:
+ va_TraceVAEncPictureParameterBufferVP8(dpy, context, buffer, type, size, num_elements, pbuf);
+ break;
+ case VAEncSliceParameterBufferType:
+ break;
+ case VAEncPackedHeaderParameterBufferType:
+ break;
+ case VAEncMiscParameterBufferType:
+ va_TraceVAEncMiscParameterBuffer(dpy, context, buffer, type, size, num_elements, pbuf);
+ break;
+ default:
+ va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
+ break;
+ }
+}
+
static void va_TraceVC1Buf(
VADisplay dpy,
@@ -2590,6 +2757,13 @@ void va_TraceRenderPicture(
va_TraceJPEGBuf (dpy, context, buffers[i], type, size, num_elements, pbuf + size*j);
}
break;
+ case VAProfileVP8Version0_3:
+ for (j=0; j<num_elements; j++) {
+ va_TraceMsg(trace_ctx, "\telement[%d] = ", j);
+
+ va_TraceVP8Buf(dpy, context, buffers[i], type, size, num_elements, pbuf + size*j);
+ }
+ break;
default:
break;
}