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 }