forked from Minki/linux
V4L/DVB (5769): Ivtv: fix broken VBI output support
The old service_set_out setting was still tested, even though it no longer was ever set and was in fact obsolete. This meant that everything that was written to /dev/vbi16 was ignored. Removed the service_set_out variable altogether and now it works again. Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
This commit is contained in:
parent
27b5a3957a
commit
47fd3ba9fc
@ -650,7 +650,6 @@ struct vbi_info {
|
||||
/* convenience pointer to sliced struct in vbi_in union */
|
||||
struct v4l2_sliced_vbi_format *sliced_in;
|
||||
u32 service_set_in;
|
||||
u32 service_set_out;
|
||||
int insert_mpeg;
|
||||
|
||||
/* Buffer for the maximum of 2 * 18 * packet_size sliced VBI lines.
|
||||
|
@ -219,31 +219,23 @@ ssize_t ivtv_write_vbi(struct ivtv *itv, const char __user *ubuf, size_t count)
|
||||
int found_cc = 0;
|
||||
int cc_pos = itv->vbi.cc_pos;
|
||||
|
||||
if (itv->vbi.service_set_out == 0)
|
||||
return -EPERM;
|
||||
|
||||
while (count >= sizeof(struct v4l2_sliced_vbi_data)) {
|
||||
switch (p->id) {
|
||||
case V4L2_SLICED_CAPTION_525:
|
||||
if (p->id == V4L2_SLICED_CAPTION_525 &&
|
||||
p->line == 21 &&
|
||||
(itv->vbi.service_set_out &
|
||||
V4L2_SLICED_CAPTION_525) == 0) {
|
||||
break;
|
||||
}
|
||||
found_cc = 1;
|
||||
if (p->field) {
|
||||
cc[2] = p->data[0];
|
||||
cc[3] = p->data[1];
|
||||
} else {
|
||||
cc[0] = p->data[0];
|
||||
cc[1] = p->data[1];
|
||||
if (p->line == 21) {
|
||||
found_cc = 1;
|
||||
if (p->field) {
|
||||
cc[2] = p->data[0];
|
||||
cc[3] = p->data[1];
|
||||
} else {
|
||||
cc[0] = p->data[0];
|
||||
cc[1] = p->data[1];
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case V4L2_SLICED_VPS:
|
||||
if (p->line == 16 && p->field == 0 &&
|
||||
(itv->vbi.service_set_out & V4L2_SLICED_VPS)) {
|
||||
if (p->line == 16 && p->field == 0) {
|
||||
itv->vbi.vps[0] = p->data[2];
|
||||
itv->vbi.vps[1] = p->data[8];
|
||||
itv->vbi.vps[2] = p->data[9];
|
||||
@ -255,8 +247,7 @@ ssize_t ivtv_write_vbi(struct ivtv *itv, const char __user *ubuf, size_t count)
|
||||
break;
|
||||
|
||||
case V4L2_SLICED_WSS_625:
|
||||
if (p->line == 23 && p->field == 0 &&
|
||||
(itv->vbi.service_set_out & V4L2_SLICED_WSS_625)) {
|
||||
if (p->line == 23 && p->field == 0) {
|
||||
/* No lock needed for WSS */
|
||||
itv->vbi.wss = p->data[0] | (p->data[1] << 8);
|
||||
itv->vbi.wss_found = 1;
|
||||
|
Loading…
Reference in New Issue
Block a user