kopia lustrzana https://gitlab.com/sane-project/backends
Convert v4l1 BGR data to RGB
rodzic
b5f4056635
commit
3de5c87388
|
@ -1,3 +1,7 @@
|
|||
2010-11-08 Marc Deslauriers <marc.deslauriers@ubuntu.com>
|
||||
* backend/v4l.c: convert v4l1 BGR data to RGB; v4l1 always returns
|
||||
BGR for RGB due to a coding error way back.
|
||||
|
||||
2010-11-07 Marc Deslauriers <marc.deslauriers@ubuntu.com>
|
||||
* backend/v4l.c: loop through the read buffers in the v4l backend so
|
||||
we don't get stale frames.
|
||||
|
|
|
@ -951,6 +951,7 @@ sane_start (SANE_Handle handle)
|
|||
{
|
||||
int len, loop;
|
||||
V4L_Scanner *s;
|
||||
char data;
|
||||
|
||||
DBG (2, "sane_start\n");
|
||||
for (s = first_handle; s; s = s->next)
|
||||
|
@ -1028,6 +1029,19 @@ sane_start (SANE_Handle handle)
|
|||
}
|
||||
DBG (3, "sane_start: frame %x done\n", s->mmap.frame);
|
||||
}
|
||||
|
||||
/* v4l1 actually returns BGR when we ask for RGB, so convert it */
|
||||
if (s->pict.palette == VIDEO_PALETTE_RGB24)
|
||||
{
|
||||
DBG (3, "sane_start: converting from BGR to RGB\n");
|
||||
for (loop = 0; loop < (s->window.width * s->window.height * 3); loop += 3)
|
||||
{
|
||||
data = *(buffer + loop);
|
||||
*(buffer + loop) = *(buffer + loop + 2);
|
||||
*(buffer + loop + 2) = data;
|
||||
}
|
||||
}
|
||||
|
||||
DBG (3, "sane_start: done\n");
|
||||
return SANE_STATUS_GOOD;
|
||||
}
|
||||
|
|
Ładowanie…
Reference in New Issue