/
0137-ENGR00119031-V4L2-Update-tvin-unit-test-codes.patch
102 lines (94 loc) · 3.35 KB
/
0137-ENGR00119031-V4L2-Update-tvin-unit-test-codes.patch
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
From 623e90572f19a1f0891b3a43cb8fb034d91cf0cb Mon Sep 17 00:00:00 2001
From: Wallace Wang <r59996@freescale.com>
Date: Sat, 5 Dec 2009 22:15:19 +0800
Subject: [PATCH 137/449] ENGR00119031 V4L2: Update tvin unit test codes
Kernel driver changes (ENGR00117261) cause
VIDIOC_S_PARM must be called before VIDIOC_S_CROP.
And if TVIN mode changed, VIDIOC_S_CROP must be set
again except for VIDIOC_S_PARM
Signed-off-by: Wallace Wang <r59996@freescale.com>
---
test/mxc_v4l2_test/mxc_v4l2_tvin.c | 52 +++++++++++++++++++++++---------------
1 file changed, 31 insertions(+), 21 deletions(-)
diff --git a/test/mxc_v4l2_test/mxc_v4l2_tvin.c b/test/mxc_v4l2_test/mxc_v4l2_tvin.c
index f2cc005..8ebac5e 100644
--- a/test/mxc_v4l2_test/mxc_v4l2_tvin.c
+++ b/test/mxc_v4l2_test/mxc_v4l2_tvin.c
@@ -72,6 +72,7 @@ mxc_v4l_tvin_test(void)
int overlay = 1;
v4l2_std_id id;
struct v4l2_streamparm parm;
+ struct v4l2_crop crop;
parm.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
parm.parm.capture.timeperframe.numerator = 1;
@@ -103,6 +104,16 @@ mxc_v4l_tvin_test(void)
g_cap_mode = (g_cap_mode + 1) % 2;
parm.parm.capture.capturemode = g_cap_mode;
ioctl(fd_v4l, VIDIOC_S_PARM, &parm);
+ crop.type = V4L2_BUF_TYPE_VIDEO_OVERLAY;
+ crop.c.left = 0;
+ crop.c.top = 0;
+ crop.c.width = PAL_WIDTH;
+ crop.c.height = PAL_HEIGHT;
+ if (ioctl(fd_v4l, VIDIOC_S_CROP, &crop) < 0)
+ {
+ printf("set cropping failed\n");
+ return TFAIL;
+ }
g_current_std = id;
sleep(1);
continue;
@@ -135,6 +146,26 @@ mxc_v4l_tvin_setup(struct v4l2_format *fmt)
return TFAIL;
}
+ parm.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
+ parm.parm.capture.timeperframe.numerator = 1;
+ parm.parm.capture.timeperframe.denominator = 0;
+ parm.parm.capture.capturemode = 0;
+ if (ioctl(fd_v4l, VIDIOC_S_PARM, &parm) < 0)
+ {
+ printf("VIDIOC_S_PARM failed\n");
+ return TFAIL;
+ }
+
+ parm.parm.capture.timeperframe.numerator = 0;
+ parm.parm.capture.timeperframe.denominator = 0;
+ if (ioctl(fd_v4l, VIDIOC_G_PARM, &parm) < 0)
+ {
+ printf("get frame rate failed\n");
+ return TFAIL;
+ }
+
+ g_cap_mode = parm.parm.capture.capturemode;
+ printf("cap_mode is %d\n", parm.parm.capture.capturemode);
crop.type = V4L2_BUF_TYPE_VIDEO_OVERLAY;
crop.c.left = 0;
crop.c.top = 0;
@@ -158,27 +189,6 @@ mxc_v4l_tvin_setup(struct v4l2_format *fmt)
return TFAIL;
}
- parm.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
- parm.parm.capture.timeperframe.numerator = 1;
- parm.parm.capture.timeperframe.denominator = 0;
- parm.parm.capture.capturemode = 0;
-
- if (ioctl(fd_v4l, VIDIOC_S_PARM, &parm) < 0)
- {
- printf("VIDIOC_S_PARM failed\n");
- return TFAIL;
- }
-
- parm.parm.capture.timeperframe.numerator = 0;
- parm.parm.capture.timeperframe.denominator = 0;
-
- if (ioctl(fd_v4l, VIDIOC_G_PARM, &parm) < 0)
- {
- printf("get frame rate failed\n");
- return TFAIL;
- }
- g_cap_mode = parm.parm.capture.capturemode;
- printf("cap_mode is %d\n", parm.parm.capture.capturemode);
return TPASS;
}
--
1.8.0