last = vb2_find_buffer(cap_q, run->vp8.frame->last_frame_ts);
golden = vb2_find_buffer(cap_q, run->vp8.frame->golden_frame_ts);
alt = vb2_find_buffer(cap_q, run->vp8.frame->alt_frame_ts);
last = vb2_find_buffer(cap_q, run->vp9.frame->last_frame_ts);
golden = vb2_find_buffer(cap_q, run->vp9.frame->golden_frame_ts);
alt = vb2_find_buffer(cap_q, run->vp9.frame->alt_frame_ts);
for (i = 0; i < ARRAY_SIZE(run->hevc.dpram->dpb); i++) {
vb2_buf = vb2_find_buffer(cap_q, run->hevc.dpram->dpb[i].timestamp); if (tpg_verbose && vb2_buf) {
len = scnprintf(buf, buflen, entry, i,
run->hevc.dpram->dpb[i].timestamp,
vb2_buf->index);
} else {
len = scnprintf(buf, buflen, entry_stable, i,
run->hevc.dpram->dpb[i].timestamp);
}
buf += len;
buflen -= len;
}
break;
}
case VISL_CODEC_AV1: { int idx_last = run->av1.frame->ref_frame_idx[LAST_BUF_IDX]; int idx_last2 = run->av1.frame->ref_frame_idx[LAST2_BUF_IDX]; int idx_last3 = run->av1.frame->ref_frame_idx[LAST3_BUF_IDX]; int idx_golden = run->av1.frame->ref_frame_idx[GOLDEN_BUF_IDX]; int idx_bwd = run->av1.frame->ref_frame_idx[BWD_BUF_IDX]; int idx_alt2 = run->av1.frame->ref_frame_idx[ALT2_BUF_IDX]; int idx_alt = run->av1.frame->ref_frame_idx[ALT_BUF_IDX];
staticchar *visl_get_vb2_state(enum vb2_buffer_state state)
{ switch (state) { case VB2_BUF_STATE_DEQUEUED: return"Dequeued"; case VB2_BUF_STATE_IN_REQUEST: return"In request"; case VB2_BUF_STATE_PREPARING: return"Preparing"; case VB2_BUF_STATE_QUEUED: return"Queued"; case VB2_BUF_STATE_ACTIVE: return"Active"; case VB2_BUF_STATE_DONE: return"Done"; case VB2_BUF_STATE_ERROR: return"Error"; default: return"";
}
}
staticint visl_fill_bytesused(struct vb2_v4l2_buffer *v4l2_vb2_buf, char *buf, size_t bufsz)
{ int len = 0;
u32 i;
for (i = 0; i < v4l2_vb2_buf->vb2_buf.num_planes; i++)
len += scnprintf(buf, bufsz, "bytesused[%u]: %u length[%u]: %u data_offset[%u]: %u",
i, v4l2_vb2_buf->planes[i].bytesused,
i, v4l2_vb2_buf->planes[i].length,
i, v4l2_vb2_buf->planes[i].data_offset);
staticbool visl_tpg_fill_codec_specific(struct visl_ctx *ctx, struct visl_run *run, char buf[], size_t bufsz)
{ /* * To add variability, we need a value that is stable for a given * input but is different than already shown fields. * The pic order count value defines the display order of the frames * (which can be different than the decoding order that is shown with * the sequence number). * Therefore it is stable for a given input and will add a different * value that is more specific to the way the input is encoded.
*/ switch (ctx->current_codec) { case VISL_CODEC_H264:
scnprintf(buf, bufsz, "H264: %u", run->h264.dpram->pic_order_cnt_lsb); break; case VISL_CODEC_HEVC:
scnprintf(buf, bufsz, "HEVC: %d", run->hevc.dpram->pic_order_cnt_val); break; default: returnfalse;
}
for (i = 0; i < coded_fmt->num_planes; i++) {
scnprintf(buf,
TPG_STR_BUF_SZ, "plane[%d]: bytesperline: %d, sizeimage: %d",
i,
coded_fmt->plane_fmt[i].bytesperline,
coded_fmt->plane_fmt[i].sizeimage);
for (i = 0; i < decoded_fmt->num_planes; i++) {
scnprintf(buf,
TPG_STR_BUF_SZ, "plane[%d]: bytesperline: %d, sizeimage: %d",
i,
decoded_fmt->plane_fmt[i].bytesperline,
decoded_fmt->plane_fmt[i].sizeimage);
staticvoid visl_trace_ctrls(struct visl_ctx *ctx, struct visl_run *run)
{ int i;
switch (ctx->current_codec) { default: case VISL_CODEC_NONE: break; case VISL_CODEC_FWHT:
trace_v4l2_ctrl_fwht_params(run->fwht.params); break; case VISL_CODEC_MPEG2:
trace_v4l2_ctrl_mpeg2_sequence(run->mpeg2.seq);
trace_v4l2_ctrl_mpeg2_picture(run->mpeg2.pic);
trace_v4l2_ctrl_mpeg2_quantisation(run->mpeg2.quant); break; case VISL_CODEC_VP8:
trace_v4l2_ctrl_vp8_frame(run->vp8.frame);
trace_v4l2_ctrl_vp8_entropy(run->vp8.frame); break; case VISL_CODEC_VP9:
trace_v4l2_ctrl_vp9_frame(run->vp9.frame);
trace_v4l2_ctrl_vp9_compressed_hdr(run->vp9.probs);
trace_v4l2_ctrl_vp9_compressed_coeff(run->vp9.probs);
trace_v4l2_vp9_mv_probs(&run->vp9.probs->mv); break; case VISL_CODEC_H264:
trace_v4l2_ctrl_h264_sps(run->h264.sps);
trace_v4l2_ctrl_h264_pps(run->h264.pps);
trace_v4l2_ctrl_h264_scaling_matrix(run->h264.sm);
trace_v4l2_ctrl_h264_slice_params(run->h264.spram);
for (i = 0; i < ARRAY_SIZE(run->h264.spram->ref_pic_list0); i++)
trace_v4l2_h264_ref_pic_list0(&run->h264.spram->ref_pic_list0[i], i); for (i = 0; i < ARRAY_SIZE(run->h264.spram->ref_pic_list0); i++)
trace_v4l2_h264_ref_pic_list1(&run->h264.spram->ref_pic_list1[i], i);
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.23Bemerkung:
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.