diff --git a/mythtv/libs/libmythtv/mpegrecorder.cpp b/mythtv/libs/libmythtv/mpegrecorder.cpp index 32221f7..a358319 100644 --- a/mythtv/libs/libmythtv/mpegrecorder.cpp +++ b/mythtv/libs/libmythtv/mpegrecorder.cpp @@ -852,18 +852,25 @@ bool MpegRecorder::SetVBIOptions(int chanfd) #ifdef V4L2_CAP_SLICED_VBI_CAPTURE if (supports_sliced_vbi) { + int fd; + + if (OpenVBIDevice()) + fd = vbi_fd; + else + fd = chanfd; + struct v4l2_format vbifmt; memset(&vbifmt, 0, sizeof(struct v4l2_format)); vbifmt.type = V4L2_BUF_TYPE_SLICED_VBI_CAPTURE; vbifmt.fmt.sliced.service_set |= (VBIMode::PAL_TT == vbimode) ? V4L2_SLICED_VBI_625 : V4L2_SLICED_VBI_525; - if (ioctl(chanfd, VIDIOC_S_FMT, &vbifmt) < 0) + if (ioctl(fd, VIDIOC_S_FMT, &vbifmt) < 0) { LOG(VB_GENERAL, LOG_WARNING, LOC + "Unable to enable VBI embedding" + ENO); } - else if (ioctl(chanfd, VIDIOC_G_FMT, &vbifmt) >= 0) + else if (ioctl(fd, VIDIOC_G_FMT, &vbifmt) >= 0) { LOG(VB_RECORD, LOG_INFO, LOC + QString("VBI service: %1, io size: %2") @@ -880,7 +887,7 @@ bool MpegRecorder::SetVBIOptions(int chanfd) ctrls.count = 1; ctrls.controls = &vbi_ctrl; - if (ioctl(chanfd, VIDIOC_S_EXT_CTRLS, &ctrls) < 0) + if (ioctl(fd, VIDIOC_S_EXT_CTRLS, &ctrls) < 0) { LOG(VB_GENERAL, LOG_WARNING, LOC + "Unable to set VBI embedding format" + ENO);