public inbox for ltp@lists.linux.it
 help / color / mirror / Atom feed
* [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&amp;m=124694769813949&amp;w=2">
+	[PATCH 1/2] v4l2: modify the webcam video standard handling
+	</a>
+	</li>
+
+	<li>
+	<a href="http://marc.info/?l=linux-kernel&amp;m=124694772913969&amp;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