Loading drivers/media/video/em28xx/em28xx-video.c +16 −15 Original line number Diff line number Diff line Loading @@ -365,32 +365,33 @@ static inline int em28xx_isoc_copy(struct urb *urb) /* FIXME: incomplete buffer checks where removed to make logic simpler. Impacts of those changes should be evaluated */ if (p[0] == 0x33 && p[1] == 0x95 && p[2] == 0x00) { em28xx_isocdbg("VBI HEADER!!!\n"); /* FIXME: Should add vbi copy */ continue; } if (p[0] == 0x22 && p[1] == 0x5a) { em28xx_isocdbg("Video frame %d, length=%i, %s\n", p[2], len, (p[2] & 1)? "odd" : "even"); if (p[2] & 1) buf->top_field = 0; else { if (buf->receiving) { else buf->top_field = 1; // if (dev->isoc_ctl.last_field && !buf->top_field) { if (dev->isoc_ctl.last_field != buf->top_field) { buffer_filled(dev, dma_q, buf); rc = get_next_buf(dma_q, &buf); if (rc <= 0) return rc; outp = videobuf_to_vmalloc(&buf->vb); } dev->isoc_ctl.last_field = buf->top_field; buf->top_field = 1; } buf->receiving = 1; dma_q->pos = 0; } else if (p[0] == 0x33 && p[1] == 0x95 && p[2] == 0x00) { em28xx_isocdbg("VBI HEADER!!!\n"); } em28xx_copy_video(dev, dma_q, buf, p, outp, len); /* FIXME: Should add vbi copy */ } return rc; } Loading drivers/media/video/em28xx/em28xx.h +3 −0 Original line number Diff line number Diff line Loading @@ -114,6 +114,9 @@ struct em28xx_usb_isoc_ctl { /* Stores already requested buffers */ struct em28xx_buffer *buf; /* Store last filled frame */ int last_field; /* Stores the number of received fields */ int nfields; }; Loading Loading
drivers/media/video/em28xx/em28xx-video.c +16 −15 Original line number Diff line number Diff line Loading @@ -365,32 +365,33 @@ static inline int em28xx_isoc_copy(struct urb *urb) /* FIXME: incomplete buffer checks where removed to make logic simpler. Impacts of those changes should be evaluated */ if (p[0] == 0x33 && p[1] == 0x95 && p[2] == 0x00) { em28xx_isocdbg("VBI HEADER!!!\n"); /* FIXME: Should add vbi copy */ continue; } if (p[0] == 0x22 && p[1] == 0x5a) { em28xx_isocdbg("Video frame %d, length=%i, %s\n", p[2], len, (p[2] & 1)? "odd" : "even"); if (p[2] & 1) buf->top_field = 0; else { if (buf->receiving) { else buf->top_field = 1; // if (dev->isoc_ctl.last_field && !buf->top_field) { if (dev->isoc_ctl.last_field != buf->top_field) { buffer_filled(dev, dma_q, buf); rc = get_next_buf(dma_q, &buf); if (rc <= 0) return rc; outp = videobuf_to_vmalloc(&buf->vb); } dev->isoc_ctl.last_field = buf->top_field; buf->top_field = 1; } buf->receiving = 1; dma_q->pos = 0; } else if (p[0] == 0x33 && p[1] == 0x95 && p[2] == 0x00) { em28xx_isocdbg("VBI HEADER!!!\n"); } em28xx_copy_video(dev, dma_q, buf, p, outp, len); /* FIXME: Should add vbi copy */ } return rc; } Loading
drivers/media/video/em28xx/em28xx.h +3 −0 Original line number Diff line number Diff line Loading @@ -114,6 +114,9 @@ struct em28xx_usb_isoc_ctl { /* Stores already requested buffers */ struct em28xx_buffer *buf; /* Store last filled frame */ int last_field; /* Stores the number of received fields */ int nfields; }; Loading