{-# 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-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- 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.Data as Data
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 ::
      Data.Text
  }
  deriving stock
    ( Int -> InputScanType -> ShowS
[InputScanType] -> ShowS
InputScanType -> String
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]
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
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
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
Prelude.Ord,
      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
    ( Eq InputScanType
Int -> InputScanType -> Int
InputScanType -> Int
forall a. Eq 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 -> ()
forall a. (a -> ()) -> NFData a
rnf :: InputScanType -> ()
$crnf :: InputScanType -> ()
Prelude.NFData,
      Text -> Either String InputScanType
forall a. (Text -> Either String a) -> FromText a
fromText :: Text -> Either String InputScanType
$cfromText :: Text -> Either String InputScanType
Data.FromText,
      InputScanType -> Text
forall a. (a -> Text) -> ToText a
toText :: InputScanType -> Text
$ctoText :: InputScanType -> Text
Data.ToText,
      InputScanType -> ByteString
forall a. (a -> ByteString) -> ToByteString a
toBS :: InputScanType -> ByteString
$ctoBS :: InputScanType -> ByteString
Data.ToByteString,
      InputScanType -> ByteStringBuilder
forall a. (a -> ByteStringBuilder) -> ToLog a
build :: InputScanType -> ByteStringBuilder
$cbuild :: InputScanType -> ByteStringBuilder
Data.ToLog,
      HeaderName -> InputScanType -> [Header]
forall a. (HeaderName -> a -> [Header]) -> ToHeader a
toHeader :: HeaderName -> InputScanType -> [Header]
$ctoHeader :: HeaderName -> InputScanType -> [Header]
Data.ToHeader,
      InputScanType -> QueryString
forall a. (a -> QueryString) -> ToQuery a
toQuery :: InputScanType -> QueryString
$ctoQuery :: InputScanType -> QueryString
Data.ToQuery,
      Value -> Parser [InputScanType]
Value -> Parser 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
Data.FromJSON,
      FromJSONKeyFunction [InputScanType]
FromJSONKeyFunction InputScanType
forall a.
FromJSONKeyFunction a -> FromJSONKeyFunction [a] -> FromJSONKey a
fromJSONKeyList :: FromJSONKeyFunction [InputScanType]
$cfromJSONKeyList :: FromJSONKeyFunction [InputScanType]
fromJSONKey :: FromJSONKeyFunction InputScanType
$cfromJSONKey :: FromJSONKeyFunction InputScanType
Data.FromJSONKey,
      [InputScanType] -> Encoding
[InputScanType] -> Value
InputScanType -> Encoding
InputScanType -> Value
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
Data.ToJSON,
      ToJSONKeyFunction [InputScanType]
ToJSONKeyFunction InputScanType
forall a.
ToJSONKeyFunction a -> ToJSONKeyFunction [a] -> ToJSONKey a
toJSONKeyList :: ToJSONKeyFunction [InputScanType]
$ctoJSONKeyList :: ToJSONKeyFunction [InputScanType]
toJSONKey :: ToJSONKeyFunction InputScanType
$ctoJSONKey :: ToJSONKeyFunction InputScanType
Data.ToJSONKey,
      [Node] -> Either String InputScanType
forall a. ([Node] -> Either String a) -> FromXML a
parseXML :: [Node] -> Either String InputScanType
$cparseXML :: [Node] -> Either String InputScanType
Data.FromXML,
      InputScanType -> XML
forall a. (a -> XML) -> ToXML a
toXML :: InputScanType -> XML
$ctoXML :: InputScanType -> XML
Data.ToXML
    )

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

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

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