module Test.Sandwich.WebDriver.Video.Types where


-- | Default options for fast X11 video recording.
fastX11VideoOptions :: [String]
fastX11VideoOptions :: [String]
fastX11VideoOptions = [String
"-an"
                      , String
"-r", String
"30"
                      , String
"-vcodec"
                      , String
"libxvid"
                      , String
"-qscale:v", String
"1"
                      , String
"-threads", String
"0"]

-- | Default options for quality X11 video recording.
qualityX11VideoOptions :: [String]
qualityX11VideoOptions :: [String]
qualityX11VideoOptions = [String
"-an"
                         , String
"-r", String
"30"
                         , String
"-vcodec", String
"libx264"
                         , String
"-preset", String
"veryslow"
                         , String
"-crf", String
"0"
                         , String
"-threads", String
"0"]

-- | Default options for AVFoundation recording (for Darwin).
defaultAvfoundationOptions :: [String]
defaultAvfoundationOptions :: [String]
defaultAvfoundationOptions = [String
"-r", String
"30"
                             , String
"-an"
                             , String
"-vcodec", String
"libxvid"
                             , String
"-qscale:v", String
"1"
                             , String
"-threads", String
"0"]

-- | Default options for gdigrab recording (for Windows).
defaultGdigrabOptions :: [String]
defaultGdigrabOptions :: [String]
defaultGdigrabOptions = [String
"-framerate", String
"30"]

data VideoSettings = VideoSettings {
  VideoSettings -> [String]
xcbgrabOptions :: [String]
  -- ^ Arguments to x11grab, used with Linux.
  , VideoSettings -> [String]
avfoundationOptions :: [String]
  -- ^ Arguments to avfoundation, used with OS X.
  , VideoSettings -> [String]
gdigrabOptions :: [String]
  -- ^ Arguments to gdigrab, used with Windows.
  , VideoSettings -> Bool
hideMouseWhenRecording :: Bool
  -- ^ Hide the mouse while recording video. Linux and Windows only.
  , VideoSettings -> Bool
logToDisk :: Bool
  -- ^ Log ffmpeg stdout and stderr to disk.
  }

-- | Default video settings.
defaultVideoSettings :: VideoSettings
defaultVideoSettings :: VideoSettings
defaultVideoSettings = VideoSettings {
  xcbgrabOptions :: [String]
xcbgrabOptions = [String]
fastX11VideoOptions
  , avfoundationOptions :: [String]
avfoundationOptions = [String]
defaultAvfoundationOptions
  , gdigrabOptions :: [String]
gdigrabOptions = [String]
defaultGdigrabOptions
  , hideMouseWhenRecording :: Bool
hideMouseWhenRecording = Bool
False
  , logToDisk :: Bool
logToDisk = Bool
True
  }