* [LTP] [PATCH] v4l-test 0.17 for LTP
@ 2009-07-25 6:06 Németh Márton
2009-07-30 18:29 ` Subrata Modak
0 siblings, 1 reply; 2+ messages in thread
From: Németh Márton @ 2009-07-25 6:06 UTC (permalink / raw)
To: Subrata Modak; +Cc: ltp-list
[-- Attachment #1: Type: text/plain, Size: 258 bytes --]
Hi,
this is v4l-test 0.17 for LTP.
Changes:
Test cases added for VIDIOC_ENUM_FRAMESIZES and VIDIOC_G_JPEGCOMP.
New V4L2_PIX_FMT_* formats also used in test cases.
Signed-off-by: Márton Németh <nm127@freemail.hu>
Regards,
Márton Németh
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: v4l-test-0.17_for_ltp.patch --]
[-- Type: text/x-diff; name="v4l-test-0.17_for_ltp.patch", Size: 38210 bytes --]
diff -uprN ltp.orig/testcases/kernel/device-drivers/v4l/user_space/doc/index.html ltp/testcases/kernel/device-drivers/v4l/user_space/doc/index.html
--- ltp.orig/testcases/kernel/device-drivers/v4l/user_space/doc/index.html 2009-07-08 19:35:12.000000000 +0200
+++ ltp/testcases/kernel/device-drivers/v4l/user_space/doc/index.html 2009-07-23 06:48:26.000000000 +0200
@@ -160,7 +160,7 @@ implemented test cases.</p>
</tr>
<tr>
<td>ioctl <a href="spec/r8494.htm">VIDIOC_ENUM_FRAMESIZES</a></td>
- <td>no</td>
+ <td>yes, only when STREAM_OFF</td>
<td><a href="spec/x16453.htm">Exp.</a> Enum.</td>
</tr>
<tr>
@@ -295,7 +295,7 @@ implemented test cases.</p>
</tr>
<tr>
<td>ioctl <a href="spec/r11285.htm">VIDIOC_G_JPEGCOMP</a></td>
- <td>no</td>
+ <td>yes, only when STREAM_OFF</td>
<td>Opt.</td>
</tr>
<tr>
@@ -603,7 +603,7 @@ And what else can we read if we are look
You can find the email address in the source package in the README file.</p>
<hr style="width: 100%; height: 2px;">
<p>Last changed:
-Wed Jun 3 08:35:10 CEST 2009
+Thu Jul 23 06:47:49 CEST 2009
</p>
<p>
<a href="http://validator.w3.org/check?uri=referer"><img
diff -uprN ltp.orig/testcases/kernel/device-drivers/v4l/user_space/doc/results.html ltp/testcases/kernel/device-drivers/v4l/user_space/doc/results.html
--- ltp.orig/testcases/kernel/device-drivers/v4l/user_space/doc/results.html 2009-06-04 11:01:16.000000000 +0200
+++ ltp/testcases/kernel/device-drivers/v4l/user_space/doc/results.html 2009-07-08 08:38:07.000000000 +0200
@@ -72,6 +72,17 @@ project or during developing it.
</a>
</li>
+ <li>
+ <a href="http://marc.info/?l=linux-kernel&m=124694769813949&w=2">
+ [PATCH 1/2] v4l2: modify the webcam video standard handling
+ </a>
+ </li>
+
+ <li>
+ <a href="http://marc.info/?l=linux-kernel&m=124694772913969&w=2">
+ [PATCH 2/2] v4l2: remove unnecessary vidioc_s_std() from gspca
+ </a>
+ </li>
</ul>
<p>In the out-of-tree <a href="http://mcentral.de/hg/~mrec/em28xx-new">em28xx-new driver</a>
@@ -100,7 +111,7 @@ the following problems were identified w
<hr style="width: 100%; height: 2px;">
<p>Last changed:
-Mon May 25 07:38:56 CEST 2009
+Wed Jul 8 08:38:00 CEST 2009
</p>
<p>
<a href="http://validator.w3.org/check?uri=referer"><img
diff -uprN ltp.orig/testcases/kernel/device-drivers/v4l/user_space/Makefile ltp/testcases/kernel/device-drivers/v4l/user_space/Makefile
--- ltp.orig/testcases/kernel/device-drivers/v4l/user_space/Makefile 2009-07-08 19:35:12.000000000 +0200
+++ ltp/testcases/kernel/device-drivers/v4l/user_space/Makefile 2009-07-23 06:47:17.000000000 +0200
@@ -1,6 +1,8 @@
#
# v4l-test: Test environment for Video For Linux Two API
#
+# 16 Jul 2009 0.19 test_VIDIOC_JPEGCOMP.c and
+# test_VIDIOC_ENUM_FRAMESIZES.c added
# 5 Jul 2009 0.18 v4l2_foreach.c added
# 19 May 2009 0.17 test_VIDIOC_EXT_CTRLS.c added
# 7 May 2009 0.16 v4l2_show.c added
@@ -44,9 +46,11 @@ OBJS = dev_video.o \
test_VIDIOC_ENUMAUDIO.o \
test_VIDIOC_ENUMAUDOUT.o \
test_VIDIOC_ENUM_FMT.o \
+ test_VIDIOC_JPEGCOMP.o \
test_VIDIOC_ENUMINPUT.o \
test_VIDIOC_ENUMOUTPUT.o \
test_VIDIOC_ENUMSTD.o \
+ test_VIDIOC_ENUM_FRAMESIZES.o \
test_VIDIOC_LOG_STATUS.o \
test_VIDIOC_CROPCAP.o \
test_VIDIOC_G_SLICED_VBI_CAP.o \
diff -uprN ltp.orig/testcases/kernel/device-drivers/v4l/user_space/README ltp/testcases/kernel/device-drivers/v4l/user_space/README
--- ltp.orig/testcases/kernel/device-drivers/v4l/user_space/README 2009-07-08 19:35:12.000000000 +0200
+++ ltp/testcases/kernel/device-drivers/v4l/user_space/README 2009-07-23 07:12:32.000000000 +0200
@@ -3,6 +3,9 @@
Release History
---------------
+23 Jul 2009 0.17 Test cases added for VIDIOC_ENUM_FRAMESIZES and
+ VIDIOC_G_JPEGCOMP. New V4L2_PIX_FMT_* formats also
+ used in test cases.
6 Jul 2009 0.16 Iterate through all available inputs in VIDIOC_G_STD and
VIDIOC_S_STD test cases
25 May 2009 0.15 Test cases added for VIDIOC_G_EXT_CTRLS, VIDIOC_S_EXT_CTRLS
diff -uprN ltp.orig/testcases/kernel/device-drivers/v4l/user_space/test_VIDIOC_ENUM_FRAMESIZES.c ltp/testcases/kernel/device-drivers/v4l/user_space/test_VIDIOC_ENUM_FRAMESIZES.c
--- ltp.orig/testcases/kernel/device-drivers/v4l/user_space/test_VIDIOC_ENUM_FRAMESIZES.c 1970-01-01 01:00:00.000000000 +0100
+++ ltp/testcases/kernel/device-drivers/v4l/user_space/test_VIDIOC_ENUM_FRAMESIZES.c 2009-07-22 22:55:13.000000000 +0200
@@ -0,0 +1,588 @@
+/*
+ * v4l-test: Test environment for Video For Linux Two API
+ *
+ * 16 Jun 2009 0.1 First release
+ *
+ * Written by Márton Németh <nm127@freemail.hu>
+ * Released under GPL
+ */
+
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <unistd.h>
+#include <sys/ioctl.h>
+#include <errno.h>
+#include <string.h>
+
+#include <linux/videodev2.h>
+#include <linux/errno.h>
+
+#include <CUnit/CUnit.h>
+
+#include "v4l2_test.h"
+#include "dev_video.h"
+#include "video_limits.h"
+#include "v4l2_validator.h"
+#include "v4l2_foreach.h"
+#include "v4l2_show.h"
+
+#include "test_VIDIOC_ENUM_FRAMESIZES.h"
+
+static int valid_framesize_type(__u32 type) {
+ int valid = 0;
+
+ if ( (type == V4L2_FRMSIZE_TYPE_DISCRETE) ||
+ (type == V4L2_FRMSIZE_TYPE_CONTINUOUS) ||
+ (type == V4L2_FRMSIZE_TYPE_STEPWISE) ) {
+ valid = 1;
+ } else {
+ valid = 0;
+ }
+ return valid;
+}
+
+static void do_test_VIDIOC_ENUM_FRAMESIZES(__u32 fmt) {
+ struct v4l2_frmsizeenum framesize;
+ int ret_frame, errno_frame;
+ __u32 i;
+ __u32 first_type;
+
+ i = 0;
+ first_type = 0;
+ do {
+ memset(&framesize, 0xff, sizeof(framesize));
+ framesize.index = i;
+ framesize.pixel_format = fmt;
+ ret_frame = ioctl(get_video_fd(), VIDIOC_ENUM_FRAMESIZES, &framesize);
+ errno_frame = errno;
+
+ dprintf("\t%s:%u: VIDIOC_ENUM_FRAMESIZES, index=%u, pixel_format=0x%x, ret_frame=%i, errno_frame=%i\n",
+ __FILE__, __LINE__,
+ i, fmt,
+ ret_frame, errno_frame);
+
+ if (i != 0 && first_type != V4L2_FRMSIZE_TYPE_DISCRETE) {
+ CU_ASSERT_EQUAL(ret_frame, -1);
+ CU_ASSERT_EQUAL(errno_frame, EINVAL);
+ }
+
+ if (ret_frame == 0) {
+ CU_ASSERT_EQUAL(ret_frame, 0);
+ CU_ASSERT_EQUAL(framesize.index, i);
+ CU_ASSERT_EQUAL(framesize.pixel_format, fmt);
+ CU_ASSERT(valid_framesize_type(framesize.type));
+
+ if (i == 0) {
+ first_type = framesize.type;
+ } else {
+ CU_ASSERT_EQUAL(framesize.type, first_type);
+ }
+
+ switch (framesize.type) {
+ case V4L2_FRMSIZE_TYPE_DISCRETE:
+ CU_ASSERT(0 < framesize.discrete.width);
+ CU_ASSERT(0 < framesize.discrete.height);
+ break;
+
+ case V4L2_FRMSIZE_TYPE_CONTINUOUS:
+ CU_ASSERT(0 < framesize.stepwise.min_width);
+ CU_ASSERT(0 < framesize.stepwise.max_width);
+ CU_ASSERT_EQUAL(framesize.stepwise.step_width, 1);
+
+ CU_ASSERT(framesize.stepwise.min_width < framesize.stepwise.max_width);
+
+ CU_ASSERT(0 < framesize.stepwise.min_height);
+ CU_ASSERT(0 < framesize.stepwise.max_height);
+ CU_ASSERT_EQUAL(framesize.stepwise.step_height, 1);
+
+ CU_ASSERT(framesize.stepwise.min_height < framesize.stepwise.max_height);
+ break;
+
+ case V4L2_FRMSIZE_TYPE_STEPWISE:
+ CU_ASSERT(0 < framesize.stepwise.min_width);
+ CU_ASSERT(0 < framesize.stepwise.max_width);
+ CU_ASSERT(0 < framesize.stepwise.step_width);
+
+ CU_ASSERT(framesize.stepwise.min_width < framesize.stepwise.max_width);
+
+ /* check if the given step is unambigous: min + n * step = max */
+ if (framesize.stepwise.step_width != 0) {
+ CU_ASSERT_EQUAL( (framesize.stepwise.max_width-framesize.stepwise.min_width) % framesize.stepwise.step_width, 0);
+ }
+
+ CU_ASSERT(0 < framesize.stepwise.min_height);
+ CU_ASSERT(0 < framesize.stepwise.max_height);
+ CU_ASSERT(0 < framesize.stepwise.step_height);
+
+ CU_ASSERT(framesize.stepwise.min_height < framesize.stepwise.max_height);
+
+ /* check if the given step is unambigous: min + n * step = max */
+ if (framesize.stepwise.step_height != 0) {
+ CU_ASSERT_EQUAL( (framesize.stepwise.max_height-framesize.stepwise.min_height) % framesize.stepwise.step_height, 0);
+ }
+
+ break;
+ }
+
+ CU_ASSERT_EQUAL(framesize.reserved[0], 0);
+ CU_ASSERT_EQUAL(framesize.reserved[1], 0);
+
+ show_v4l2_frmsizeenum(&framesize);
+
+ } else {
+ CU_ASSERT_EQUAL(ret_frame, -1);
+ CU_ASSERT_EQUAL(errno_frame, EINVAL);
+ }
+ i++;
+ } while (ret_frame == 0 && i != 0);
+
+}
+
+static void do_test_VIDIOC_ENUM_FRAMESIZES_type(enum v4l2_buf_type type) {
+ int ret_enum, errno_enum;
+ struct v4l2_fmtdesc format;
+ __u32 i;
+
+ i = 0;
+ do {
+ memset(&format, 0xff, sizeof(format));
+ format.index = i;
+ format.type = type;
+
+ ret_enum = ioctl(get_video_fd(), VIDIOC_ENUM_FMT, &format);
+ errno_enum = errno;
+
+ dprintf("\t%s:%u: VIDIOC_ENUM_FMT, index=%u, type=%i, ret_enum=%i, errno_enum=%i\n",
+ __FILE__, __LINE__, i, format.type, ret_enum, errno_enum);
+
+ /* Ensure that VIDIOC_ENUM_FRAMESIZES is called at least once
+ * even if VIDIOC_ENUM_FMT returns error
+ */
+ do_test_VIDIOC_ENUM_FRAMESIZES(format.pixelformat);
+
+ i++;
+ } while (ret_enum == 0 && i != 0);
+
+}
+
+void test_VIDIOC_ENUM_FRAMESIZES() {
+ do_test_VIDIOC_ENUM_FRAMESIZES_type(V4L2_BUF_TYPE_VIDEO_CAPTURE);
+ do_test_VIDIOC_ENUM_FRAMESIZES_type(V4L2_BUF_TYPE_VIDEO_OUTPUT);
+ do_test_VIDIOC_ENUM_FRAMESIZES_type(V4L2_BUF_TYPE_VIDEO_OVERLAY);
+ do_test_VIDIOC_ENUM_FRAMESIZES_type(V4L2_BUF_TYPE_PRIVATE);
+}
+
+static void do_test_VIDIOC_ENUM_FRAMESIZES_invalid_index(__u32 fmt) {
+ struct v4l2_frmsizeenum framesize;
+ int ret_frame, errno_frame;
+ __u32 i;
+ __u32 max_index;
+
+ i = 0;
+ do {
+ memset(&framesize, 0xff, sizeof(framesize));
+ framesize.index = i;
+ framesize.pixel_format = fmt;
+ ret_frame = ioctl(get_video_fd(), VIDIOC_ENUM_FRAMESIZES, &framesize);
+ errno_frame = errno;
+
+ dprintf("\t%s:%u: VIDIOC_ENUM_FRAMESIZES, index=%u, pixel_format=0x%x, ret_frame=%i, errno_frame=%i\n",
+ __FILE__, __LINE__,
+ i, fmt,
+ ret_frame, errno_frame);
+
+ i++;
+ } while (ret_frame == 0 && i != 0);
+
+ max_index = i-1;
+
+ i = max_index+1;
+ memset(&framesize, 0xff, sizeof(framesize));
+ framesize.index = i;
+ framesize.pixel_format = fmt;
+ ret_frame = ioctl(get_video_fd(), VIDIOC_ENUM_FRAMESIZES, &framesize);
+ errno_frame = errno;
+
+ dprintf("\t%s:%u: VIDIOC_ENUM_FRAMESIZES, index=%u, pixel_format=0x%x, ret_frame=%i, errno_frame=%i\n",
+ __FILE__, __LINE__,
+ i, fmt,
+ ret_frame, errno_frame);
+
+ CU_ASSERT_EQUAL(ret_frame, -1);
+ CU_ASSERT_EQUAL(errno_frame, EINVAL);
+
+ i = (__u32)S32_MIN;
+ if (max_index < i) {
+ memset(&framesize, 0xff, sizeof(framesize));
+ framesize.index = i;
+ framesize.pixel_format = fmt;
+ ret_frame = ioctl(get_video_fd(), VIDIOC_ENUM_FRAMESIZES, &framesize);
+ errno_frame = errno;
+
+ dprintf("\t%s:%u: VIDIOC_ENUM_FRAMESIZES, index=0x%x, pixel_format=0x%x, ret_frame=%i, errno_frame=%i\n",
+ __FILE__, __LINE__,
+ i, fmt,
+ ret_frame, errno_frame);
+
+ CU_ASSERT_EQUAL(ret_frame, -1);
+ CU_ASSERT_EQUAL(errno_frame, EINVAL);
+ }
+
+ i = (__u32)S32_MAX;
+ if (max_index < i) {
+ memset(&framesize, 0xff, sizeof(framesize));
+ framesize.index = i;
+ framesize.pixel_format = fmt;
+ ret_frame = ioctl(get_video_fd(), VIDIOC_ENUM_FRAMESIZES, &framesize);
+ errno_frame = errno;
+
+ dprintf("\t%s:%u: VIDIOC_ENUM_FRAMESIZES, index=0x%x, pixel_format=0x%x, ret_frame=%i, errno_frame=%i\n",
+ __FILE__, __LINE__,
+ i, fmt,
+ ret_frame, errno_frame);
+
+ CU_ASSERT_EQUAL(ret_frame, -1);
+ CU_ASSERT_EQUAL(errno_frame, EINVAL);
+ }
+
+ i = (__u32)U32_MAX;
+ if (max_index < i) {
+ memset(&framesize, 0xff, sizeof(framesize));
+ framesize.index = i;
+ framesize.pixel_format = fmt;
+ ret_frame = ioctl(get_video_fd(), VIDIOC_ENUM_FRAMESIZES, &framesize);
+ errno_frame = errno;
+
+ dprintf("\t%s:%u: VIDIOC_ENUM_FRAMESIZES, index=0x%x, pixel_format=0x%x, ret_frame=%i, errno_frame=%i\n",
+ __FILE__, __LINE__,
+ i, fmt,
+ ret_frame, errno_frame);
+
+ CU_ASSERT_EQUAL(ret_frame, -1);
+ CU_ASSERT_EQUAL(errno_frame, EINVAL);
+ }
+
+}
+
+static void do_test_VIDIOC_ENUM_FRAMESIZES_type_invalid_index(enum v4l2_buf_type type) {
+ int ret_enum, errno_enum;
+ struct v4l2_fmtdesc format;
+ __u32 i;
+
+ i = 0;
+ do {
+ memset(&format, 0xff, sizeof(format));
+ format.index = i;
+ format.type = type;
+
+ ret_enum = ioctl(get_video_fd(), VIDIOC_ENUM_FMT, &format);
+ errno_enum = errno;
+
+ dprintf("\t%s:%u: VIDIOC_ENUM_FMT, index=%u, type=%i, ret_enum=%i, errno_enum=%i\n",
+ __FILE__, __LINE__, i, format.type, ret_enum, errno_enum);
+
+ /* Ensure that VIDIOC_ENUM_FRAMESIZES is called at least once
+ * even if VIDIOC_ENUM_FMT returns error
+ */
+ do_test_VIDIOC_ENUM_FRAMESIZES_invalid_index(format.pixelformat);
+
+ i++;
+ } while (ret_enum == 0 && i != 0);
+
+}
+
+
+void test_VIDIOC_ENUM_FRAMESIZES_invalid_index() {
+ do_test_VIDIOC_ENUM_FRAMESIZES_type_invalid_index(V4L2_BUF_TYPE_VIDEO_CAPTURE);
+ do_test_VIDIOC_ENUM_FRAMESIZES_type_invalid_index(V4L2_BUF_TYPE_VIDEO_OUTPUT);
+ do_test_VIDIOC_ENUM_FRAMESIZES_type_invalid_index(V4L2_BUF_TYPE_VIDEO_OVERLAY);
+ do_test_VIDIOC_ENUM_FRAMESIZES_type_invalid_index(V4L2_BUF_TYPE_PRIVATE);
+}
+
+static int supported_pixel_format_type(enum v4l2_buf_type type, __u32 pixel_format) {
+ int ret_enum, errno_enum;
+ struct v4l2_fmtdesc format;
+ __u32 i;
+ int supported = 0;
+
+ i = 0;
+ do {
+ memset(&format, 0xff, sizeof(format));
+ format.index = i;
+ format.type = type;
+
+ ret_enum = ioctl(get_video_fd(), VIDIOC_ENUM_FMT, &format);
+ errno_enum = errno;
+
+ dprintf("\t%s:%u: VIDIOC_ENUM_FMT, index=%u, type=%i, ret_enum=%i, errno_enum=%i\n",
+ __FILE__, __LINE__, i, format.type, ret_enum, errno_enum);
+
+ i++;
+ } while (ret_enum == 0 && i != 0 && format.pixelformat != pixel_format);
+
+ if (ret_enum == 0 && i != 0 && format.pixelformat == pixel_format) {
+ supported = 1;
+ }
+
+ return supported;
+}
+
+static int supported_pixel_format(__u32 pixel_format) {
+ int supported = 0;
+
+ supported = supported_pixel_format_type(V4L2_BUF_TYPE_VIDEO_CAPTURE, pixel_format);
+ if (!supported) {
+ supported = supported_pixel_format_type(V4L2_BUF_TYPE_VIDEO_OUTPUT, pixel_format);
+ if (!supported) {
+ supported = supported_pixel_format_type(V4L2_BUF_TYPE_VIDEO_OVERLAY, pixel_format);
+ if (!supported) {
+ supported = supported_pixel_format_type(V4L2_BUF_TYPE_PRIVATE, pixel_format);
+ }
+ }
+ }
+
+ return supported;
+}
+
+static void do_test_VIDIOC_ENUM_FRAMESIZES_invalid_pixel_format(__u32 fmt) {
+ struct v4l2_frmsizeenum framesize;
+ int ret_frame, errno_frame;
+ __u32 i;
+
+ if (!supported_pixel_format(fmt)) {
+ i = 0;
+ memset(&framesize, 0xff, sizeof(framesize));
+ framesize.index = i;
+ framesize.pixel_format = fmt;
+ ret_frame = ioctl(get_video_fd(), VIDIOC_ENUM_FRAMESIZES, &framesize);
+ errno_frame = errno;
+
+ dprintf("\t%s:%u: VIDIOC_ENUM_FRAMESIZES, index=%u, pixel_format=0x%x, ret_frame=%i, errno_frame=%i\n",
+ __FILE__, __LINE__,
+ i, fmt,
+ ret_frame, errno_frame);
+
+ CU_ASSERT_EQUAL(ret_frame, -1);
+ CU_ASSERT_EQUAL(errno_frame, EINVAL);
+ }
+
+}
+
+void test_VIDIOC_ENUM_FRAMESIZES_invalid_pixel_format() {
+
+ do_test_VIDIOC_ENUM_FRAMESIZES_invalid_pixel_format(U32_MIN);
+ do_test_VIDIOC_ENUM_FRAMESIZES_invalid_pixel_format((__u32)S32_MIN);
+ do_test_VIDIOC_ENUM_FRAMESIZES_invalid_pixel_format((__u32)S32_MAX);
+ do_test_VIDIOC_ENUM_FRAMESIZES_invalid_pixel_format(U32_MAX);
+
+ do_test_VIDIOC_ENUM_FRAMESIZES_invalid_pixel_format(V4L2_PIX_FMT_RGB332);
+ do_test_VIDIOC_ENUM_FRAMESIZES_invalid_pixel_format(V4L2_PIX_FMT_RGB444);
+ do_test_VIDIOC_ENUM_FRAMESIZES_invalid_pixel_format(V4L2_PIX_FMT_RGB555);
+ do_test_VIDIOC_ENUM_FRAMESIZES_invalid_pixel_format(V4L2_PIX_FMT_RGB565);
+ do_test_VIDIOC_ENUM_FRAMESIZES_invalid_pixel_format(V4L2_PIX_FMT_RGB555X);
+ do_test_VIDIOC_ENUM_FRAMESIZES_invalid_pixel_format(V4L2_PIX_FMT_RGB565X);
+ do_test_VIDIOC_ENUM_FRAMESIZES_invalid_pixel_format(V4L2_PIX_FMT_BGR24);
+ do_test_VIDIOC_ENUM_FRAMESIZES_invalid_pixel_format(V4L2_PIX_FMT_RGB24);
+ do_test_VIDIOC_ENUM_FRAMESIZES_invalid_pixel_format(V4L2_PIX_FMT_BGR32);
+ do_test_VIDIOC_ENUM_FRAMESIZES_invalid_pixel_format(V4L2_PIX_FMT_RGB32);
+ do_test_VIDIOC_ENUM_FRAMESIZES_invalid_pixel_format(V4L2_PIX_FMT_GREY);
+ do_test_VIDIOC_ENUM_FRAMESIZES_invalid_pixel_format(V4L2_PIX_FMT_Y16);
+ do_test_VIDIOC_ENUM_FRAMESIZES_invalid_pixel_format(V4L2_PIX_FMT_PAL8);
+ do_test_VIDIOC_ENUM_FRAMESIZES_invalid_pixel_format(V4L2_PIX_FMT_YVU410);
+ do_test_VIDIOC_ENUM_FRAMESIZES_invalid_pixel_format(V4L2_PIX_FMT_YVU420);
+ do_test_VIDIOC_ENUM_FRAMESIZES_invalid_pixel_format(V4L2_PIX_FMT_YUYV);
+ do_test_VIDIOC_ENUM_FRAMESIZES_invalid_pixel_format(V4L2_PIX_FMT_UYVY);
+ do_test_VIDIOC_ENUM_FRAMESIZES_invalid_pixel_format(V4L2_PIX_FMT_YUV422P);
+ do_test_VIDIOC_ENUM_FRAMESIZES_invalid_pixel_format(V4L2_PIX_FMT_YUV411P);
+ do_test_VIDIOC_ENUM_FRAMESIZES_invalid_pixel_format(V4L2_PIX_FMT_Y41P);
+ do_test_VIDIOC_ENUM_FRAMESIZES_invalid_pixel_format(V4L2_PIX_FMT_YUV444);
+ do_test_VIDIOC_ENUM_FRAMESIZES_invalid_pixel_format(V4L2_PIX_FMT_YUV555);
+ do_test_VIDIOC_ENUM_FRAMESIZES_invalid_pixel_format(V4L2_PIX_FMT_YUV565);
+ do_test_VIDIOC_ENUM_FRAMESIZES_invalid_pixel_format(V4L2_PIX_FMT_YUV32);
+ do_test_VIDIOC_ENUM_FRAMESIZES_invalid_pixel_format(V4L2_PIX_FMT_NV12);
+ do_test_VIDIOC_ENUM_FRAMESIZES_invalid_pixel_format(V4L2_PIX_FMT_NV21);
+ do_test_VIDIOC_ENUM_FRAMESIZES_invalid_pixel_format(V4L2_PIX_FMT_YUV410);
+ do_test_VIDIOC_ENUM_FRAMESIZES_invalid_pixel_format(V4L2_PIX_FMT_YUV420);
+ do_test_VIDIOC_ENUM_FRAMESIZES_invalid_pixel_format(V4L2_PIX_FMT_YYUV);
+ do_test_VIDIOC_ENUM_FRAMESIZES_invalid_pixel_format(V4L2_PIX_FMT_HI240);
+ do_test_VIDIOC_ENUM_FRAMESIZES_invalid_pixel_format(V4L2_PIX_FMT_HM12);
+ do_test_VIDIOC_ENUM_FRAMESIZES_invalid_pixel_format(V4L2_PIX_FMT_SBGGR8);
+ do_test_VIDIOC_ENUM_FRAMESIZES_invalid_pixel_format(V4L2_PIX_FMT_SBGGR16);
+ do_test_VIDIOC_ENUM_FRAMESIZES_invalid_pixel_format(V4L2_PIX_FMT_MJPEG);
+ do_test_VIDIOC_ENUM_FRAMESIZES_invalid_pixel_format(V4L2_PIX_FMT_JPEG);
+ do_test_VIDIOC_ENUM_FRAMESIZES_invalid_pixel_format(V4L2_PIX_FMT_DV);
+ do_test_VIDIOC_ENUM_FRAMESIZES_invalid_pixel_format(V4L2_PIX_FMT_MPEG);
+ do_test_VIDIOC_ENUM_FRAMESIZES_invalid_pixel_format(V4L2_PIX_FMT_WNVA);
+ do_test_VIDIOC_ENUM_FRAMESIZES_invalid_pixel_format(V4L2_PIX_FMT_SN9C10X);
+ do_test_VIDIOC_ENUM_FRAMESIZES_invalid_pixel_format(V4L2_PIX_FMT_PWC1);
+ do_test_VIDIOC_ENUM_FRAMESIZES_invalid_pixel_format(V4L2_PIX_FMT_PWC2);
+ do_test_VIDIOC_ENUM_FRAMESIZES_invalid_pixel_format(V4L2_PIX_FMT_ET61X251);
+
+#ifdef V4L2_PIX_FMT_VYUY
+ do_test_VIDIOC_ENUM_FRAMESIZES_invalid_pixel_format(V4L2_PIX_FMT_VYUY);
+#endif
+
+#ifdef V4L2_PIX_FMT_NV16
+ do_test_VIDIOC_ENUM_FRAMESIZES_invalid_pixel_format(V4L2_PIX_FMT_NV16);
+#endif
+
+#ifdef V4L2_PIX_FMT_NV61
+ do_test_VIDIOC_ENUM_FRAMESIZES_invalid_pixel_format(V4L2_PIX_FMT_NV61);
+#endif
+
+#ifdef V4L2_PIX_FMT_SGBRG8
+ do_test_VIDIOC_ENUM_FRAMESIZES_invalid_pixel_format(V4L2_PIX_FMT_SGBRG8);
+#endif
+
+#ifdef V4L2_PIX_FMT_SGRBG8
+ do_test_VIDIOC_ENUM_FRAMESIZES_invalid_pixel_format(V4L2_PIX_FMT_SGRBG8);
+#endif
+
+#ifdef V4L2_PIX_FMT_SGRBG10
+ do_test_VIDIOC_ENUM_FRAMESIZES_invalid_pixel_format(V4L2_PIX_FMT_SGRBG10);
+#endif
+
+#ifdef V4L2_PIX_FMT_SGRBG10DPCM8
+ do_test_VIDIOC_ENUM_FRAMESIZES_invalid_pixel_format(V4L2_PIX_FMT_SGRBG10DPCM8);
+#endif
+
+#ifdef V4L2_PIX_FMT_SPCA501
+ do_test_VIDIOC_ENUM_FRAMESIZES_invalid_pixel_format(V4L2_PIX_FMT_SPCA501);
+#endif
+
+#ifdef V4L2_PIX_FMT_SPCA505
+ do_test_VIDIOC_ENUM_FRAMESIZES_invalid_pixel_format(V4L2_PIX_FMT_SPCA505);
+#endif
+
+#ifdef V4L2_PIX_FMT_SPCA508
+ do_test_VIDIOC_ENUM_FRAMESIZES_invalid_pixel_format(V4L2_PIX_FMT_SPCA508);
+#endif
+
+#ifdef V4L2_PIX_FMT_SPCA561
+ do_test_VIDIOC_ENUM_FRAMESIZES_invalid_pixel_format(V4L2_PIX_FMT_SPCA561);
+#endif
+
+#ifdef V4L2_PIX_FMT_PAC207
+ do_test_VIDIOC_ENUM_FRAMESIZES_invalid_pixel_format(V4L2_PIX_FMT_PAC207);
+#endif
+
+#ifdef V4L2_PIX_FMT_MR97310A
+ do_test_VIDIOC_ENUM_FRAMESIZES_invalid_pixel_format(V4L2_PIX_FMT_MR97310A);
+#endif
+
+#ifdef V4L2_PIX_FMT_SQ905C
+ do_test_VIDIOC_ENUM_FRAMESIZES_invalid_pixel_format(V4L2_PIX_FMT_SQ905C);
+#endif
+
+#ifdef V4L2_PIX_FMT_PJPG
+ do_test_VIDIOC_ENUM_FRAMESIZES_invalid_pixel_format(V4L2_PIX_FMT_PJPG);
+#endif
+
+#ifdef V4L2_PIX_FMT_YVYU
+ do_test_VIDIOC_ENUM_FRAMESIZES_invalid_pixel_format(V4L2_PIX_FMT_YVYU);
+#endif
+
+#ifdef V4L2_PIX_FMT_OV511
+ do_test_VIDIOC_ENUM_FRAMESIZES_invalid_pixel_format(V4L2_PIX_FMT_OV511);
+#endif
+
+#ifdef V4L2_PIX_FMT_OV518
+ do_test_VIDIOC_ENUM_FRAMESIZES_invalid_pixel_format(V4L2_PIX_FMT_OV518);
+#endif
+
+}
+
+void test_VIDIOC_ENUM_FRAMESIZES_NULL() {
+ struct v4l2_fmtdesc format_capture;
+ struct v4l2_fmtdesc format_output;
+ struct v4l2_fmtdesc format_overlay;
+ struct v4l2_fmtdesc format_private;
+ struct v4l2_frmsizeenum framesize;
+ int ret_fmt_capture, errno_fmt_capture;
+ int ret_fmt_output, errno_fmt_output;
+ int ret_fmt_overlay, errno_fmt_overlay;
+ int ret_fmt_private, errno_fmt_private;
+ int ret_size, errno_size;
+ int ret_null, errno_null;
+ __u32 fmt;
+
+ memset(&format_capture, 0xff, sizeof(format_capture));
+ format_capture.index = 0;
+ format_capture.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
+
+ ret_fmt_capture = ioctl(get_video_fd(), VIDIOC_ENUM_FMT, &format_capture);
+ errno_fmt_capture = errno;
+
+ dprintf("\t%s:%u: VIDIOC_ENUM_FMT, index=%u, type=%i, ret_fmt_capture=%i, errno_fmt_capture=%i\n",
+ __FILE__, __LINE__, format_capture.index, format_capture.type, ret_fmt_capture, errno_fmt_capture);
+
+ memset(&format_output, 0xff, sizeof(format_output));
+ format_output.index = 0;
+ format_output.type = V4L2_BUF_TYPE_VIDEO_OUTPUT;
+
+ ret_fmt_output = ioctl(get_video_fd(), VIDIOC_ENUM_FMT, &format_output);
+ errno_fmt_output = errno;
+
+ dprintf("\t%s:%u: VIDIOC_ENUM_FMT, index=%u, type=%i, ret_fmt_output=%i, errno_fmt_output=%i\n",
+ __FILE__, __LINE__, format_output.index, format_output.type, ret_fmt_output, errno_fmt_output);
+
+ memset(&format_overlay, 0xff, sizeof(format_overlay));
+ format_overlay.index = 0;
+ format_overlay.type = V4L2_BUF_TYPE_VIDEO_OVERLAY;
+
+ ret_fmt_overlay = ioctl(get_video_fd(), VIDIOC_ENUM_FMT, &format_overlay);
+ errno_fmt_overlay = errno;
+
+ dprintf("\t%s:%u: VIDIOC_ENUM_FMT, index=%u, type=%i, ret_fmt_overlay=%i, errno_fmt_overlay=%i\n",
+ __FILE__, __LINE__, format_overlay.index, format_overlay.type, ret_fmt_overlay, errno_fmt_overlay);
+
+ memset(&format_private, 0xff, sizeof(format_private));
+ format_private.index = 0;
+ format_private.type = V4L2_BUF_TYPE_PRIVATE;
+
+ ret_fmt_private = ioctl(get_video_fd(), VIDIOC_ENUM_FMT, &format_private);
+ errno_fmt_private = errno;
+
+ dprintf("\t%s:%u: VIDIOC_ENUM_FMT, index=%u, type=%i, ret_fmt_private=%i, errno_fmt_private=%i\n",
+ __FILE__, __LINE__, format_private.index, format_private.type, ret_fmt_private, errno_fmt_private);
+
+ if (ret_fmt_capture == 0) {
+ fmt = format_capture.pixelformat;
+ } else if (ret_fmt_output == 0) {
+ fmt = format_output.pixelformat;
+ } else if (ret_fmt_overlay == 0) {
+ fmt = format_overlay.pixelformat;
+ } else if (ret_fmt_private == 0) {
+ fmt = format_private.pixelformat;
+ } else {
+ fmt = 0;
+ }
+
+ memset(&framesize, 0xff, sizeof(framesize));
+ framesize.index = 0;
+ framesize.pixel_format = fmt;
+ ret_size = ioctl(get_video_fd(), VIDIOC_ENUM_FRAMESIZES, &framesize);
+ errno_size = errno;
+
+ dprintf("\tVIDIOC_ENUM_FRAMESIZES, index=%u, pixel_format=0x%x, ret_size=%i, errno_size=%i\n",
+ framesize.index, framesize.pixel_format, ret_size, errno_size);
+
+ ret_null = ioctl(get_video_fd(), VIDIOC_ENUM_FRAMESIZES, NULL);
+ errno_null = errno;
+
+ dprintf("\tVIDIOC_ENUM_FRAMESIZES, ret_null=%i, errno_null=%i\n", ret_null, errno_null);
+
+ if (ret_size == 0) {
+ CU_ASSERT_EQUAL(ret_size, 0);
+ CU_ASSERT_EQUAL(ret_null, -1);
+ CU_ASSERT_EQUAL(errno_null, EFAULT);
+ } else {
+ CU_ASSERT_EQUAL(ret_size, -1);
+ CU_ASSERT_EQUAL(errno_size, EINVAL);
+ CU_ASSERT_EQUAL(ret_null, -1);
+ CU_ASSERT_EQUAL(errno_null, EINVAL);
+ }
+
+}
diff -uprN ltp.orig/testcases/kernel/device-drivers/v4l/user_space/test_VIDIOC_ENUM_FRAMESIZES.h ltp/testcases/kernel/device-drivers/v4l/user_space/test_VIDIOC_ENUM_FRAMESIZES.h
--- ltp.orig/testcases/kernel/device-drivers/v4l/user_space/test_VIDIOC_ENUM_FRAMESIZES.h 1970-01-01 01:00:00.000000000 +0100
+++ ltp/testcases/kernel/device-drivers/v4l/user_space/test_VIDIOC_ENUM_FRAMESIZES.h 2009-07-20 23:10:23.000000000 +0200
@@ -0,0 +1,13 @@
+/*
+ * v4l-test: Test environment for Video For Linux Two API
+ *
+ * 16 Jul 2009 0.1 First release
+ *
+ * Written by Márton Németh <nm127@freemail.hu>
+ * Released under GPL
+ */
+
+void test_VIDIOC_ENUM_FRAMESIZES(void);
+void test_VIDIOC_ENUM_FRAMESIZES_invalid_index(void);
+void test_VIDIOC_ENUM_FRAMESIZES_invalid_pixel_format(void);
+void test_VIDIOC_ENUM_FRAMESIZES_NULL(void);
diff -uprN ltp.orig/testcases/kernel/device-drivers/v4l/user_space/test_VIDIOC_FMT.c ltp/testcases/kernel/device-drivers/v4l/user_space/test_VIDIOC_FMT.c
--- ltp.orig/testcases/kernel/device-drivers/v4l/user_space/test_VIDIOC_FMT.c 2009-04-21 11:23:00.000000000 +0200
+++ ltp/testcases/kernel/device-drivers/v4l/user_space/test_VIDIOC_FMT.c 2009-07-22 22:50:54.000000000 +0200
@@ -1,6 +1,7 @@
/*
* v4l-test: Test environment for Video For Linux Two API
*
+ * 19 Jul 2009 0.4 More V4L2_PIX_FMT_* formats added to valid_poxelformat()
* 18 Apr 2009 0.3 Type added to debug printouts
* 15 Apr 2009 0.2 Added test case for VIDIOC_S_FMT
* 4 Apr 2009 0.1 First release
@@ -76,6 +77,81 @@ int valid_pixelformat(__u32 pixelformat)
case V4L2_PIX_FMT_PWC1:
case V4L2_PIX_FMT_PWC2:
case V4L2_PIX_FMT_ET61X251:
+
+ /* formats from Linux kernel 2.6.31-rc2 */
+
+#ifdef V4L2_PIX_FMT_VYUY
+ case V4L2_PIX_FMT_VYUY:
+#endif
+
+#ifdef V4L2_PIX_FMT_NV16
+ case V4L2_PIX_FMT_NV16:
+#endif
+
+#ifdef V4L2_PIX_FMT_NV61
+ case V4L2_PIX_FMT_NV61:
+#endif
+
+#ifdef V4L2_PIX_FMT_SGBRG8
+ case V4L2_PIX_FMT_SGBRG8:
+#endif
+
+#ifdef V4L2_PIX_FMT_SGRBG8
+ case V4L2_PIX_FMT_SGRBG8:
+#endif
+
+#ifdef V4L2_PIX_FMT_SGRBG10
+ case V4L2_PIX_FMT_SGRBG10:
+#endif
+
+#ifdef V4L2_PIX_FMT_SGRBG10DPCM8
+ case V4L2_PIX_FMT_SGRBG10DPCM8:
+#endif
+
+#ifdef V4L2_PIX_FMT_SPCA501
+ case V4L2_PIX_FMT_SPCA501:
+#endif
+
+#ifdef V4L2_PIX_FMT_SPCA505
+ case V4L2_PIX_FMT_SPCA505:
+#endif
+
+#ifdef V4L2_PIX_FMT_SPCA508
+ case V4L2_PIX_FMT_SPCA508:
+#endif
+
+#ifdef V4L2_PIX_FMT_SPCA561
+ case V4L2_PIX_FMT_SPCA561:
+#endif
+
+#ifdef V4L2_PIX_FMT_PAC207
+ case V4L2_PIX_FMT_PAC207:
+#endif
+
+#ifdef V4L2_PIX_FMT_MR97310A
+ case V4L2_PIX_FMT_MR97310A:
+#endif
+
+#ifdef V4L2_PIX_FMT_SQ905C
+ case V4L2_PIX_FMT_SQ905C:
+#endif
+
+#ifdef V4L2_PIX_FMT_PJPG
+ case V4L2_PIX_FMT_PJPG:
+#endif
+
+#ifdef V4L2_PIX_FMT_YVYU
+ case V4L2_PIX_FMT_YVYU:
+#endif
+
+#ifdef V4L2_PIX_FMT_OV511
+ case V4L2_PIX_FMT_OV511:
+#endif
+
+#ifdef V4L2_PIX_FMT_OV518
+ case V4L2_PIX_FMT_OV518:
+#endif
+
valid = 1;
break;
default:
diff -uprN ltp.orig/testcases/kernel/device-drivers/v4l/user_space/test_VIDIOC_JPEGCOMP.c ltp/testcases/kernel/device-drivers/v4l/user_space/test_VIDIOC_JPEGCOMP.c
--- ltp.orig/testcases/kernel/device-drivers/v4l/user_space/test_VIDIOC_JPEGCOMP.c 1970-01-01 01:00:00.000000000 +0100
+++ ltp/testcases/kernel/device-drivers/v4l/user_space/test_VIDIOC_JPEGCOMP.c 2009-07-16 11:35:18.000000000 +0200
@@ -0,0 +1,122 @@
+/*
+ * v4l-test: Test environment for Video For Linux Two API
+ *
+ * 16 Jun 2009 0.1 First release
+ *
+ * Written by Márton Németh <nm127@freemail.hu>
+ * Released under GPL
+ */
+
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <unistd.h>
+#include <sys/ioctl.h>
+#include <errno.h>
+#include <string.h>
+
+#include <linux/videodev2.h>
+#include <linux/errno.h>
+
+#include <CUnit/CUnit.h>
+
+#include "v4l2_test.h"
+#include "dev_video.h"
+#include "video_limits.h"
+#include "v4l2_validator.h"
+#include "v4l2_foreach.h"
+
+#include "test_VIDIOC_JPEGCOMP.h"
+
+static int valid_jpeg_markers(__u32 jpeg_markers) {
+ int valid = 0;
+
+ if ( (jpeg_markers & ~(V4L2_JPEG_MARKER_DHT |
+ V4L2_JPEG_MARKER_DQT |
+ V4L2_JPEG_MARKER_DRI |
+ V4L2_JPEG_MARKER_COM |
+ V4L2_JPEG_MARKER_APP))
+ == 0) {
+ valid = 1;
+ } else {
+ valid = 0;
+ }
+ return valid;
+}
+
+
+void test_VIDIOC_G_JPEGCOMP() {
+ struct v4l2_jpegcompression jpegcomp;
+ int ret_get, errno_get;
+
+ memset(&jpegcomp, 0xff, sizeof(jpegcomp));
+ ret_get = ioctl(get_video_fd(), VIDIOC_G_JPEGCOMP, &jpegcomp);
+ errno_get = errno;
+
+ dprintf("\tVIDIOC_G_JPEGCOMP, ret_get=%i, errno_get=%i\n", ret_get, errno_get);
+
+ if (ret_get == 0) {
+ CU_ASSERT_EQUAL(ret_get, 0);
+
+ //CU_ASSERT_EQUAL(jpegcomp.quality, ???);
+ //CU_ASSERT_EQUAL(jpegcomp.APPn, ???);
+ CU_ASSERT(0 <= jpegcomp.APP_len);
+ CU_ASSERT(jpegcomp.APP_len <= (int)sizeof(jpegcomp.APP_data));
+ //CU_ASSERT_EQUAL(jpegcomp.APP_data, ???);
+ CU_ASSERT(0 <= jpegcomp.COM_len);
+ CU_ASSERT(jpegcomp.COM_len <= (int)sizeof(jpegcomp.COM_data));
+ //CU_ASSERT_EQUAL(jpegcomp.COM_data, ???);
+ CU_ASSERT(valid_jpeg_markers(jpegcomp.jpeg_markers));
+
+ dprintf("\tjpegcomp = { .quality=%i, "
+ ".APPn=%i, "
+ ".APP_len=%i, "
+ ".APP_data=..., "
+ ".COM_len=%i, "
+ ".COM_data=..., "
+ ".jpeg_markers=0x%x ",
+ jpegcomp.quality,
+ jpegcomp.APPn,
+ jpegcomp.APP_len,
+ //jpegcomp.APP_data,
+ jpegcomp.COM_len,
+ //jpegcomp.COM_data,
+ jpegcomp.jpeg_markers
+ );
+
+ } else {
+ CU_ASSERT_EQUAL(ret_get, -1);
+ CU_ASSERT_EQUAL(errno_get, EINVAL);
+ }
+
+}
+
+void test_VIDIOC_G_JPEGCOMP_NULL() {
+ struct v4l2_jpegcompression jpegcomp;
+ int ret_get, errno_get;
+ int ret_null, errno_null;
+
+ memset(&jpegcomp, 0, sizeof(jpegcomp));
+ ret_get = ioctl(get_video_fd(), VIDIOC_G_JPEGCOMP, &jpegcomp);
+ errno_get = errno;
+
+ dprintf("\tVIDIOC_G_JPEGCOMP, ret_get=%i, errno_get=%i\n", ret_get, errno_get);
+
+ ret_null = ioctl(get_video_fd(), VIDIOC_G_JPEGCOMP, NULL);
+ errno_null = errno;
+
+ dprintf("\tVIDIOC_G_JPEGCOMP, ret_null=%i, errno_null=%i\n", ret_null, errno_null);
+
+ if (ret_get == 0) {
+ CU_ASSERT_EQUAL(ret_get, 0);
+ CU_ASSERT_EQUAL(ret_null, -1);
+ CU_ASSERT_EQUAL(errno_null, EFAULT);
+ } else {
+ CU_ASSERT_EQUAL(ret_get, -1);
+ CU_ASSERT_EQUAL(errno_get, EINVAL);
+ CU_ASSERT_EQUAL(ret_null, -1);
+ CU_ASSERT_EQUAL(errno_null, EINVAL);
+ }
+
+}
diff -uprN ltp.orig/testcases/kernel/device-drivers/v4l/user_space/test_VIDIOC_JPEGCOMP.h ltp/testcases/kernel/device-drivers/v4l/user_space/test_VIDIOC_JPEGCOMP.h
--- ltp.orig/testcases/kernel/device-drivers/v4l/user_space/test_VIDIOC_JPEGCOMP.h 1970-01-01 01:00:00.000000000 +0100
+++ ltp/testcases/kernel/device-drivers/v4l/user_space/test_VIDIOC_JPEGCOMP.h 2009-07-16 11:10:27.000000000 +0200
@@ -0,0 +1,11 @@
+/*
+ * v4l-test: Test environment for Video For Linux Two API
+ *
+ * 16 Jul 2009 0.1 First release
+ *
+ * Written by Márton Németh <nm127@freemail.hu>
+ * Released under GPL
+ */
+
+void test_VIDIOC_G_JPEGCOMP(void);
+void test_VIDIOC_G_JPEGCOMP_NULL(void);
diff -uprN ltp.orig/testcases/kernel/device-drivers/v4l/user_space/v4l2_show.c ltp/testcases/kernel/device-drivers/v4l/user_space/v4l2_show.c
--- ltp.orig/testcases/kernel/device-drivers/v4l/user_space/v4l2_show.c 2009-07-08 19:35:12.000000000 +0200
+++ ltp/testcases/kernel/device-drivers/v4l/user_space/v4l2_show.c 2009-07-17 12:12:01.000000000 +0200
@@ -1,6 +1,7 @@
/*
* v4l-test: Test environment for Video For Linux Two API
*
+ * 17 Jul 2009 0.3 show_v4l2_frmsizeenum() added
* 5 Jul 2009 0.2 show_v4l2_input() introduced
* 7 May 2009 0.1 First release
*
@@ -135,3 +136,45 @@ void show_v4l2_input(struct v4l2_input *
input->reserved[3]
);
}
+
+void show_v4l2_frmsizeenum(struct v4l2_frmsizeenum* framesize) {
+ dprintf("\tframesize = { .index=%u, "
+ ".pixel_format=0x%x, "
+ ".type=%u, ",
+ framesize->index,
+ framesize->pixel_format,
+ framesize->type
+ );
+
+ switch (framesize->type) {
+ case V4L2_FRMSIZE_TYPE_DISCRETE:
+ dprintf(".discrete = { .width=%u, heigth=%u }, ",
+ framesize->discrete.width,
+ framesize->discrete.height);
+ break;
+ case V4L2_FRMSIZE_TYPE_CONTINUOUS:
+ case V4L2_FRMSIZE_TYPE_STEPWISE:
+ dprintf(".stepwise = { .min_width=%u, "
+ ".max_width=%u, "
+ ".step_width=%u, "
+ ".min_height=%u, "
+ ".max_height=%u, "
+ ".step_height=%u }, ",
+ framesize->stepwise.min_width,
+ framesize->stepwise.max_width,
+ framesize->stepwise.step_width,
+ framesize->stepwise.min_height,
+ framesize->stepwise.max_height,
+ framesize->stepwise.step_height
+ );
+ break;
+ default:
+ ;
+ }
+
+ dprintf(".reserved = { 0x%x, 0x%x } }\n",
+ framesize->reserved[0],
+ framesize->reserved[1]
+ );
+
+}
diff -uprN ltp.orig/testcases/kernel/device-drivers/v4l/user_space/v4l2_show.h ltp/testcases/kernel/device-drivers/v4l/user_space/v4l2_show.h
--- ltp.orig/testcases/kernel/device-drivers/v4l/user_space/v4l2_show.h 2009-07-08 19:35:12.000000000 +0200
+++ ltp/testcases/kernel/device-drivers/v4l/user_space/v4l2_show.h 2009-07-17 12:13:02.000000000 +0200
@@ -1,6 +1,7 @@
/*
* v4l-test: Test environment for Video For Linux Two API
*
+ * 17 Jul 2009 0.3 show_v4l2_frmsizeenum() added
* 5 Jul 2009 0.2 show_v4l2_input() introduced
* 7 May 2009 0.1 First release
*
@@ -13,3 +14,4 @@
void show_v4l2_requestbuffers(struct v4l2_requestbuffers *reqbuf);
void show_v4l2_buffer(struct v4l2_buffer *buf);
void show_v4l2_input(struct v4l2_input *input);
+void show_v4l2_frmsizeenum(struct v4l2_frmsizeenum* framesize);
diff -uprN ltp.orig/testcases/kernel/device-drivers/v4l/user_space/v4l2_test.c ltp/testcases/kernel/device-drivers/v4l/user_space/v4l2_test.c
--- ltp.orig/testcases/kernel/device-drivers/v4l/user_space/v4l2_test.c 2009-06-04 11:01:15.000000000 +0200
+++ ltp/testcases/kernel/device-drivers/v4l/user_space/v4l2_test.c 2009-07-20 23:11:09.000000000 +0200
@@ -1,6 +1,7 @@
/*
* v4l-test: Test environment for Video For Linux Two API
*
+ * 16 Jul 2009 0.24 Test cases added for VIDIOC_G_JPEGCOMP and VIDIOC_ENUM_FRAMESIZES
* 23 May 2009 0.23 Test cases added for VIDIOC_G_EXT_CTRLS, VIDIOC_S_EXT_CTRLS
* 5 May 2009 0.22 Test cases added for VIDIOC_QUERYBUF
* 29 Apr 2009 0.21 Test cases added for VIDIOC_REQBUFS
@@ -69,6 +70,7 @@
#include "test_VIDIOC_ENUM_FMT.h"
#include "test_VIDIOC_ENUMINPUT.h"
#include "test_VIDIOC_ENUMOUTPUT.h"
+#include "test_VIDIOC_ENUM_FRAMESIZES.h"
#include "test_VIDIOC_STD.h"
#include "test_VIDIOC_INPUT.h"
@@ -84,6 +86,7 @@
#include "test_VIDIOC_EXT_CTRLS.h"
#include "test_VIDIOC_PARM.h"
#include "test_VIDIOC_FMT.h"
+#include "test_VIDIOC_JPEGCOMP.h"
#include "test_VIDIOC_REQBUFS.h"
#include "test_VIDIOC_QUERYBUF.h"
@@ -150,6 +153,10 @@ static CU_TestInfo suite_enums[] = {
{ "VIDIOC_QUERYMENU with private controls", test_VIDIOC_QUERYMENU_private },
{ "VIDIOC_QUERYMENU, last private control+1", test_VIDIOC_QUERYMENU_private_last_1 },
+ { "VIDIOC_ENUM_FRAMESIZES", test_VIDIOC_ENUM_FRAMESIZES },
+ { "VIDIOC_ENUM_FRAMESIZES with invalid index", test_VIDIOC_ENUM_FRAMESIZES_invalid_index },
+ { "VIDIOC_ENUM_FRAMESIZES with invalid pixel_format", test_VIDIOC_ENUM_FRAMESIZES_invalid_pixel_format },
+
CU_TEST_INFO_NULL,
};
@@ -245,6 +252,8 @@ static CU_TestInfo suite_get_set_try[] =
{ "VIDIOC_S_FMT with enumerated values", test_VIDIOC_S_FMT_enum },
{ "VIDIOC_S_FMT with invalid type parameter", test_VIDIOC_S_FMT_type },
+ { "VIDIOC_G_JPEGCOMP", test_VIDIOC_G_JPEGCOMP },
+
CU_TEST_INFO_NULL,
};
@@ -286,7 +295,7 @@ static CU_TestInfo suite_null_readonly[]
{ "VIDIOC_G_INPUT with NULL parameter", test_VIDIOC_G_INPUT_NULL },
{ "VIDIOC_G_OUTPUT with NULL parameter", test_VIDIOC_G_OUTPUT_NULL },
{ "VIDIOC_G_AUDOUT with NULL parameter", test_VIDIOC_G_AUDOUT_NULL },
- /* { "VIDIOC_G_JPEGCOMP with NULL parameter", }, */
+ { "VIDIOC_G_JPEGCOMP with NULL parameter", test_VIDIOC_G_JPEGCOMP_NULL },
{ "VIDIOC_QUERYSTD with NULL parameter", test_VIDIOC_QUERYSTD_NULL },
{ "VIDIOC_G_PRIORITY with NULL parameter", test_VIDIOC_G_PRIORITY_NULL },
/* { "VIDIOC_G_ENC_INDEX with NULL parameter", }, */
@@ -345,7 +354,7 @@ static CU_TestInfo suite_null_writeread[
{ "VIDIOC_G_EXT_CTRLS with NULL parameter", test_VIDIOC_G_EXT_CTRLS_NULL },
{ "VIDIOC_S_EXT_CTRLS with NULL parameter", test_VIDIOC_S_EXT_CTRLS_NULL },
{ "VIDIOC_TRY_EXT_CTRLS with NULL parameter", test_VIDIOC_TRY_EXT_CTRLS_NULL },
- /* { "VIDIOC_ENUM_FRAMESIZES with NULL parameter", }, */
+ { "VIDIOC_ENUM_FRAMESIZES with NULL parameter", test_VIDIOC_ENUM_FRAMESIZES_NULL },
/* { "VIDIOC_ENUM_FRAMEINTERVALS with NULL parameter", }, */
/* { "VIDIOC_ENCODER_CMD with NULL parameter", }, */
/* { "VIDIOC_TRY_ENCODER_CMD with NULL parameter", }, */
[-- Attachment #3: Type: text/plain, Size: 79 bytes --]
------------------------------------------------------------------------------
[-- Attachment #4: Type: text/plain, Size: 155 bytes --]
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list
^ permalink raw reply [flat|nested] 2+ messages in thread* Re: [LTP] [PATCH] v4l-test 0.17 for LTP
2009-07-25 6:06 [LTP] [PATCH] v4l-test 0.17 for LTP Németh Márton
@ 2009-07-30 18:29 ` Subrata Modak
0 siblings, 0 replies; 2+ messages in thread
From: Subrata Modak @ 2009-07-30 18:29 UTC (permalink / raw)
To: Németh Márton; +Cc: ltp-list
On Sat, 2009-07-25 at 08:06 +0200, Németh Márton wrote:
> Hi,
>
> this is v4l-test 0.17 for LTP.
>
> Changes:
> Test cases added for VIDIOC_ENUM_FRAMESIZES and VIDIOC_G_JPEGCOMP.
> New V4L2_PIX_FMT_* formats also used in test cases.
>
> Signed-off-by: Márton Németh <nm127@freemail.hu>
Thanks.
Regards--
Subrata
>
> Regards,
>
> Márton Németh
------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now. http://p.sf.net/sfu/bobj-july
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2009-07-30 18:31 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-07-25 6:06 [LTP] [PATCH] v4l-test 0.17 for LTP Németh Márton
2009-07-30 18:29 ` Subrata Modak
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox