core/vidl/vidl_v4l2_pixel_format.cxx
Go to the documentation of this file.
00001 // This is core/vidl/vidl_v4l2_pixel_format.cxx
00002 //:
00003 // \file
00004 //
00005 // \author Antonio Garrido
00006 // \verbatim
00007 //  Modifications
00008 //     15 Apr 2008 Created (A. Garrido)
00009 //\endverbatim
00010 
00011 #include "vidl_v4l2_pixel_format.h"
00012 
00013 extern "C" {
00014 //#include <asm/types.h>          /* for videodev2.h */
00015 #include <sys/time.h>
00016 #include <linux/videodev2.h>
00017 };
00018 
00019 // TO DO: Comparison between videl2_pixel_format.h and
00020 // http://v4l2spec.bytesex.org/spec-single/v4l2.html#AEN4850 !!!
00021 // correspondences extracted from vidl_v4l and intuition.... not sure about them :(
00022 unsigned int vidl_to_v4l2 (vidl_pixel_format pf)
00023 {
00024   switch (pf)
00025   {
00026     case VIDL_PIXEL_FORMAT_UNKNOWN: return 0;
00027     case VIDL_PIXEL_FORMAT_RGB_24: return V4L2_PIX_FMT_BGR24;
00028     case VIDL_PIXEL_FORMAT_RGB_24P: return 0;
00029     case VIDL_PIXEL_FORMAT_BGR_24: return 0;
00030     case VIDL_PIXEL_FORMAT_RGBA_32: return  V4L2_PIX_FMT_BGR32;
00031     case VIDL_PIXEL_FORMAT_RGBA_32P: return 0;
00032     case VIDL_PIXEL_FORMAT_RGB_565: return  V4L2_PIX_FMT_RGB565;
00033     case VIDL_PIXEL_FORMAT_RGB_555: return  V4L2_PIX_FMT_RGB555;
00034     case VIDL_PIXEL_FORMAT_YUV_444P: return 0;
00035     case VIDL_PIXEL_FORMAT_YUV_422P: return  V4L2_PIX_FMT_YUV422P;
00036     case VIDL_PIXEL_FORMAT_YUV_420P: return  V4L2_PIX_FMT_YUV420;
00037     case VIDL_PIXEL_FORMAT_YVU_420P: return  V4L2_PIX_FMT_YVU420; 
00038     case VIDL_PIXEL_FORMAT_YUV_411P: return  V4L2_PIX_FMT_YUV411P;
00039     case VIDL_PIXEL_FORMAT_YUV_410P: return  V4L2_PIX_FMT_YVU410;
00040     case VIDL_PIXEL_FORMAT_UYV_444: return 0;
00041     case VIDL_PIXEL_FORMAT_YUYV_422: return  V4L2_PIX_FMT_YUYV;
00042     case VIDL_PIXEL_FORMAT_UYVY_422: return  V4L2_PIX_FMT_UYVY;
00043     case VIDL_PIXEL_FORMAT_UYVY_411: return 0;
00044     case VIDL_PIXEL_FORMAT_MONO_1: return -1;
00045     case VIDL_PIXEL_FORMAT_MONO_8: return  V4L2_PIX_FMT_GREY ;
00046   //  case VIDL_PIXEL_FORMAT_MONO_16: return V4L2_PIX_FMT_Y16; // ?????????return -1;
00047     default: return -1;
00048   };
00049 }
00050 
00051 
00052 
00053 vidl_pixel_format v4l2_to_vidl(unsigned int pf)
00054 {
00055   switch (pf)
00056   {
00057     case V4L2_PIX_FMT_BGR24: return VIDL_PIXEL_FORMAT_RGB_24;
00058     case V4L2_PIX_FMT_BGR32: return VIDL_PIXEL_FORMAT_RGBA_32;
00059     case V4L2_PIX_FMT_RGB565: return VIDL_PIXEL_FORMAT_RGB_565;
00060     case V4L2_PIX_FMT_RGB555: return VIDL_PIXEL_FORMAT_RGB_555;
00061     case V4L2_PIX_FMT_YUV422P: return VIDL_PIXEL_FORMAT_YUV_422P;
00062     case V4L2_PIX_FMT_YUV420: return VIDL_PIXEL_FORMAT_YUV_420P;
00063     case V4L2_PIX_FMT_YVU420: return VIDL_PIXEL_FORMAT_YVU_420P;
00064     case V4L2_PIX_FMT_YUV411P: return VIDL_PIXEL_FORMAT_YUV_411P;
00065     case V4L2_PIX_FMT_YVU410: return VIDL_PIXEL_FORMAT_YUV_410P;
00066     case V4L2_PIX_FMT_YUYV: return VIDL_PIXEL_FORMAT_YUYV_422;
00067     case V4L2_PIX_FMT_UYVY: return VIDL_PIXEL_FORMAT_UYVY_422;
00068     case V4L2_PIX_FMT_GREY: return VIDL_PIXEL_FORMAT_MONO_8;
00069     //case V4L2_PIX_FMT_Y16: return VIDL_PIXEL_FORMAT_MONO_16; //????
00070     default: return VIDL_PIXEL_FORMAT_UNKNOWN;
00071   };
00072 }