@@ -734,7 +734,23 @@ struct v4l2_ext_control *retrace_v4l2_ext_control(json_object *parent_obj, int c
p->value = retrace_v4l2_ext_control_value(v4l2_ext_control_obj,
v4l2_stateless_hevc_start_code_val_def);
break;
+ case V4L2_CID_MPEG_VIDEO_DEC_PTS:
+ case V4L2_CID_MPEG_VIDEO_DEC_FRAME:
+ case V4L2_CID_MPEG_VIDEO_DEC_CONCEAL_COLOR:
+ case V4L2_CID_PIXEL_RATE: {
+ json_object *value64_obj;
+
+ if (json_object_object_get_ex(v4l2_ext_control_obj, "value64", &value64_obj))
+ p->value64 = json_object_get_int64(value64_obj);
+ break;
+ }
default:
+ if (!p->size) {
+ json_object *value_obj;
+
+ if (json_object_object_get_ex(v4l2_ext_control_obj, "value", &value_obj))
+ p->value = json_object_get_int(value_obj);
+ }
break;
}
@@ -405,9 +405,19 @@ void trace_v4l2_ext_control(void *arg, json_object *parent_obj, std::string key_
case V4L2_CID_STATELESS_MPEG2_QUANTISATION:
trace_v4l2_ctrl_mpeg2_quantisation_gen(p->p_mpeg2_quantisation, v4l2_ext_control_obj);
break;
+ case V4L2_CID_MPEG_VIDEO_DEC_PTS:
+ case V4L2_CID_MPEG_VIDEO_DEC_FRAME:
+ case V4L2_CID_MPEG_VIDEO_DEC_CONCEAL_COLOR:
+ case V4L2_CID_PIXEL_RATE:
+ json_object_object_add(v4l2_ext_control_obj, "value64", json_object_new_int64(p->value64));
+ break;
default:
- fprintf(stderr, "%s:%s:%d: ", __FILE__, __func__, __LINE__);
- fprintf(stderr, "warning: cannot trace control: %s\n", val2s(p->id, control_val_def).c_str());
+ if (p->size) {
+ fprintf(stderr, "%s:%s:%d: ", __FILE__, __func__, __LINE__);
+ fprintf(stderr, "warning: cannot trace control: %s\n", val2s(p->id, control_val_def).c_str());
+ } else {
+ json_object_object_add(v4l2_ext_control_obj, "value", json_object_new_int(p->value));
+ }
break;
}
The v4l2-tracer utility didn't support tracing simple controls without a payload (i.e. the 'size' field is 0) and just a simple value. This adds support for that, plus the four standard INTEGER64 controls that use field value64. Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl> --- Changes since v1: - Use int64 instead of uint64 for "value64" (copy-paste error). - Use int instead of int64 for "value". ---