{-# 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.InputFilterEnable
-- 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.InputFilterEnable
  ( InputFilterEnable
      ( ..,
        InputFilterEnable_AUTO,
        InputFilterEnable_DISABLE,
        InputFilterEnable_FORCE
      ),
  )
where

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

-- | Specify how the transcoding service applies the denoise and deblock
-- filters. You must also enable the filters separately, with Denoise
-- (InputDenoiseFilter) and Deblock (InputDeblockFilter). * Auto - The
-- transcoding service determines whether to apply filtering, depending on
-- input type and quality. * Disable - The input is not filtered. This is
-- true even if you use the API to enable them in (InputDeblockFilter) and
-- (InputDeblockFilter). * Force - The input is filtered regardless of
-- input type.
newtype InputFilterEnable = InputFilterEnable'
  { InputFilterEnable -> Text
fromInputFilterEnable ::
      Core.Text
  }
  deriving stock
    ( Int -> InputFilterEnable -> ShowS
[InputFilterEnable] -> ShowS
InputFilterEnable -> String
(Int -> InputFilterEnable -> ShowS)
-> (InputFilterEnable -> String)
-> ([InputFilterEnable] -> ShowS)
-> Show InputFilterEnable
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [InputFilterEnable] -> ShowS
$cshowList :: [InputFilterEnable] -> ShowS
show :: InputFilterEnable -> String
$cshow :: InputFilterEnable -> String
showsPrec :: Int -> InputFilterEnable -> ShowS
$cshowsPrec :: Int -> InputFilterEnable -> ShowS
Prelude.Show,
      ReadPrec [InputFilterEnable]
ReadPrec InputFilterEnable
Int -> ReadS InputFilterEnable
ReadS [InputFilterEnable]
(Int -> ReadS InputFilterEnable)
-> ReadS [InputFilterEnable]
-> ReadPrec InputFilterEnable
-> ReadPrec [InputFilterEnable]
-> Read InputFilterEnable
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [InputFilterEnable]
$creadListPrec :: ReadPrec [InputFilterEnable]
readPrec :: ReadPrec InputFilterEnable
$creadPrec :: ReadPrec InputFilterEnable
readList :: ReadS [InputFilterEnable]
$creadList :: ReadS [InputFilterEnable]
readsPrec :: Int -> ReadS InputFilterEnable
$creadsPrec :: Int -> ReadS InputFilterEnable
Prelude.Read,
      InputFilterEnable -> InputFilterEnable -> Bool
(InputFilterEnable -> InputFilterEnable -> Bool)
-> (InputFilterEnable -> InputFilterEnable -> Bool)
-> Eq InputFilterEnable
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: InputFilterEnable -> InputFilterEnable -> Bool
$c/= :: InputFilterEnable -> InputFilterEnable -> Bool
== :: InputFilterEnable -> InputFilterEnable -> Bool
$c== :: InputFilterEnable -> InputFilterEnable -> Bool
Prelude.Eq,
      Eq InputFilterEnable
Eq InputFilterEnable
-> (InputFilterEnable -> InputFilterEnable -> Ordering)
-> (InputFilterEnable -> InputFilterEnable -> Bool)
-> (InputFilterEnable -> InputFilterEnable -> Bool)
-> (InputFilterEnable -> InputFilterEnable -> Bool)
-> (InputFilterEnable -> InputFilterEnable -> Bool)
-> (InputFilterEnable -> InputFilterEnable -> InputFilterEnable)
-> (InputFilterEnable -> InputFilterEnable -> InputFilterEnable)
-> Ord InputFilterEnable
InputFilterEnable -> InputFilterEnable -> Bool
InputFilterEnable -> InputFilterEnable -> Ordering
InputFilterEnable -> InputFilterEnable -> InputFilterEnable
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 :: InputFilterEnable -> InputFilterEnable -> InputFilterEnable
$cmin :: InputFilterEnable -> InputFilterEnable -> InputFilterEnable
max :: InputFilterEnable -> InputFilterEnable -> InputFilterEnable
$cmax :: InputFilterEnable -> InputFilterEnable -> InputFilterEnable
>= :: InputFilterEnable -> InputFilterEnable -> Bool
$c>= :: InputFilterEnable -> InputFilterEnable -> Bool
> :: InputFilterEnable -> InputFilterEnable -> Bool
$c> :: InputFilterEnable -> InputFilterEnable -> Bool
<= :: InputFilterEnable -> InputFilterEnable -> Bool
$c<= :: InputFilterEnable -> InputFilterEnable -> Bool
< :: InputFilterEnable -> InputFilterEnable -> Bool
$c< :: InputFilterEnable -> InputFilterEnable -> Bool
compare :: InputFilterEnable -> InputFilterEnable -> Ordering
$ccompare :: InputFilterEnable -> InputFilterEnable -> Ordering
$cp1Ord :: Eq InputFilterEnable
Prelude.Ord,
      (forall x. InputFilterEnable -> Rep InputFilterEnable x)
-> (forall x. Rep InputFilterEnable x -> InputFilterEnable)
-> Generic InputFilterEnable
forall x. Rep InputFilterEnable x -> InputFilterEnable
forall x. InputFilterEnable -> Rep InputFilterEnable x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep InputFilterEnable x -> InputFilterEnable
$cfrom :: forall x. InputFilterEnable -> Rep InputFilterEnable x
Prelude.Generic
    )
  deriving newtype
    ( Int -> InputFilterEnable -> Int
InputFilterEnable -> Int
(Int -> InputFilterEnable -> Int)
-> (InputFilterEnable -> Int) -> Hashable InputFilterEnable
forall a. (Int -> a -> Int) -> (a -> Int) -> Hashable a
hash :: InputFilterEnable -> Int
$chash :: InputFilterEnable -> Int
hashWithSalt :: Int -> InputFilterEnable -> Int
$chashWithSalt :: Int -> InputFilterEnable -> Int
Prelude.Hashable,
      InputFilterEnable -> ()
(InputFilterEnable -> ()) -> NFData InputFilterEnable
forall a. (a -> ()) -> NFData a
rnf :: InputFilterEnable -> ()
$crnf :: InputFilterEnable -> ()
Prelude.NFData,
      Text -> Either String InputFilterEnable
(Text -> Either String InputFilterEnable)
-> FromText InputFilterEnable
forall a. (Text -> Either String a) -> FromText a
fromText :: Text -> Either String InputFilterEnable
$cfromText :: Text -> Either String InputFilterEnable
Core.FromText,
      InputFilterEnable -> Text
(InputFilterEnable -> Text) -> ToText InputFilterEnable
forall a. (a -> Text) -> ToText a
toText :: InputFilterEnable -> Text
$ctoText :: InputFilterEnable -> Text
Core.ToText,
      InputFilterEnable -> ByteString
(InputFilterEnable -> ByteString) -> ToByteString InputFilterEnable
forall a. (a -> ByteString) -> ToByteString a
toBS :: InputFilterEnable -> ByteString
$ctoBS :: InputFilterEnable -> ByteString
Core.ToByteString,
      InputFilterEnable -> ByteStringBuilder
(InputFilterEnable -> ByteStringBuilder) -> ToLog InputFilterEnable
forall a. (a -> ByteStringBuilder) -> ToLog a
build :: InputFilterEnable -> ByteStringBuilder
$cbuild :: InputFilterEnable -> ByteStringBuilder
Core.ToLog,
      HeaderName -> InputFilterEnable -> [Header]
(HeaderName -> InputFilterEnable -> [Header])
-> ToHeader InputFilterEnable
forall a. (HeaderName -> a -> [Header]) -> ToHeader a
toHeader :: HeaderName -> InputFilterEnable -> [Header]
$ctoHeader :: HeaderName -> InputFilterEnable -> [Header]
Core.ToHeader,
      InputFilterEnable -> QueryString
(InputFilterEnable -> QueryString) -> ToQuery InputFilterEnable
forall a. (a -> QueryString) -> ToQuery a
toQuery :: InputFilterEnable -> QueryString
$ctoQuery :: InputFilterEnable -> QueryString
Core.ToQuery,
      Value -> Parser [InputFilterEnable]
Value -> Parser InputFilterEnable
(Value -> Parser InputFilterEnable)
-> (Value -> Parser [InputFilterEnable])
-> FromJSON InputFilterEnable
forall a.
(Value -> Parser a) -> (Value -> Parser [a]) -> FromJSON a
parseJSONList :: Value -> Parser [InputFilterEnable]
$cparseJSONList :: Value -> Parser [InputFilterEnable]
parseJSON :: Value -> Parser InputFilterEnable
$cparseJSON :: Value -> Parser InputFilterEnable
Core.FromJSON,
      FromJSONKeyFunction [InputFilterEnable]
FromJSONKeyFunction InputFilterEnable
FromJSONKeyFunction InputFilterEnable
-> FromJSONKeyFunction [InputFilterEnable]
-> FromJSONKey InputFilterEnable
forall a.
FromJSONKeyFunction a -> FromJSONKeyFunction [a] -> FromJSONKey a
fromJSONKeyList :: FromJSONKeyFunction [InputFilterEnable]
$cfromJSONKeyList :: FromJSONKeyFunction [InputFilterEnable]
fromJSONKey :: FromJSONKeyFunction InputFilterEnable
$cfromJSONKey :: FromJSONKeyFunction InputFilterEnable
Core.FromJSONKey,
      [InputFilterEnable] -> Encoding
[InputFilterEnable] -> Value
InputFilterEnable -> Encoding
InputFilterEnable -> Value
(InputFilterEnable -> Value)
-> (InputFilterEnable -> Encoding)
-> ([InputFilterEnable] -> Value)
-> ([InputFilterEnable] -> Encoding)
-> ToJSON InputFilterEnable
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> ToJSON a
toEncodingList :: [InputFilterEnable] -> Encoding
$ctoEncodingList :: [InputFilterEnable] -> Encoding
toJSONList :: [InputFilterEnable] -> Value
$ctoJSONList :: [InputFilterEnable] -> Value
toEncoding :: InputFilterEnable -> Encoding
$ctoEncoding :: InputFilterEnable -> Encoding
toJSON :: InputFilterEnable -> Value
$ctoJSON :: InputFilterEnable -> Value
Core.ToJSON,
      ToJSONKeyFunction [InputFilterEnable]
ToJSONKeyFunction InputFilterEnable
ToJSONKeyFunction InputFilterEnable
-> ToJSONKeyFunction [InputFilterEnable]
-> ToJSONKey InputFilterEnable
forall a.
ToJSONKeyFunction a -> ToJSONKeyFunction [a] -> ToJSONKey a
toJSONKeyList :: ToJSONKeyFunction [InputFilterEnable]
$ctoJSONKeyList :: ToJSONKeyFunction [InputFilterEnable]
toJSONKey :: ToJSONKeyFunction InputFilterEnable
$ctoJSONKey :: ToJSONKeyFunction InputFilterEnable
Core.ToJSONKey,
      [Node] -> Either String InputFilterEnable
([Node] -> Either String InputFilterEnable)
-> FromXML InputFilterEnable
forall a. ([Node] -> Either String a) -> FromXML a
parseXML :: [Node] -> Either String InputFilterEnable
$cparseXML :: [Node] -> Either String InputFilterEnable
Core.FromXML,
      InputFilterEnable -> XML
(InputFilterEnable -> XML) -> ToXML InputFilterEnable
forall a. (a -> XML) -> ToXML a
toXML :: InputFilterEnable -> XML
$ctoXML :: InputFilterEnable -> XML
Core.ToXML
    )

pattern InputFilterEnable_AUTO :: InputFilterEnable
pattern $bInputFilterEnable_AUTO :: InputFilterEnable
$mInputFilterEnable_AUTO :: forall r. InputFilterEnable -> (Void# -> r) -> (Void# -> r) -> r
InputFilterEnable_AUTO = InputFilterEnable' "AUTO"

pattern InputFilterEnable_DISABLE :: InputFilterEnable
pattern $bInputFilterEnable_DISABLE :: InputFilterEnable
$mInputFilterEnable_DISABLE :: forall r. InputFilterEnable -> (Void# -> r) -> (Void# -> r) -> r
InputFilterEnable_DISABLE = InputFilterEnable' "DISABLE"

pattern InputFilterEnable_FORCE :: InputFilterEnable
pattern $bInputFilterEnable_FORCE :: InputFilterEnable
$mInputFilterEnable_FORCE :: forall r. InputFilterEnable -> (Void# -> r) -> (Void# -> r) -> r
InputFilterEnable_FORCE = InputFilterEnable' "FORCE"

{-# COMPLETE
  InputFilterEnable_AUTO,
  InputFilterEnable_DISABLE,
  InputFilterEnable_FORCE,
  InputFilterEnable'
  #-}