mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-02 16:44:10 +08:00
V4L/DVB: Fix case where fields were not at the correct start location
This patch address an arithmetic error for the case where the only remaining content in the USB packet was the "225Axxxx" start of active video. In cases where that happened to be at the end of the frame, we would inject it into the videobuf (which is incorrect). This caused fields to be intermittently rendered off by two pixels. Thanks to Eugeniy Meshcheryakov for bringing this issue to my attention Signed-off-by: Devin Heitmueller <dheitmueller@kernellabs.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
parent
7f8eacd216
commit
2584bc4337
@ -654,12 +654,12 @@ static inline int em28xx_isoc_copy_vbi(struct em28xx *dev, struct urb *urb)
|
||||
}
|
||||
|
||||
if (buf != NULL && dev->capture_type == 2) {
|
||||
if (len > 4 && p[0] == 0x88 && p[1] == 0x88 &&
|
||||
if (len >= 4 && p[0] == 0x88 && p[1] == 0x88 &&
|
||||
p[2] == 0x88 && p[3] == 0x88) {
|
||||
p += 4;
|
||||
len -= 4;
|
||||
}
|
||||
if (len > 4 && p[0] == 0x22 && p[1] == 0x5a) {
|
||||
if (len >= 4 && p[0] == 0x22 && p[1] == 0x5a) {
|
||||
em28xx_isocdbg("Video frame %d, len=%i, %s\n",
|
||||
p[2], len, (p[2] & 1) ?
|
||||
"odd" : "even");
|
||||
|
Loading…
Reference in New Issue
Block a user