v4l2-0.1: Graphics/V4L2.hs
{- |
Module : Graphics.V4L2
Maintainer : claudiusmaximus@goto10.org
Stability : no
Portability : no
-}
module Graphics.V4L2 (
module Graphics.V4L2.Device
, module Graphics.V4L2.Capability
, module Graphics.V4L2.Priority
, module Graphics.V4L2.Control
, module Graphics.V4L2.Field
, module Graphics.V4L2.PixelFormat
, module Graphics.V4L2.ColorSpace
, module Graphics.V4L2.Format
, module Graphics.V4L2.VideoInput
, module Graphics.V4L2.VideoStandard
, module Graphics.V4L2.VideoCapture
) where
import Graphics.V4L2.Device
import Graphics.V4L2.Capability
import Graphics.V4L2.Priority
import Graphics.V4L2.Control
import Graphics.V4L2.Field
import Graphics.V4L2.PixelFormat
import Graphics.V4L2.ColorSpace
import Graphics.V4L2.Format
import Graphics.V4L2.VideoInput
import Graphics.V4L2.VideoStandard
import Graphics.V4L2.VideoCapture
{-
-- * Buffers and formats.
, BufferType(..)
-- ** Image formats.
-- * Audio inputs.
, AudioIndex
-- * Tuners.
, TunerIndex
-- * Exceptions
, V4L2Bug(..)
) where
import Prelude hiding (null, catch)
import Foreign
import Foreign.C
import Foreign.Helper
import Control.Monad (when)
import Control.Exception
import GHC.IO.Exception (IOErrorType(InvalidArgument, ResourceBusy), ioe_type)
import System.Posix.Types (Fd(Fd), CMode)
import System.Posix.IOCtl (IOControl(ioctlReq))
import Data.Set (Set, empty, fromList, singleton, union, insert, null)
import Data.Word (Word8, Word32, Word64)
import Data.Bits (shiftR, (.&.), testBit)
import Data.Maybe (fromMaybe)
import Bindings.Linux.VideoDev2
import Bindings.LibV4L2
{- | Buffer type identifiers. -}
enum "BufferType" "C'v4l2_buf_type" "c'V4L2_BUF_TYPE_" "B" $ words "VIDEO_CAPTURE VIDEO_CAPTURE_MPLANE VIDEO_OUTPUT VIDEO_OUTPUT_MPLANE VIDEO_OVERLAY VBI_CAPTURE VBI_OUTPUT SLICED_VBI_CAPTURE SLICED_VBI_OUTPUT VIDEO_OUTPUT_OVERLAY"
{- | Audio input index. -}
newtype AudioIndex = AudioIndex Int
deriving (Eq, Ord, Enum, Bounded, Read, Show, Data, Typeable, Num, Integral, Real)
{- | Tuner index. -}
newtype TunerIndex = TunerIndex Int
deriving (Eq, Ord, Enum, Bounded, Read, Show, Data, Typeable, Num, Integral, Real)
zero :: Storable a => IO a
zero = alloca $ \p -> c'memset p 0 (fromIntegral $ sizeOf (undefined `asTypeOf` unsafePerformIO (peek p))) >> peek p
{- | Internal errors. Please report these as bugs. -}
data V4L2Bug
= V4L2BugUnparseableInput C'v4l2_input
| V4L2BugUnparseableFormat C'v4l2_format
| V4L2BugUnparseableFormatDescription C'v4l2_fmtdesc
| V4L2BugUnexpectedFrameSizeType C'v4l2_frmsizeenum
| V4L2BugUnexpectedFrameIntervalType C'v4l2_frmivalenum
deriving (Show, Typeable)
instance Exception V4L2Bug
-}