summaryrefslogtreecommitdiff
path: root/linux/drivers/media
diff options
context:
space:
mode:
Diffstat (limited to 'linux/drivers/media')
-rw-r--r--linux/drivers/media/video/bttv-risc.c23
1 files changed, 19 insertions, 4 deletions
diff --git a/linux/drivers/media/video/bttv-risc.c b/linux/drivers/media/video/bttv-risc.c
index 769c7e365..523f77ad4 100644
--- a/linux/drivers/media/video/bttv-risc.c
+++ b/linux/drivers/media/video/bttv-risc.c
@@ -145,11 +145,26 @@ bttv_risc_planar(struct bttv *btv, struct btcx_riscmem *risc,
(line >= (ylines - VCR_HACK_LINES)))
continue;
switch (vshift) {
- case 0: chroma = 1; break;
- case 1: chroma = !(line & 1); break;
- case 2: chroma = !(line & 3); break;
- default: chroma = 0;
+ case 0:
+ chroma = 1;
+ break;
+ case 1:
+ if (!yoffset)
+ chroma = (line & 1) == 0;
+ else
+ chroma = (line & 1) == 1;
+ break;
+ case 2:
+ if (!yoffset)
+ chroma = (line & 3) == 0;
+ else
+ chroma = (line & 3) == 2;
+ break;
+ default:
+ chroma = 0;
+ break;
}
+
for (todo = ybpl; todo > 0; todo -= ylen) {
/* go to next sg entry if needed */
while (yoffset && yoffset >= sg_dma_len(ysg)) {