{-# LANGUAGE DeriveDataTypeable #-} {- | Module : Graphics.V4L2.PixelFormat.Internal Maintainer : claudiusmaximus@goto10.org Stability : no Portability : no -} module Graphics.V4L2.PixelFormat.Internal ( PixelFormat(..) , fromPixelFormat , toPixelFormat ) where import Data.Data (Data) import Data.Typeable (Typeable) import Data.Word (Word32) import Bindings.Linux.VideoDev2 import Foreign.Extra.CEnum (toCEnum, fromCEnum) {- | Pixel formats. -} data PixelFormat -- grep PIX /usr/include/linux/videodev2.h | sed "s|^#define \(V4L2_PIX_FMT_\([^ \t]*\)\)[ \t].*$| \| Pixel\2|" = PixelRGB332 | PixelRGB444 | PixelRGB555 | PixelRGB565 | PixelRGB555X | PixelRGB565X | PixelBGR24 | PixelRGB24 | PixelBGR32 | PixelRGB32 | PixelGREY | PixelY16 | PixelPAL8 | PixelYVU410 | PixelYVU420 | PixelYUYV | PixelYYUV | PixelYVYU | PixelUYVY | PixelVYUY | PixelYUV422P | PixelYUV411P | PixelY41P | PixelYUV444 | PixelYUV555 | PixelYUV565 | PixelYUV32 | PixelYUV410 | PixelYUV420 | PixelHI240 | PixelHM12 | PixelNV12 | PixelNV21 | PixelNV16 | PixelNV61 | PixelSBGGR8 | PixelSGBRG8 | PixelSGRBG8 | PixelSGRBG10 | PixelSGRBG10DPCM8 | PixelSBGGR16 | PixelMJPEG | PixelJPEG | PixelDV | PixelMPEG | PixelWNVA | PixelSN9C10X | PixelSN9C20X_I420 | PixelPWC1 | PixelPWC2 | PixelET61X251 | PixelSPCA501 | PixelSPCA505 | PixelSPCA508 | PixelSPCA561 | PixelPAC207 | PixelMR97310A | PixelSQ905C | PixelPJPG | PixelOV511 | PixelOV518 | PixelUnknown Word32 deriving (Eq, Ord, Read, Show, Data, Typeable) {- | internal -} fromPixelFormat :: Word32 -> PixelFormat {- | internal -} toPixelFormat :: PixelFormat -> Word32 (fromPixelFormat, toPixelFormat) = (fromCEnum spec PixelUnknown, toCEnum spec isUnknown unUnknown) where -- grep PIX /usr/include/linux/videodev2.h | sed "s|^#define \(V4L2_PIX_FMT_\([^ \t]*\)\)[ \t].*$| , ( Pixel\2 , c'\1 )|" spec = [ ( PixelRGB332 , c'V4L2_PIX_FMT_RGB332 ) , ( PixelRGB444 , c'V4L2_PIX_FMT_RGB444 ) , ( PixelRGB555 , c'V4L2_PIX_FMT_RGB555 ) , ( PixelRGB565 , c'V4L2_PIX_FMT_RGB565 ) , ( PixelRGB555X , c'V4L2_PIX_FMT_RGB555X ) , ( PixelRGB565X , c'V4L2_PIX_FMT_RGB565X ) , ( PixelBGR24 , c'V4L2_PIX_FMT_BGR24 ) , ( PixelRGB24 , c'V4L2_PIX_FMT_RGB24 ) , ( PixelBGR32 , c'V4L2_PIX_FMT_BGR32 ) , ( PixelRGB32 , c'V4L2_PIX_FMT_RGB32 ) , ( PixelGREY , c'V4L2_PIX_FMT_GREY ) , ( PixelY16 , c'V4L2_PIX_FMT_Y16 ) , ( PixelPAL8 , c'V4L2_PIX_FMT_PAL8 ) , ( PixelYVU410 , c'V4L2_PIX_FMT_YVU410 ) , ( PixelYVU420 , c'V4L2_PIX_FMT_YVU420 ) , ( PixelYUYV , c'V4L2_PIX_FMT_YUYV ) , ( PixelYYUV , c'V4L2_PIX_FMT_YYUV ) , ( PixelYVYU , c'V4L2_PIX_FMT_YVYU ) , ( PixelUYVY , c'V4L2_PIX_FMT_UYVY ) , ( PixelVYUY , c'V4L2_PIX_FMT_VYUY ) , ( PixelYUV422P , c'V4L2_PIX_FMT_YUV422P ) , ( PixelYUV411P , c'V4L2_PIX_FMT_YUV411P ) , ( PixelY41P , c'V4L2_PIX_FMT_Y41P ) , ( PixelYUV444 , c'V4L2_PIX_FMT_YUV444 ) , ( PixelYUV555 , c'V4L2_PIX_FMT_YUV555 ) , ( PixelYUV565 , c'V4L2_PIX_FMT_YUV565 ) , ( PixelYUV32 , c'V4L2_PIX_FMT_YUV32 ) , ( PixelYUV410 , c'V4L2_PIX_FMT_YUV410 ) , ( PixelYUV420 , c'V4L2_PIX_FMT_YUV420 ) , ( PixelHI240 , c'V4L2_PIX_FMT_HI240 ) , ( PixelHM12 , c'V4L2_PIX_FMT_HM12 ) , ( PixelNV12 , c'V4L2_PIX_FMT_NV12 ) , ( PixelNV21 , c'V4L2_PIX_FMT_NV21 ) , ( PixelNV16 , c'V4L2_PIX_FMT_NV16 ) , ( PixelNV61 , c'V4L2_PIX_FMT_NV61 ) , ( PixelSBGGR8 , c'V4L2_PIX_FMT_SBGGR8 ) , ( PixelSGBRG8 , c'V4L2_PIX_FMT_SGBRG8 ) , ( PixelSGRBG8 , c'V4L2_PIX_FMT_SGRBG8 ) , ( PixelSGRBG10 , c'V4L2_PIX_FMT_SGRBG10 ) , ( PixelSGRBG10DPCM8 , c'V4L2_PIX_FMT_SGRBG10DPCM8 ) , ( PixelSBGGR16 , c'V4L2_PIX_FMT_SBGGR16 ) , ( PixelMJPEG , c'V4L2_PIX_FMT_MJPEG ) , ( PixelJPEG , c'V4L2_PIX_FMT_JPEG ) , ( PixelDV , c'V4L2_PIX_FMT_DV ) , ( PixelMPEG , c'V4L2_PIX_FMT_MPEG ) , ( PixelWNVA , c'V4L2_PIX_FMT_WNVA ) , ( PixelSN9C10X , c'V4L2_PIX_FMT_SN9C10X ) , ( PixelSN9C20X_I420 , c'V4L2_PIX_FMT_SN9C20X_I420 ) , ( PixelPWC1 , c'V4L2_PIX_FMT_PWC1 ) , ( PixelPWC2 , c'V4L2_PIX_FMT_PWC2 ) , ( PixelET61X251 , c'V4L2_PIX_FMT_ET61X251 ) , ( PixelSPCA501 , c'V4L2_PIX_FMT_SPCA501 ) , ( PixelSPCA505 , c'V4L2_PIX_FMT_SPCA505 ) , ( PixelSPCA508 , c'V4L2_PIX_FMT_SPCA508 ) , ( PixelSPCA561 , c'V4L2_PIX_FMT_SPCA561 ) , ( PixelPAC207 , c'V4L2_PIX_FMT_PAC207 ) , ( PixelMR97310A , c'V4L2_PIX_FMT_MR97310A ) , ( PixelSQ905C , c'V4L2_PIX_FMT_SQ905C ) , ( PixelPJPG , c'V4L2_PIX_FMT_PJPG ) , ( PixelOV511 , c'V4L2_PIX_FMT_OV511 ) , ( PixelOV518 , c'V4L2_PIX_FMT_OV518 ) ] isUnknown (PixelUnknown _) = True isUnknown _ = False unUnknown (PixelUnknown f) = f unUnknown _ = error "Graphice.V4L2.PixelFormat.Internal.toPixelFormat"