if (!inst->fh.m2m_ctx) return 0;
num = scnprintf(str, sizeof(str), "[%s]\n", vpu_core_type_desc(inst->type)); if (seq_write(s, str, num)) return 0;
num = scnprintf(str, sizeof(str), "tgig = %d,pid = %d\n", inst->tgid, inst->pid); if (seq_write(s, str, num)) return 0;
num = scnprintf(str, sizeof(str), "state = %s\n", vpu_codec_state_name(inst->state)); if (seq_write(s, str, num)) return 0;
num = scnprintf(str, sizeof(str), "min_buffer_out = %d, min_buffer_cap = %d\n",
inst->min_buffer_out, inst->min_buffer_cap); if (seq_write(s, str, num)) return 0;
vq = v4l2_m2m_get_src_vq(inst->fh.m2m_ctx);
num = scnprintf(str, sizeof(str), "output (%2d, %2d): fmt = %c%c%c%c %d x %d, %d;",
vb2_is_streaming(vq),
vb2_get_num_buffers(vq),
inst->out_format.pixfmt,
inst->out_format.pixfmt >> 8,
inst->out_format.pixfmt >> 16,
inst->out_format.pixfmt >> 24,
inst->out_format.width,
inst->out_format.height,
vq->last_buffer_dequeued); if (seq_write(s, str, num)) return 0; for (i = 0; i < inst->out_format.mem_planes; i++) {
num = scnprintf(str, sizeof(str), " %d(%d)",
vpu_get_fmt_plane_size(&inst->out_format, i),
inst->out_format.bytesperline[i]); if (seq_write(s, str, num)) return 0;
} if (seq_write(s, "\n", 1)) return 0;
vq = v4l2_m2m_get_dst_vq(inst->fh.m2m_ctx);
num = scnprintf(str, sizeof(str), "capture(%2d, %2d): fmt = %c%c%c%c %d x %d, %d;",
vb2_is_streaming(vq),
vb2_get_num_buffers(vq),
inst->cap_format.pixfmt,
inst->cap_format.pixfmt >> 8,
inst->cap_format.pixfmt >> 16,
inst->cap_format.pixfmt >> 24,
inst->cap_format.width,
inst->cap_format.height,
vq->last_buffer_dequeued); if (seq_write(s, str, num)) return 0; for (i = 0; i < inst->cap_format.mem_planes; i++) {
num = scnprintf(str, sizeof(str), " %d(%d)",
vpu_get_fmt_plane_size(&inst->cap_format, i),
inst->cap_format.bytesperline[i]); if (seq_write(s, str, num)) return 0;
} if (seq_write(s, "\n", 1)) return 0;
num = scnprintf(str, sizeof(str), "crop: (%d, %d) %d x %d\n",
inst->crop.left,
inst->crop.top,
inst->crop.width,
inst->crop.height); if (seq_write(s, str, num)) return 0;
vq = v4l2_m2m_get_src_vq(inst->fh.m2m_ctx); for (i = 0; i < vb2_get_num_buffers(vq); i++) { struct vb2_buffer *vb; struct vb2_v4l2_buffer *vbuf;
vb = vb2_get_buffer(vq, i); if (!vb) continue;
if (vb->state == VB2_BUF_STATE_DEQUEUED) continue;
vbuf = to_vb2_v4l2_buffer(vb);
num = scnprintf(str, sizeof(str), "output [%2d] state = %10s, %8s\n",
i, vb2_stat_name[vb->state],
to_vpu_stat_name(vpu_get_buffer_state(vbuf))); if (seq_write(s, str, num)) return 0;
}
vq = v4l2_m2m_get_dst_vq(inst->fh.m2m_ctx); for (i = 0; i < vb2_get_num_buffers(vq); i++) { struct vb2_buffer *vb; struct vb2_v4l2_buffer *vbuf; struct vpu_vb2_buffer *vpu_buf;
vb = vb2_get_buffer(vq, i); if (!vb) continue;
if (vb->state == VB2_BUF_STATE_DEQUEUED) continue;
num = scnprintf(str, sizeof(str), "capture[%2d] state = %10s, %8s",
i, vb2_stat_name[vb->state],
to_vpu_stat_name(vpu_get_buffer_state(vbuf))); if (seq_write(s, str, num)) return 0;
if (vpu_buf->fs_id >= 0) {
num = scnprintf(str, sizeof(str), "; fs %d", vpu_buf->fs_id); if (seq_write(s, str, num)) return 0;
}
num = scnprintf(str, sizeof(str), "\n"); if (seq_write(s, str, num)) return 0;
}
num = scnprintf(str, sizeof(str), "sequence = %d\n", inst->sequence); if (seq_write(s, str, num)) return 0;
if (inst->use_stream_buffer) {
num = scnprintf(str, sizeof(str), "stream_buffer = %d / %d, <%pad, 0x%x>\n",
vpu_helper_get_used_space(inst),
inst->stream_buffer.length,
&inst->stream_buffer.phys,
inst->stream_buffer.length); if (seq_write(s, str, num)) return 0;
}
num = scnprintf(str, sizeof(str), "kfifo len = 0x%x\n", kfifo_len(&inst->msg_fifo)); if (seq_write(s, str, num)) return 0;
num = scnprintf(str, sizeof(str), "flow :\n"); if (seq_write(s, str, num)) return 0;
mutex_lock(&inst->core->cmd_lock); for (i = 0; i < ARRAY_SIZE(inst->flows); i++) {
u32 idx = (inst->flow_idx + i) % (ARRAY_SIZE(inst->flows));
if (!inst->flows[idx]) continue;
num = scnprintf(str, sizeof(str), "\t[%s] %s\n",
inst->flows[idx] >= VPU_MSG_ID_NOOP ? "M" : "C",
vpu_id_name(inst->flows[idx])); if (seq_write(s, str, num)) {
mutex_unlock(&inst->core->cmd_lock); return 0;
}
}
mutex_unlock(&inst->core->cmd_lock);
i = 0; while (true) {
num = call_vop(inst, get_debug_info, str, sizeof(str), i++); if (num <= 0) break; if (seq_write(s, str, num)) return 0;
}
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.