Commit 9cd08c66 authored by Yusuke Suzuki's avatar Yusuke Suzuki

add V4L2_PIX_FMT_RGB24 convert code

parent dce629d0
...@@ -294,7 +294,8 @@ enum PALETTE_TYPE { ...@@ -294,7 +294,8 @@ enum PALETTE_TYPE {
PALETTE_SBGGR8, PALETTE_SBGGR8,
PALETTE_SN9C10X, PALETTE_SN9C10X,
PALETTE_MJPEG, PALETTE_MJPEG,
PALETTE_SGBRG PALETTE_SGBRG,
PALETTE_RGB24
}; };
typedef struct CvCaptureCAM_V4L typedef struct CvCaptureCAM_V4L
...@@ -587,6 +588,10 @@ static int autosetup_capture_mode_v4l2(CvCaptureCAM_V4L* capture) ...@@ -587,6 +588,10 @@ static int autosetup_capture_mode_v4l2(CvCaptureCAM_V4L* capture)
if (try_palette_v4l2(capture, V4L2_PIX_FMT_SGBRG) == 0) if (try_palette_v4l2(capture, V4L2_PIX_FMT_SGBRG) == 0)
{ {
capture->palette = PALETTE_SGBRG; capture->palette = PALETTE_SGBRG;
}
else if (try_palette_v4l2(capture, V4L2_PIX_FMT_RGB24) == 0)
{
capture->palette = PALETTE_RGB24;
} }
else else
{ {
...@@ -1916,6 +1921,18 @@ static void sgbrg2rgb24(long int WIDTH, long int HEIGHT, unsigned char *src, uns ...@@ -1916,6 +1921,18 @@ static void sgbrg2rgb24(long int WIDTH, long int HEIGHT, unsigned char *src, uns
} }
} }
static void
rgb24_to_rgb24 (int width, int height, unsigned char *src, unsigned char *dst)
{
const int size = width * height;
for(int i = 0; i < size; ++i, src += 3, dst += 3)
{
*(dst + 0) = *(src + 2);
*(dst + 1) = *(src + 1);
*(dst + 2) = *(src + 0);
}
}
#define CLAMP(x) ((x)<0?0:((x)>255)?255:(x)) #define CLAMP(x) ((x)<0?0:((x)>255)?255:(x))
typedef struct { typedef struct {
...@@ -2219,6 +2236,12 @@ static IplImage* icvRetrieveFrameCAM_V4L( CvCaptureCAM_V4L* capture, int) { ...@@ -2219,6 +2236,12 @@ static IplImage* icvRetrieveFrameCAM_V4L( CvCaptureCAM_V4L* capture, int) {
(unsigned char*)capture->buffers[(capture->bufferIndex+1) % capture->req.count].start, (unsigned char*)capture->buffers[(capture->bufferIndex+1) % capture->req.count].start,
(unsigned char*)capture->frame.imageData); (unsigned char*)capture->frame.imageData);
break; break;
case PALETTE_RGB24:
rgb24_to_rgb24(capture->form.fmt.pix.width,
capture->form.fmt.pix.height,
(unsigned char*)capture->buffers[(capture->bufferIndex+1) % capture->req.count].start,
(unsigned char*)capture->frame.imageData);
break;
} }
} }
#endif /* HAVE_CAMV4L2 */ #endif /* HAVE_CAMV4L2 */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment