aboutsummaryrefslogtreecommitdiffstats
path: root/utils/v4l2-ctl/v4l2-ctl-streaming.cpp
diff options
context:
space:
mode:
authorVandana BN <bnvandana@gmail.com>2019-10-15 18:00:02 +0530
committerHans Verkuil <hverkuil-cisco@xs4all.nl>2019-10-24 16:56:09 +0200
commit1124bb49ad93a777430f566f2c93edcddfabf13e (patch)
treed90ba6a0733420c8559d83415e280f9b31fcb003 /utils/v4l2-ctl/v4l2-ctl-streaming.cpp
parentfc60175e5d5dbcbdb4e420bb58e6529e4b9e61a2 (diff)
v4l2-ctl: support for metadata output
Adds support to test metadata output format V4L2_META_FMT_VIVID. Signed-off-by: Vandana BN <bnvandana@gmail.com> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Diffstat (limited to 'utils/v4l2-ctl/v4l2-ctl-streaming.cpp')
-rw-r--r--utils/v4l2-ctl/v4l2-ctl-streaming.cpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/utils/v4l2-ctl/v4l2-ctl-streaming.cpp b/utils/v4l2-ctl/v4l2-ctl-streaming.cpp
index 47b7d3f8..184bfd64 100644
--- a/utils/v4l2-ctl/v4l2-ctl-streaming.cpp
+++ b/utils/v4l2-ctl/v4l2-ctl-streaming.cpp
@@ -1146,6 +1146,7 @@ static int do_setup_out_buffers(cv4l_fd &fd, cv4l_queue &q, FILE *fin, bool qbuf
bool can_fill = false;
bool is_video = q.g_type() == V4L2_BUF_TYPE_VIDEO_OUTPUT ||
q.g_type() == V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE;
+ bool is_meta = q.g_type() == V4L2_BUF_TYPE_META_OUTPUT;
if (q.obtain_bufs(&fd))
return QUEUE_ERROR;
@@ -1241,6 +1242,9 @@ static int do_setup_out_buffers(cv4l_fd &fd, cv4l_queue &q, FILE *fin, bool qbuf
tpg_fillbuffer(&tpg, stream_out_std, j, (u8 *)q.g_dataptr(i, j));
}
}
+ if (is_meta)
+ meta_fillbuffer(buf, fmt, q);
+
if (fin && !fill_buffer_from_file(fd, q, buf, fmt, fin))
return QUEUE_STOPPED;
@@ -1480,6 +1484,7 @@ static int do_handle_out(cv4l_fd &fd, cv4l_queue &q, FILE *fin, cv4l_buffer *cap
bool stopped, bool ignore_count_skip)
{
cv4l_buffer buf(q);
+ bool is_meta = q.g_type() == V4L2_BUF_TYPE_META_OUTPUT;
int ret = 0;
if (cap) {
@@ -1542,6 +1547,8 @@ static int do_handle_out(cv4l_fd &fd, cv4l_queue &q, FILE *fin, cv4l_buffer *cap
tpg_fillbuffer(&tpg, stream_out_std, j,
(u8 *)q.g_dataptr(buf.g_index(), j));
}
+ if (is_meta)
+ meta_fillbuffer(buf, fmt, q);
if (fmt.g_pixelformat() == V4L2_PIX_FMT_FWHT_STATELESS) {
if (ioctl(buf.g_request_fd(), MEDIA_REQUEST_IOC_REINIT, NULL)) {
@@ -2039,7 +2046,7 @@ static void streaming_set_out(cv4l_fd &fd, cv4l_fd &exp_fd)
if (!(capabilities & (V4L2_CAP_VIDEO_OUTPUT | V4L2_CAP_VIDEO_OUTPUT_MPLANE |
V4L2_CAP_VBI_OUTPUT | V4L2_CAP_SLICED_VBI_OUTPUT |
- V4L2_CAP_SDR_OUTPUT |
+ V4L2_CAP_SDR_OUTPUT | V4L2_CAP_META_OUTPUT |
V4L2_CAP_VIDEO_M2M | V4L2_CAP_VIDEO_M2M_MPLANE))) {
fprintf(stderr, "unsupported stream type\n");
return;

Privacy Policy