{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DerivingStrategies #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE PatternSynonyms #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.MediaConvert.Types.InputScanType
-- Copyright   : (c) 2013-2021 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.MediaConvert.Types.InputScanType
  ( InputScanType
      ( ..,
        InputScanType_AUTO,
        InputScanType_PSF
      ),
  )
where

import qualified Amazonka.Core as Core
import qualified Amazonka.Prelude as Prelude

-- | When you have a progressive segmented frame (PsF) input, use this
-- setting to flag the input as PsF. MediaConvert doesn\'t automatically
-- detect PsF. Therefore, flagging your input as PsF results in better
-- preservation of video quality when you do deinterlacing and frame rate
-- conversion. If you don\'t specify, the default value is Auto (AUTO).
-- Auto is the correct setting for all inputs that are not PsF. Don\'t set
-- this value to PsF when your input is interlaced. Doing so creates
-- horizontal interlacing artifacts.
newtype InputScanType = InputScanType'
  { InputScanType -> Text
fromInputScanType ::
      Core.Text
  }
  deriving stock
    ( Int -> InputScanType -> ShowS
[InputScanType] -> ShowS
InputScanType -> String
(Int -> InputScanType -> ShowS)
-> (InputScanType -> String)
-> ([InputScanType] -> ShowS)
-> Show InputScanType
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [InputScanType] -> ShowS
$cshowList :: [InputScanType] -> ShowS
show :: InputScanType -> String
$cshow :: InputScanType -> String
showsPrec :: Int -> InputScanType -> ShowS
$cshowsPrec :: Int -> InputScanType -> ShowS
Prelude.Show,
      ReadPrec [InputScanType]
ReadPrec InputScanType
Int -> ReadS InputScanType
ReadS [InputScanType]
(Int -> ReadS InputScanType)
-> ReadS [InputScanType]
-> ReadPrec InputScanType
-> ReadPrec [InputScanType]
-> Read InputScanType
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [InputScanType]
$creadListPrec :: ReadPrec [InputScanType]
readPrec :: ReadPrec InputScanType
$creadPrec :: ReadPrec InputScanType
readList :: ReadS [InputScanType]
$creadList :: ReadS [InputScanType]
readsPrec :: Int -> ReadS InputScanType
$creadsPrec :: Int -> ReadS InputScanType
Prelude.Read,
      InputScanType -> InputScanType -> Bool
(InputScanType -> InputScanType -> Bool)
-> (InputScanType -> InputScanType -> Bool) -> Eq InputScanType
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: InputScanType -> InputScanType -> Bool
$c/= :: InputScanType -> InputScanType -> Bool
== :: InputScanType -> InputScanType -> Bool
$c== :: InputScanType -> InputScanType -> Bool
Prelude.Eq,
      Eq InputScanType
Eq InputScanType
-> (InputScanType -> InputScanType -> Ordering)
-> (InputScanType -> InputScanType -> Bool)
-> (InputScanType -> InputScanType -> Bool)
-> (InputScanType -> InputScanType -> Bool)
-> (InputScanType -> InputScanType -> Bool)
-> (InputScanType -> InputScanType -> InputScanType)
-> (InputScanType -> InputScanType -> InputScanType)
-> Ord InputScanType
InputScanType -> InputScanType -> Bool
InputScanType -> InputScanType -> Ordering
InputScanType -> InputScanType -> InputScanType
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: InputScanType -> InputScanType -> InputScanType
$cmin :: InputScanType -> InputScanType -> InputScanType
max :: InputScanType -> InputScanType -> InputScanType
$cmax :: InputScanType -> InputScanType -> InputScanType
>= :: InputScanType -> InputScanType -> Bool
$c>= :: InputScanType -> InputScanType -> Bool
> :: InputScanType -> InputScanType -> Bool
$c> :: InputScanType -> InputScanType -> Bool
<= :: InputScanType -> InputScanType -> Bool
$c<= :: InputScanType -> InputScanType -> Bool
< :: InputScanType -> InputScanType -> Bool
$c< :: InputScanType -> InputScanType -> Bool
compare :: InputScanType -> InputScanType -> Ordering
$ccompare :: InputScanType -> InputScanType -> Ordering
$cp1Ord :: Eq InputScanType
Prelude.Ord,
      (forall x. InputScanType -> Rep InputScanType x)
-> (forall x. Rep InputScanType x -> InputScanType)
-> Generic InputScanType
forall x. Rep InputScanType x -> InputScanType
forall x. InputScanType -> Rep InputScanType x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep InputScanType x -> InputScanType
$cfrom :: forall x. InputScanType -> Rep InputScanType x
Prelude.Generic
    )
  deriving newtype
    ( Int -> InputScanType -> Int
InputScanType -> Int
(Int -> InputScanType -> Int)
-> (InputScanType -> Int) -> Hashable InputScanType
forall a. (Int -> a -> Int) -> (a -> Int) -> Hashable a
hash :: InputScanType -> Int
$chash :: InputScanType -> Int
hashWithSalt :: Int -> InputScanType -> Int
$chashWithSalt :: Int -> InputScanType -> Int
Prelude.Hashable,
      InputScanType -> ()
(InputScanType -> ()) -> NFData InputScanType
forall a. (a -> ()) -> NFData a
rnf :: InputScanType -> ()
$crnf :: InputScanType -> ()
Prelude.NFData,
      Text -> Either String InputScanType
(Text -> Either String InputScanType) -> FromText InputScanType
forall a. (Text -> Either String a) -> FromText a
fromText :: Text -> Either String InputScanType
$cfromText :: Text -> Either String InputScanType
Core.FromText,
      InputScanType -> Text
(InputScanType -> Text) -> ToText InputScanType
forall a. (a -> Text) -> ToText a
toText :: InputScanType -> Text
$ctoText :: InputScanType -> Text
Core.ToText,
      InputScanType -> ByteString
(InputScanType -> ByteString) -> ToByteString InputScanType
forall a. (a -> ByteString) -> ToByteString a
toBS :: InputScanType -> ByteString
$ctoBS :: InputScanType -> ByteString
Core.ToByteString,
      InputScanType -> ByteStringBuilder
(InputScanType -> ByteStringBuilder) -> ToLog InputScanType
forall a. (a -> ByteStringBuilder) -> ToLog a
build :: InputScanType -> ByteStringBuilder
$cbuild :: InputScanType -> ByteStringBuilder
Core.ToLog,
      HeaderName -> InputScanType -> [Header]
(HeaderName -> InputScanType -> [Header]) -> ToHeader InputScanType
forall a. (HeaderName -> a -> [Header]) -> ToHeader a
toHeader :: HeaderName -> InputScanType -> [Header]
$ctoHeader :: HeaderName -> InputScanType -> [Header]
Core.ToHeader,
      InputScanType -> QueryString
(InputScanType -> QueryString) -> ToQuery InputScanType
forall a. (a -> QueryString) -> ToQuery a
toQuery :: InputScanType -> QueryString
$ctoQuery :: InputScanType -> QueryString
Core.ToQuery,
      Value -> Parser [InputScanType]
Value -> Parser InputScanType
(Value -> Parser InputScanType)
-> (Value -> Parser [InputScanType]) -> FromJSON InputScanType
forall a.
(Value -> Parser a) -> (Value -> Parser [a]) -> FromJSON a
parseJSONList :: Value -> Parser [InputScanType]
$cparseJSONList :: Value -> Parser [InputScanType]
parseJSON :: Value -> Parser InputScanType
$cparseJSON :: Value -> Parser InputScanType
Core.FromJSON,
      FromJSONKeyFunction [InputScanType]
FromJSONKeyFunction InputScanType
FromJSONKeyFunction InputScanType
-> FromJSONKeyFunction [InputScanType] -> FromJSONKey InputScanType
forall a.
FromJSONKeyFunction a -> FromJSONKeyFunction [a] -> FromJSONKey a
fromJSONKeyList :: FromJSONKeyFunction [InputScanType]
$cfromJSONKeyList :: FromJSONKeyFunction [InputScanType]
fromJSONKey :: FromJSONKeyFunction InputScanType
$cfromJSONKey :: FromJSONKeyFunction InputScanType
Core.FromJSONKey,
      [InputScanType] -> Encoding
[InputScanType] -> Value
InputScanType -> Encoding
InputScanType -> Value
(InputScanType -> Value)
-> (InputScanType -> Encoding)
-> ([InputScanType] -> Value)
-> ([InputScanType] -> Encoding)
-> ToJSON InputScanType
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> ToJSON a
toEncodingList :: [InputScanType] -> Encoding
$ctoEncodingList :: [InputScanType] -> Encoding
toJSONList :: [InputScanType] -> Value
$ctoJSONList :: [InputScanType] -> Value
toEncoding :: InputScanType -> Encoding
$ctoEncoding :: InputScanType -> Encoding
toJSON :: InputScanType -> Value
$ctoJSON :: InputScanType -> Value
Core.ToJSON,
      ToJSONKeyFunction [InputScanType]
ToJSONKeyFunction InputScanType
ToJSONKeyFunction InputScanType
-> ToJSONKeyFunction [InputScanType] -> ToJSONKey InputScanType
forall a.
ToJSONKeyFunction a -> ToJSONKeyFunction [a] -> ToJSONKey a
toJSONKeyList :: ToJSONKeyFunction [InputScanType]
$ctoJSONKeyList :: ToJSONKeyFunction [InputScanType]
toJSONKey :: ToJSONKeyFunction InputScanType
$ctoJSONKey :: ToJSONKeyFunction InputScanType
Core.ToJSONKey,
      [Node] -> Either String InputScanType
([Node] -> Either String InputScanType) -> FromXML InputScanType
forall a. ([Node] -> Either String a) -> FromXML a
parseXML :: [Node] -> Either String InputScanType
$cparseXML :: [Node] -> Either String InputScanType
Core.FromXML,
      InputScanType -> XML
(InputScanType -> XML) -> ToXML InputScanType
forall a. (a -> XML) -> ToXML a
toXML :: InputScanType -> XML
$ctoXML :: InputScanType -> XML
Core.ToXML
    )

pattern InputScanType_AUTO :: InputScanType
pattern $bInputScanType_AUTO :: InputScanType
$mInputScanType_AUTO :: forall r. InputScanType -> (Void# -> r) -> (Void# -> r) -> r
InputScanType_AUTO = InputScanType' "AUTO"

pattern InputScanType_PSF :: InputScanType
pattern $bInputScanType_PSF :: InputScanType
$mInputScanType_PSF :: forall r. InputScanType -> (Void# -> r) -> (Void# -> r) -> r
InputScanType_PSF = InputScanType' "PSF"

{-# COMPLETE
  InputScanType_AUTO,
  InputScanType_PSF,
  InputScanType'
  #-}