From 468f2e6efd82dd336c40333b66d946d1cdc0ca3f Mon Sep 17 00:00:00 2001 From: Hans Verkuil Date: Wed, 22 Aug 2012 11:07:12 +0200 Subject: [PATCH] v4l2-compliance: add VIDIOC_G_ENC_INDEX test. Signed-off-by: Hans Verkuil --- utils/v4l2-compliance/v4l2-compliance.cpp | 2 +- utils/v4l2-compliance/v4l2-compliance.h | 1 + utils/v4l2-compliance/v4l2-test-codecs.cpp | 17 +++++++++++++++++ 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/utils/v4l2-compliance/v4l2-compliance.cpp b/utils/v4l2-compliance/v4l2-compliance.cpp index 64ba5d73..c38091ad 100644 --- a/utils/v4l2-compliance/v4l2-compliance.cpp +++ b/utils/v4l2-compliance/v4l2-compliance.cpp @@ -660,6 +660,7 @@ int main(int argc, char **argv) printf("Codec ioctls:\n"); printf("\ttest VIDIOC_(TRY_)ENCODER_CMD: %s\n", ok(testEncoder(&node))); + printf("\ttest VIDIOC_G_ENC_INDEX: %s\n", ok(testEncIndex(&node))); printf("\ttest VIDIOC_(TRY_)DECODER_CMD: %s\n", ok(testDecoder(&node))); printf("\n"); @@ -674,7 +675,6 @@ int main(int argc, char **argv) VIDIOC_CROPCAP, VIDIOC_G/S_CROP, VIDIOC_G/S_SELECTION VIDIOC_S_FBUF/OVERLAY - VIDIOC_G_ENC_INDEX VIDIOC_QBUF/DQBUF/QUERYBUF/PREPARE_BUFS VIDIOC_STREAMON/OFF */ diff --git a/utils/v4l2-compliance/v4l2-compliance.h b/utils/v4l2-compliance/v4l2-compliance.h index 5a862310..88ae2bea 100644 --- a/utils/v4l2-compliance/v4l2-compliance.h +++ b/utils/v4l2-compliance/v4l2-compliance.h @@ -191,6 +191,7 @@ int testSlicedVBICap(struct node *node); // Codec ioctl tests int testEncoder(struct node *node); +int testEncIndex(struct node *node); int testDecoder(struct node *node); // Buffer ioctl tests diff --git a/utils/v4l2-compliance/v4l2-test-codecs.cpp b/utils/v4l2-compliance/v4l2-test-codecs.cpp index 6a5efa94..5057d0ff 100644 --- a/utils/v4l2-compliance/v4l2-test-codecs.cpp +++ b/utils/v4l2-compliance/v4l2-test-codecs.cpp @@ -61,6 +61,23 @@ int testEncoder(struct node *node) return 0; } +int testEncIndex(struct node *node) +{ + struct v4l2_enc_idx idx; + int ret; + + memset(&idx, 0xff, sizeof(idx)); + ret = doioctl(node, VIDIOC_G_ENC_INDEX, &idx); + if (ret == ENOTTY) + return ret; + if (check_0(idx.reserved, sizeof(idx.reserved))) + return fail("idx.reserved not zeroed\n"); + fail_on_test(ret); + fail_on_test(idx.entries != 0); + fail_on_test(idx.entries_cap == 0); + return 0; +} + int testDecoder(struct node *node) { struct v4l2_decoder_cmd cmd; -- 2.34.1