17a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak/* 27a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak * v4l-test: Test environment for Video For Linux Two API 37a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak * 4c40b521b10941033d8b1c031bd02ab47240d5c93subrata_modak * 20 Apr 2009 0.9 Added string content validation 5c5d954a63f66d1ccf79ba9b92311fa7b57f0a895subrata_modak * 18 Apr 2009 0.8 More strict check for strings 6c5d954a63f66d1ccf79ba9b92311fa7b57f0a895subrata_modak * 13 Apr 2009 0.7 Also show type in debug output; 7c5d954a63f66d1ccf79ba9b92311fa7b57f0a895subrata_modak * Add some debug output 8c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak * 3 Apr 2009 0.6 Test case for NULL parameter reworked 9c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak * 28 Mar 2009 0.5 Clean up ret and errno variable names and dprintf() output 102578b06823e5669ed5d6a96c47e74563f577ed9fsubrata_modak * 18 Mar 2009 0.4 Duplicated test for V4L2_BUF_TYPE_VIDEO_CAPTURE removed 1110658ed800fa92bbfba86ed05d29ff26cb106844subrata_modak * 1 Jan 2009 0.3 Test cases added for index=S32_MAX and S32_MAX+1; 1210658ed800fa92bbfba86ed05d29ff26cb106844subrata_modak * Test functions renamed 137a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak * 22 Dec 2008 0.2 Test case with NULL parameter added 147a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak * 18 Dec 2008 0.1 First release 157a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak * 167a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak * Written by M�rton N�meth <nm127@freemail.hu> 177a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak * Released under GPL 187a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak */ 197a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak 207a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak#include <stdio.h> 217a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak#include <sys/types.h> 227a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak#include <sys/stat.h> 237a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak#include <fcntl.h> 247a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak#include <unistd.h> 257a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak#include <sys/ioctl.h> 267a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak#include <errno.h> 277a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak#include <string.h> 287a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak 297a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak#include <linux/videodev2.h> 307a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak#include <linux/errno.h> 317a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak 327a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak#include <CUnit/CUnit.h> 337a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak#include <CUnit/Basic.h> 347a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak 357a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak#include "v4l2_test.h" 367a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak#include "dev_video.h" 377a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak#include "video_limits.h" 38c40b521b10941033d8b1c031bd02ab47240d5c93subrata_modak#include "v4l2_validator.h" 397a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak 407a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak#include "test_VIDIOC_ENUM_FMT.h" 417a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak 42354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gaostatic void do_enumerate_formats(enum v4l2_buf_type type) 43354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao{ 44c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak int ret_enum, errno_enum; 457a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak struct v4l2_fmtdesc format; 467a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak struct v4l2_fmtdesc format2; 477a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak __u32 i; 487a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak 497a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak i = 0; 507a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak do { 517a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak memset(&format, 0xff, sizeof(format)); 527a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak format.index = i; 537a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak format.type = type; 547a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak 55c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak ret_enum = ioctl(get_video_fd(), VIDIOC_ENUM_FMT, &format); 56c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak errno_enum = errno; 57c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak 58354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao dprintf 59354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao ("\t%s:%u: VIDIOC_ENUM_FMT, index=%u, type=%i, ret_enum=%i, errno_enum=%i\n", 60354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao __FILE__, __LINE__, i, type, ret_enum, errno_enum); 61c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak if (ret_enum == 0) { 62c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak CU_ASSERT_EQUAL(ret_enum, 0); 637a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak CU_ASSERT_EQUAL(format.index, i); 647a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak //CU_ASSERT_EQUAL(format.type, ?); 657a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak //CU_ASSERT_EQUAL(format.flags, ?); 667a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak 67354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao CU_ASSERT(0 < strlen((char *)format.description)); 68354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao CU_ASSERT(valid_string 69354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao ((char *)format.description, 70354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao sizeof(format.description))); 717a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak 727a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak //CU_ASSERT_EQUAL(format.pixelformat, ?); 737a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak CU_ASSERT_EQUAL(format.reserved[0], 0); 747a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak CU_ASSERT_EQUAL(format.reserved[1], 0); 757a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak CU_ASSERT_EQUAL(format.reserved[2], 0); 767a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak CU_ASSERT_EQUAL(format.reserved[3], 0); 777a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak 78c5d954a63f66d1ccf79ba9b92311fa7b57f0a895subrata_modak /* Check if the unused bytes of the description string is also filled 79c5d954a63f66d1ccf79ba9b92311fa7b57f0a895subrata_modak * with zeros. Also check if there is any padding byte between 80c5d954a63f66d1ccf79ba9b92311fa7b57f0a895subrata_modak * any two fields then this padding byte is also filled with zeros. 81c5d954a63f66d1ccf79ba9b92311fa7b57f0a895subrata_modak */ 82c5d954a63f66d1ccf79ba9b92311fa7b57f0a895subrata_modak memset(&format2, 0, sizeof(format2)); 83c5d954a63f66d1ccf79ba9b92311fa7b57f0a895subrata_modak format2.index = format.index; 84c5d954a63f66d1ccf79ba9b92311fa7b57f0a895subrata_modak format2.type = format.type; 85c5d954a63f66d1ccf79ba9b92311fa7b57f0a895subrata_modak format2.flags = format.flags; 86354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao strncpy((char *)format2.description, 87354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao (char *)format.description, 88354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao sizeof(format2.description)); 89c5d954a63f66d1ccf79ba9b92311fa7b57f0a895subrata_modak format2.pixelformat = format.pixelformat; 90354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao CU_ASSERT_EQUAL(memcmp 91354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao (&format, &format2, sizeof(format)), 0); 92354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao 93354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao dprintf 94354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao ("\tformat = {.index=%u, .type=0x%X, .flags=0x%X, " 95354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao ".description=\"%s\", .pixelformat=0x%X, " 96354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao ".reserved[]={ 0x%X, 0x%X, 0x%X, 0x%X } }\n", 97354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao format.index, format.type, format.flags, 98354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao format.description, format.pixelformat, 99354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao format.reserved[0], format.reserved[1], 100354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao format.reserved[2], format.reserved[3] 101354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao ); 1027a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak 1037a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak } else { 104c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak CU_ASSERT_EQUAL(ret_enum, -1); 105c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak CU_ASSERT_EQUAL(errno_enum, EINVAL); 1067a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak 1077a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak memset(&format2, 0xff, sizeof(format2)); 1087a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak format2.index = i; 1097a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak format2.type = type; 110354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao CU_ASSERT_EQUAL(memcmp 111354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao (&format, &format2, sizeof(format)), 0); 1127a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak 1137a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak } 1147a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak i++; 115c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak } while (ret_enum == 0); 1167a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak 1177a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak} 1187a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak 119354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gaovoid test_VIDIOC_ENUM_FMT() 120354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao{ 1217a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak do_enumerate_formats(V4L2_BUF_TYPE_VIDEO_CAPTURE); 1227a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak do_enumerate_formats(V4L2_BUF_TYPE_VIDEO_OUTPUT); 1237a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak do_enumerate_formats(V4L2_BUF_TYPE_VIDEO_OVERLAY); 1247a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak do_enumerate_formats(V4L2_BUF_TYPE_VBI_CAPTURE); 1257a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak do_enumerate_formats(V4L2_BUF_TYPE_VBI_OUTPUT); 1267a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak do_enumerate_formats(V4L2_BUF_TYPE_SLICED_VBI_CAPTURE); 1277a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak do_enumerate_formats(V4L2_BUF_TYPE_SLICED_VBI_OUTPUT); 1287a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak do_enumerate_formats(V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY); 1297a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak do_enumerate_formats(V4L2_BUF_TYPE_PRIVATE); 1307a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak} 1317a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak 132354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gaovoid test_VIDIOC_ENUM_FMT_S32_MAX() 133354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao{ 134c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak int ret_enum, errno_enum; 13510658ed800fa92bbfba86ed05d29ff26cb106844subrata_modak struct v4l2_fmtdesc format; 13610658ed800fa92bbfba86ed05d29ff26cb106844subrata_modak struct v4l2_fmtdesc format2; 13710658ed800fa92bbfba86ed05d29ff26cb106844subrata_modak 13810658ed800fa92bbfba86ed05d29ff26cb106844subrata_modak /* test invalid index */ 13910658ed800fa92bbfba86ed05d29ff26cb106844subrata_modak memset(&format, 0xff, sizeof(format)); 140354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao format.index = (__u32) S32_MAX; 14110658ed800fa92bbfba86ed05d29ff26cb106844subrata_modak format.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; 142c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak ret_enum = ioctl(get_video_fd(), VIDIOC_ENUM_FMT, &format); 143c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak errno_enum = errno; 14410658ed800fa92bbfba86ed05d29ff26cb106844subrata_modak 145354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao dprintf 146354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao ("\t%s:%u: VIDIOC_ENUM_FMT, index=%u, type=%i, ret_enum=%i, errno_enum=%i\n", 147354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao __FILE__, __LINE__, format.index, format.type, ret_enum, 148354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao errno_enum); 149c5d954a63f66d1ccf79ba9b92311fa7b57f0a895subrata_modak 150c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak CU_ASSERT_EQUAL(ret_enum, -1); 151c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak CU_ASSERT_EQUAL(errno_enum, EINVAL); 15210658ed800fa92bbfba86ed05d29ff26cb106844subrata_modak 15310658ed800fa92bbfba86ed05d29ff26cb106844subrata_modak /* Check whether the original format struct is untouched */ 15410658ed800fa92bbfba86ed05d29ff26cb106844subrata_modak memset(&format2, 0xff, sizeof(format2)); 155354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao format2.index = (__u32) S32_MAX; 15610658ed800fa92bbfba86ed05d29ff26cb106844subrata_modak format2.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; 15710658ed800fa92bbfba86ed05d29ff26cb106844subrata_modak CU_ASSERT_EQUAL(memcmp(&format, &format2, sizeof(format)), 0); 15810658ed800fa92bbfba86ed05d29ff26cb106844subrata_modak} 15910658ed800fa92bbfba86ed05d29ff26cb106844subrata_modak 160354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gaovoid test_VIDIOC_ENUM_FMT_S32_MAX_1() 161354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao{ 162c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak int ret_enum, errno_enum; 16310658ed800fa92bbfba86ed05d29ff26cb106844subrata_modak struct v4l2_fmtdesc format; 16410658ed800fa92bbfba86ed05d29ff26cb106844subrata_modak struct v4l2_fmtdesc format2; 16510658ed800fa92bbfba86ed05d29ff26cb106844subrata_modak 16610658ed800fa92bbfba86ed05d29ff26cb106844subrata_modak /* test invalid index */ 16710658ed800fa92bbfba86ed05d29ff26cb106844subrata_modak memset(&format, 0xff, sizeof(format)); 168354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao format.index = ((__u32) S32_MAX) + 1; 16910658ed800fa92bbfba86ed05d29ff26cb106844subrata_modak format.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; 170c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak ret_enum = ioctl(get_video_fd(), VIDIOC_ENUM_FMT, &format); 171c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak errno_enum = errno; 17210658ed800fa92bbfba86ed05d29ff26cb106844subrata_modak 173354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao dprintf 174354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao ("\t%s:%u: VIDIOC_ENUM_FMT, index=%u, type=%i, ret_enum=%i, errno_enum=%i\n", 175354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao __FILE__, __LINE__, format.index, format.type, ret_enum, 176354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao errno_enum); 177c5d954a63f66d1ccf79ba9b92311fa7b57f0a895subrata_modak 178c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak CU_ASSERT_EQUAL(ret_enum, -1); 179c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak CU_ASSERT_EQUAL(errno_enum, EINVAL); 18010658ed800fa92bbfba86ed05d29ff26cb106844subrata_modak 18110658ed800fa92bbfba86ed05d29ff26cb106844subrata_modak /* Check whether the original format struct is untouched */ 18210658ed800fa92bbfba86ed05d29ff26cb106844subrata_modak memset(&format2, 0xff, sizeof(format2)); 183354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao format2.index = ((__u32) S32_MAX) + 1; 18410658ed800fa92bbfba86ed05d29ff26cb106844subrata_modak format2.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; 18510658ed800fa92bbfba86ed05d29ff26cb106844subrata_modak CU_ASSERT_EQUAL(memcmp(&format, &format2, sizeof(format)), 0); 18610658ed800fa92bbfba86ed05d29ff26cb106844subrata_modak} 18710658ed800fa92bbfba86ed05d29ff26cb106844subrata_modak 188354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gaovoid test_VIDIOC_ENUM_FMT_U32_MAX() 189354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao{ 190c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak int ret_enum, errno_enum; 1917a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak struct v4l2_fmtdesc format; 1927a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak struct v4l2_fmtdesc format2; 1937a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak 1947a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak /* test invalid index */ 1957a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak memset(&format, 0xff, sizeof(format)); 1967a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak format.index = U32_MAX; 1977a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak format.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; 198c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak ret_enum = ioctl(get_video_fd(), VIDIOC_ENUM_FMT, &format); 199c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak errno_enum = errno; 2007a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak 201354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao dprintf 202354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao ("\t%s:%u: VIDIOC_ENUM_FMT, index=%u, type=%i, ret_enum=%i, errno_enum=%i\n", 203354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao __FILE__, __LINE__, format.index, format.type, ret_enum, 204354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao errno_enum); 205c5d954a63f66d1ccf79ba9b92311fa7b57f0a895subrata_modak 206c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak CU_ASSERT_EQUAL(ret_enum, -1); 207c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak CU_ASSERT_EQUAL(errno_enum, EINVAL); 2087a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak 20910658ed800fa92bbfba86ed05d29ff26cb106844subrata_modak /* Check whether the original format struct is untouched */ 2107a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak memset(&format2, 0xff, sizeof(format2)); 2117a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak format2.index = U32_MAX; 2127a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak format2.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; 2137a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak CU_ASSERT_EQUAL(memcmp(&format, &format2, sizeof(format)), 0); 2147a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak} 2157a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak 216354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gaovoid test_VIDIOC_ENUM_FMT_invalid_type() 217354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao{ 218c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak int ret_enum, errno_enum; 2197a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak struct v4l2_fmtdesc format; 2207a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak struct v4l2_fmtdesc format2; 2217a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak int i; 2227a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak 2232c28215423293e443469a07ae7011135d058b671Garrett Cooper /* In this test case the .index is valid (0) and only the .type 22410658ed800fa92bbfba86ed05d29ff26cb106844subrata_modak * is invalid. The .type filed is an enum which is stored in an 'int'. 22510658ed800fa92bbfba86ed05d29ff26cb106844subrata_modak */ 22610658ed800fa92bbfba86ed05d29ff26cb106844subrata_modak 2277a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak /* test invalid .type=0 */ 2287a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak memset(&format, 0xff, sizeof(format)); 2297a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak format.index = 0; 2307a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak format.type = 0; 231c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak ret_enum = ioctl(get_video_fd(), VIDIOC_ENUM_FMT, &format); 232c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak errno_enum = errno; 2337a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak 234354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao dprintf 235354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao ("\t%s:%u: VIDIOC_ENUM_FMT, index=%u, type=%i, ret_enum=%i, errno_enum=%i\n", 236354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao __FILE__, __LINE__, format.index, format.type, ret_enum, 237354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao errno_enum); 238c5d954a63f66d1ccf79ba9b92311fa7b57f0a895subrata_modak 239c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak CU_ASSERT_EQUAL(ret_enum, -1); 240c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak CU_ASSERT_EQUAL(errno_enum, EINVAL); 2417a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak 24210658ed800fa92bbfba86ed05d29ff26cb106844subrata_modak /* Check whether the original format struct is untouched */ 2437a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak memset(&format2, 0xff, sizeof(format2)); 2447a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak format2.index = 0; 2457a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak format2.type = 0; 2467a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak CU_ASSERT_EQUAL(memcmp(&format, &format2, sizeof(format)), 0); 2477a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak 24810658ed800fa92bbfba86ed05d29ff26cb106844subrata_modak /* test invalid .type=SINT_MIN */ 2497a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak memset(&format, 0xff, sizeof(format)); 2507a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak format.index = 0; 25110658ed800fa92bbfba86ed05d29ff26cb106844subrata_modak format.type = SINT_MIN; 252c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak ret_enum = ioctl(get_video_fd(), VIDIOC_ENUM_FMT, &format); 253c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak errno_enum = errno; 2547a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak 255354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao dprintf 256354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao ("\t%s:%u: VIDIOC_ENUM_FMT, index=%u, type=%i, ret_enum=%i, errno_enum=%i\n", 257354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao __FILE__, __LINE__, format.index, format.type, ret_enum, 258354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao errno_enum); 259c5d954a63f66d1ccf79ba9b92311fa7b57f0a895subrata_modak 260c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak CU_ASSERT_EQUAL(ret_enum, -1); 261c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak CU_ASSERT_EQUAL(errno_enum, EINVAL); 2627a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak 26310658ed800fa92bbfba86ed05d29ff26cb106844subrata_modak /* Check whether the original format struct is untouched */ 2647a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak memset(&format2, 0xff, sizeof(format2)); 2657a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak format2.index = 0; 26610658ed800fa92bbfba86ed05d29ff26cb106844subrata_modak format2.type = SINT_MIN; 2677a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak CU_ASSERT_EQUAL(memcmp(&format, &format2, sizeof(format)), 0); 2687a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak 2697a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak /* test invalid .type=-1 */ 2707a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak memset(&format, 0xff, sizeof(format)); 2717a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak format.index = 0; 2727a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak format.type = -1; 273c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak ret_enum = ioctl(get_video_fd(), VIDIOC_ENUM_FMT, &format); 274c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak errno_enum = errno; 2757a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak 276354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao dprintf 277354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao ("\t%s:%u: VIDIOC_ENUM_FMT, index=%u, type=%i, ret_enum=%i, errno_enum=%i\n", 278354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao __FILE__, __LINE__, format.index, format.type, ret_enum, 279354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao errno_enum); 280c5d954a63f66d1ccf79ba9b92311fa7b57f0a895subrata_modak 281c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak CU_ASSERT_EQUAL(ret_enum, -1); 282c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak CU_ASSERT_EQUAL(errno_enum, EINVAL); 2837a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak 28410658ed800fa92bbfba86ed05d29ff26cb106844subrata_modak /* Check whether the original format struct is untouched */ 2857a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak memset(&format2, 0xff, sizeof(format2)); 2867a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak format2.index = 0; 2877a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak format2.type = -1; 2887a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak CU_ASSERT_EQUAL(memcmp(&format, &format2, sizeof(format)), 0); 2897a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak 2907a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak /* test invalid .type= 8..0x7F */ 291354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao for (i = V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY + 1; 292354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao i < V4L2_BUF_TYPE_PRIVATE; i++) { 2937a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak memset(&format, 0xff, sizeof(format)); 2947a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak format.index = 0; 2957a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak format.type = i; 296c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak ret_enum = ioctl(get_video_fd(), VIDIOC_ENUM_FMT, &format); 297c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak errno_enum = errno; 2987a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak 299354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao dprintf 300354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao ("\t%s:%u: VIDIOC_ENUM_FMT, index=%u, type=%i, ret_enum=%i, errno_enum=%i\n", 301354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao __FILE__, __LINE__, format.index, format.type, ret_enum, 302354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao errno_enum); 303c5d954a63f66d1ccf79ba9b92311fa7b57f0a895subrata_modak 304c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak CU_ASSERT_EQUAL(ret_enum, -1); 305c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak CU_ASSERT_EQUAL(errno_enum, EINVAL); 3067a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak 30710658ed800fa92bbfba86ed05d29ff26cb106844subrata_modak /* Check whether the original format struct is untouched */ 3087a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak memset(&format2, 0xff, sizeof(format2)); 3097a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak format2.index = 0; 3107a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak format2.type = i; 3117a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak CU_ASSERT_EQUAL(memcmp(&format, &format2, sizeof(format)), 0); 3127a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak } 3137a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak 3147a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak /* .type = 0x80..0x7FFF FFFF is the private range */ 31510658ed800fa92bbfba86ed05d29ff26cb106844subrata_modak 31610658ed800fa92bbfba86ed05d29ff26cb106844subrata_modak /* Assume that 0x7FFF FFFF is invalid in the private range. 31710658ed800fa92bbfba86ed05d29ff26cb106844subrata_modak * This might be a wrong assumption, but let's have a test case like 31810658ed800fa92bbfba86ed05d29ff26cb106844subrata_modak * this for now. 31910658ed800fa92bbfba86ed05d29ff26cb106844subrata_modak */ 32010658ed800fa92bbfba86ed05d29ff26cb106844subrata_modak memset(&format, 0xff, sizeof(format)); 32110658ed800fa92bbfba86ed05d29ff26cb106844subrata_modak format.index = 0; 32210658ed800fa92bbfba86ed05d29ff26cb106844subrata_modak format.type = SINT_MAX; 323c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak ret_enum = ioctl(get_video_fd(), VIDIOC_ENUM_FMT, &format); 324c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak errno_enum = errno; 32510658ed800fa92bbfba86ed05d29ff26cb106844subrata_modak 326354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao dprintf 327354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao ("\t%s:%u: VIDIOC_ENUM_FMT, index=%u, type=%i, ret_enum=%i, errno_enum=%i\n", 328354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao __FILE__, __LINE__, format.index, format.type, ret_enum, 329354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao errno_enum); 330c5d954a63f66d1ccf79ba9b92311fa7b57f0a895subrata_modak 331c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak CU_ASSERT_EQUAL(ret_enum, -1); 332c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak CU_ASSERT_EQUAL(errno_enum, EINVAL); 33310658ed800fa92bbfba86ed05d29ff26cb106844subrata_modak 33410658ed800fa92bbfba86ed05d29ff26cb106844subrata_modak /* Check whether the original format struct is untouched */ 33510658ed800fa92bbfba86ed05d29ff26cb106844subrata_modak memset(&format2, 0xff, sizeof(format2)); 33610658ed800fa92bbfba86ed05d29ff26cb106844subrata_modak format2.index = 0; 33710658ed800fa92bbfba86ed05d29ff26cb106844subrata_modak format2.type = SINT_MAX; 33810658ed800fa92bbfba86ed05d29ff26cb106844subrata_modak CU_ASSERT_EQUAL(memcmp(&format, &format2, sizeof(format)), 0); 3397a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak} 3407a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak 341354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gaovoid test_VIDIOC_ENUM_FMT_NULL() 342354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao{ 343c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak int ret_capture, errno_capture; 344c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak int ret_output, errno_output; 345c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak int ret_video_overlay, errno_video_overlay; 346c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak int ret_vbi_capture, errno_vbi_capture; 347c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak int ret_vbi_output, errno_vbi_output; 348c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak int ret_sliced_vbi_capture, errno_sliced_vbi_capture; 349c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak int ret_sliced_vbi_output, errno_sliced_vbi_output; 350c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak int ret_video_output_overlay, errno_video_output_overlay; 351c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak int ret_private, errno_private; 352c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak int ret_null, errno_null; 353c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak struct v4l2_fmtdesc format; 354c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak 355c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak memset(&format, 0xff, sizeof(format)); 356c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak format.index = 0; 357c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak format.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; 358c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak ret_capture = ioctl(get_video_fd(), VIDIOC_ENUM_FMT, &format); 359c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak errno_capture = errno; 360c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak 361c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak dprintf("\t%s:%u: VIDIOC_ENUM_FMT, ret_capture=%i, errno_capture=%i\n", 362c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak __FILE__, __LINE__, ret_capture, errno_capture); 363c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak 364c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak memset(&format, 0xff, sizeof(format)); 365c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak format.index = 0; 366c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak format.type = V4L2_BUF_TYPE_VIDEO_OUTPUT; 367c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak ret_output = ioctl(get_video_fd(), VIDIOC_ENUM_FMT, &format); 368c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak errno_output = errno; 369c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak 370c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak dprintf("\t%s:%u: VIDIOC_ENUM_FMT, ret_output=%i, errno_output=%i\n", 371c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak __FILE__, __LINE__, ret_output, errno_output); 372c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak 373c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak memset(&format, 0xff, sizeof(format)); 374c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak format.index = 0; 375c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak format.type = V4L2_BUF_TYPE_VIDEO_OVERLAY; 376c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak ret_video_overlay = ioctl(get_video_fd(), VIDIOC_ENUM_FMT, &format); 377c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak errno_video_overlay = errno; 378c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak 379354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao dprintf 380354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao ("\t%s:%u: VIDIOC_ENUM_FMT, ret_video_overlay=%i, errno_video_overlay=%i\n", 381354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao __FILE__, __LINE__, ret_video_overlay, errno_video_overlay); 382c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak 383c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak memset(&format, 0xff, sizeof(format)); 384c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak format.index = 0; 385c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak format.type = V4L2_BUF_TYPE_VBI_CAPTURE; 386c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak ret_vbi_capture = ioctl(get_video_fd(), VIDIOC_ENUM_FMT, &format); 387c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak errno_vbi_capture = errno; 388c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak 389354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao dprintf 390354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao ("\t%s:%u: VIDIOC_ENUM_FMT, ret_vbi_capture=%i, errno_vbi_capture=%i\n", 391354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao __FILE__, __LINE__, ret_vbi_capture, errno_vbi_capture); 3927a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak 393c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak memset(&format, 0xff, sizeof(format)); 394c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak format.index = 0; 395c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak format.type = V4L2_BUF_TYPE_VBI_OUTPUT; 396c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak ret_vbi_output = ioctl(get_video_fd(), VIDIOC_ENUM_FMT, &format); 397c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak errno_vbi_output = errno; 398c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak 399354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao dprintf 400354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao ("\t%s:%u: VIDIOC_ENUM_FMT, ret_vbi_output=%i, errno_vbi_output=%i\n", 401354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao __FILE__, __LINE__, ret_vbi_output, errno_vbi_output); 402c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak 403c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak memset(&format, 0xff, sizeof(format)); 404c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak format.index = 0; 405c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak format.type = V4L2_BUF_TYPE_SLICED_VBI_CAPTURE; 406354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao ret_sliced_vbi_capture = 407354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao ioctl(get_video_fd(), VIDIOC_ENUM_FMT, &format); 408c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak errno_sliced_vbi_capture = errno; 409c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak 410354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao dprintf 411354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao ("\t%s:%u: VIDIOC_ENUM_FMT, ret_sliced_vbi_capture=%i, errno_sliced_vbi_capture=%i\n", 412354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao __FILE__, __LINE__, ret_sliced_vbi_capture, 413354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao errno_sliced_vbi_capture); 414c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak 415c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak memset(&format, 0xff, sizeof(format)); 416c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak format.index = 0; 417c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak format.type = V4L2_BUF_TYPE_SLICED_VBI_OUTPUT; 418c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak ret_sliced_vbi_output = ioctl(get_video_fd(), VIDIOC_ENUM_FMT, &format); 419c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak errno_sliced_vbi_output = errno; 420c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak 421354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao dprintf 422354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao ("\t%s:%u: VIDIOC_ENUM_FMT, ret_sliced_vbi_output=%i, errno_sliced_vbi_output=%i\n", 423354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao __FILE__, __LINE__, ret_sliced_vbi_output, 424354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao errno_sliced_vbi_output); 425c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak 426c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak memset(&format, 0xff, sizeof(format)); 427c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak format.index = 0; 428c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak format.type = V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY; 429354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao ret_video_output_overlay = 430354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao ioctl(get_video_fd(), VIDIOC_ENUM_FMT, &format); 431c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak errno_video_output_overlay = errno; 432c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak 433354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao dprintf 434354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao ("\t%s:%u: VIDIOC_ENUM_FMT, ret_video_output_overlay=%i, errno_video_output_overlay=%i\n", 435354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao __FILE__, __LINE__, ret_video_output_overlay, 436354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao errno_video_output_overlay); 437c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak 438c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak memset(&format, 0xff, sizeof(format)); 439c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak format.index = 0; 440c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak format.type = V4L2_BUF_TYPE_PRIVATE; 441c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak ret_private = ioctl(get_video_fd(), VIDIOC_ENUM_FMT, &format); 442c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak errno_private = errno; 443c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak 444c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak dprintf("\t%s:%u: VIDIOC_ENUM_FMT, ret_private=%i, errno_private=%i\n", 445c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak __FILE__, __LINE__, ret_private, errno_private); 446c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak 447c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak ret_null = ioctl(get_video_fd(), VIDIOC_ENUM_FMT, NULL); 448c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak errno_null = errno; 449c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak 450c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak dprintf("\t%s:%u: VIDIOC_ENUM_FMT, ret_null=%i, errno_null=%i\n", 451c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak __FILE__, __LINE__, ret_null, errno_null); 452c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak 453c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak if (ret_capture == 0 || ret_output == 0 || 454c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak ret_video_overlay == 0 || ret_vbi_capture == 0 || 455c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak ret_vbi_output == 0 || ret_sliced_vbi_capture == 0 || 456c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak ret_sliced_vbi_output == 0 || ret_video_output_overlay == 0 || 457c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak ret_private == 0) { 458c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak CU_ASSERT_EQUAL(ret_null, -1); 459c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak CU_ASSERT_EQUAL(errno_null, EFAULT); 460c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak } else { 461c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak CU_ASSERT_EQUAL(ret_capture, -1); 462c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak CU_ASSERT_EQUAL(errno_null, EINVAL); 463c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak CU_ASSERT_EQUAL(ret_output, -1); 464c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak CU_ASSERT_EQUAL(errno_output, EINVAL); 465c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak CU_ASSERT_EQUAL(ret_video_overlay, -1); 466c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak CU_ASSERT_EQUAL(errno_video_overlay, EINVAL); 467c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak CU_ASSERT_EQUAL(ret_vbi_capture, -1); 468c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak CU_ASSERT_EQUAL(errno_vbi_capture, EINVAL); 469c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak CU_ASSERT_EQUAL(ret_vbi_output, -1); 470c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak CU_ASSERT_EQUAL(errno_vbi_output, EINVAL); 471c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak CU_ASSERT_EQUAL(ret_sliced_vbi_capture, -1); 472c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak CU_ASSERT_EQUAL(errno_sliced_vbi_capture, EINVAL); 473c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak CU_ASSERT_EQUAL(ret_sliced_vbi_output, -1); 474c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak CU_ASSERT_EQUAL(errno_sliced_vbi_output, EINVAL); 475c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak CU_ASSERT_EQUAL(ret_video_output_overlay, -1); 476c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak CU_ASSERT_EQUAL(errno_video_output_overlay, EINVAL); 477c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak CU_ASSERT_EQUAL(ret_private, -1); 478c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak CU_ASSERT_EQUAL(errno_private, EINVAL); 479c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak CU_ASSERT_EQUAL(ret_null, -1); 480c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak CU_ASSERT_EQUAL(errno_null, EINVAL); 481c6701fc589fbfd84c6219c5669f3b1a2716f50f3subrata_modak } 4827a86bf3a7fbddf42ef6166f3bddd2278b1522b5asubrata_modak 483ec6edca7aa42b6affd989ef91b5897f96795e40fChris Dearman} 484