{-# 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.NoiseReducerFilter
-- 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.NoiseReducerFilter
  ( NoiseReducerFilter
      ( ..,
        NoiseReducerFilter_BILATERAL,
        NoiseReducerFilter_CONSERVE,
        NoiseReducerFilter_GAUSSIAN,
        NoiseReducerFilter_LANCZOS,
        NoiseReducerFilter_MEAN,
        NoiseReducerFilter_SHARPEN,
        NoiseReducerFilter_SPATIAL,
        NoiseReducerFilter_TEMPORAL
      ),
  )
where

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

-- | Use Noise reducer filter (NoiseReducerFilter) to select one of the
-- following spatial image filtering functions. To use this setting, you
-- must also enable Noise reducer (NoiseReducer). * Bilateral preserves
-- edges while reducing noise. * Mean (softest), Gaussian, Lanczos, and
-- Sharpen (sharpest) do convolution filtering. * Conserve does min\/max
-- noise reduction. * Spatial does frequency-domain filtering based on JND
-- principles. * Temporal optimizes video quality for complex motion.
newtype NoiseReducerFilter = NoiseReducerFilter'
  { NoiseReducerFilter -> Text
fromNoiseReducerFilter ::
      Core.Text
  }
  deriving stock
    ( Int -> NoiseReducerFilter -> ShowS
[NoiseReducerFilter] -> ShowS
NoiseReducerFilter -> String
(Int -> NoiseReducerFilter -> ShowS)
-> (NoiseReducerFilter -> String)
-> ([NoiseReducerFilter] -> ShowS)
-> Show NoiseReducerFilter
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [NoiseReducerFilter] -> ShowS
$cshowList :: [NoiseReducerFilter] -> ShowS
show :: NoiseReducerFilter -> String
$cshow :: NoiseReducerFilter -> String
showsPrec :: Int -> NoiseReducerFilter -> ShowS
$cshowsPrec :: Int -> NoiseReducerFilter -> ShowS
Prelude.Show,
      ReadPrec [NoiseReducerFilter]
ReadPrec NoiseReducerFilter
Int -> ReadS NoiseReducerFilter
ReadS [NoiseReducerFilter]
(Int -> ReadS NoiseReducerFilter)
-> ReadS [NoiseReducerFilter]
-> ReadPrec NoiseReducerFilter
-> ReadPrec [NoiseReducerFilter]
-> Read NoiseReducerFilter
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [NoiseReducerFilter]
$creadListPrec :: ReadPrec [NoiseReducerFilter]
readPrec :: ReadPrec NoiseReducerFilter
$creadPrec :: ReadPrec NoiseReducerFilter
readList :: ReadS [NoiseReducerFilter]
$creadList :: ReadS [NoiseReducerFilter]
readsPrec :: Int -> ReadS NoiseReducerFilter
$creadsPrec :: Int -> ReadS NoiseReducerFilter
Prelude.Read,
      NoiseReducerFilter -> NoiseReducerFilter -> Bool
(NoiseReducerFilter -> NoiseReducerFilter -> Bool)
-> (NoiseReducerFilter -> NoiseReducerFilter -> Bool)
-> Eq NoiseReducerFilter
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: NoiseReducerFilter -> NoiseReducerFilter -> Bool
$c/= :: NoiseReducerFilter -> NoiseReducerFilter -> Bool
== :: NoiseReducerFilter -> NoiseReducerFilter -> Bool
$c== :: NoiseReducerFilter -> NoiseReducerFilter -> Bool
Prelude.Eq,
      Eq NoiseReducerFilter
Eq NoiseReducerFilter
-> (NoiseReducerFilter -> NoiseReducerFilter -> Ordering)
-> (NoiseReducerFilter -> NoiseReducerFilter -> Bool)
-> (NoiseReducerFilter -> NoiseReducerFilter -> Bool)
-> (NoiseReducerFilter -> NoiseReducerFilter -> Bool)
-> (NoiseReducerFilter -> NoiseReducerFilter -> Bool)
-> (NoiseReducerFilter -> NoiseReducerFilter -> NoiseReducerFilter)
-> (NoiseReducerFilter -> NoiseReducerFilter -> NoiseReducerFilter)
-> Ord NoiseReducerFilter
NoiseReducerFilter -> NoiseReducerFilter -> Bool
NoiseReducerFilter -> NoiseReducerFilter -> Ordering
NoiseReducerFilter -> NoiseReducerFilter -> NoiseReducerFilter
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 :: NoiseReducerFilter -> NoiseReducerFilter -> NoiseReducerFilter
$cmin :: NoiseReducerFilter -> NoiseReducerFilter -> NoiseReducerFilter
max :: NoiseReducerFilter -> NoiseReducerFilter -> NoiseReducerFilter
$cmax :: NoiseReducerFilter -> NoiseReducerFilter -> NoiseReducerFilter
>= :: NoiseReducerFilter -> NoiseReducerFilter -> Bool
$c>= :: NoiseReducerFilter -> NoiseReducerFilter -> Bool
> :: NoiseReducerFilter -> NoiseReducerFilter -> Bool
$c> :: NoiseReducerFilter -> NoiseReducerFilter -> Bool
<= :: NoiseReducerFilter -> NoiseReducerFilter -> Bool
$c<= :: NoiseReducerFilter -> NoiseReducerFilter -> Bool
< :: NoiseReducerFilter -> NoiseReducerFilter -> Bool
$c< :: NoiseReducerFilter -> NoiseReducerFilter -> Bool
compare :: NoiseReducerFilter -> NoiseReducerFilter -> Ordering
$ccompare :: NoiseReducerFilter -> NoiseReducerFilter -> Ordering
$cp1Ord :: Eq NoiseReducerFilter
Prelude.Ord,
      (forall x. NoiseReducerFilter -> Rep NoiseReducerFilter x)
-> (forall x. Rep NoiseReducerFilter x -> NoiseReducerFilter)
-> Generic NoiseReducerFilter
forall x. Rep NoiseReducerFilter x -> NoiseReducerFilter
forall x. NoiseReducerFilter -> Rep NoiseReducerFilter x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep NoiseReducerFilter x -> NoiseReducerFilter
$cfrom :: forall x. NoiseReducerFilter -> Rep NoiseReducerFilter x
Prelude.Generic
    )
  deriving newtype
    ( Int -> NoiseReducerFilter -> Int
NoiseReducerFilter -> Int
(Int -> NoiseReducerFilter -> Int)
-> (NoiseReducerFilter -> Int) -> Hashable NoiseReducerFilter
forall a. (Int -> a -> Int) -> (a -> Int) -> Hashable a
hash :: NoiseReducerFilter -> Int
$chash :: NoiseReducerFilter -> Int
hashWithSalt :: Int -> NoiseReducerFilter -> Int
$chashWithSalt :: Int -> NoiseReducerFilter -> Int
Prelude.Hashable,
      NoiseReducerFilter -> ()
(NoiseReducerFilter -> ()) -> NFData NoiseReducerFilter
forall a. (a -> ()) -> NFData a
rnf :: NoiseReducerFilter -> ()
$crnf :: NoiseReducerFilter -> ()
Prelude.NFData,
      Text -> Either String NoiseReducerFilter
(Text -> Either String NoiseReducerFilter)
-> FromText NoiseReducerFilter
forall a. (Text -> Either String a) -> FromText a
fromText :: Text -> Either String NoiseReducerFilter
$cfromText :: Text -> Either String NoiseReducerFilter
Core.FromText,
      NoiseReducerFilter -> Text
(NoiseReducerFilter -> Text) -> ToText NoiseReducerFilter
forall a. (a -> Text) -> ToText a
toText :: NoiseReducerFilter -> Text
$ctoText :: NoiseReducerFilter -> Text
Core.ToText,
      NoiseReducerFilter -> ByteString
(NoiseReducerFilter -> ByteString)
-> ToByteString NoiseReducerFilter
forall a. (a -> ByteString) -> ToByteString a
toBS :: NoiseReducerFilter -> ByteString
$ctoBS :: NoiseReducerFilter -> ByteString
Core.ToByteString,
      NoiseReducerFilter -> ByteStringBuilder
(NoiseReducerFilter -> ByteStringBuilder)
-> ToLog NoiseReducerFilter
forall a. (a -> ByteStringBuilder) -> ToLog a
build :: NoiseReducerFilter -> ByteStringBuilder
$cbuild :: NoiseReducerFilter -> ByteStringBuilder
Core.ToLog,
      HeaderName -> NoiseReducerFilter -> [Header]
(HeaderName -> NoiseReducerFilter -> [Header])
-> ToHeader NoiseReducerFilter
forall a. (HeaderName -> a -> [Header]) -> ToHeader a
toHeader :: HeaderName -> NoiseReducerFilter -> [Header]
$ctoHeader :: HeaderName -> NoiseReducerFilter -> [Header]
Core.ToHeader,
      NoiseReducerFilter -> QueryString
(NoiseReducerFilter -> QueryString) -> ToQuery NoiseReducerFilter
forall a. (a -> QueryString) -> ToQuery a
toQuery :: NoiseReducerFilter -> QueryString
$ctoQuery :: NoiseReducerFilter -> QueryString
Core.ToQuery,
      Value -> Parser [NoiseReducerFilter]
Value -> Parser NoiseReducerFilter
(Value -> Parser NoiseReducerFilter)
-> (Value -> Parser [NoiseReducerFilter])
-> FromJSON NoiseReducerFilter
forall a.
(Value -> Parser a) -> (Value -> Parser [a]) -> FromJSON a
parseJSONList :: Value -> Parser [NoiseReducerFilter]
$cparseJSONList :: Value -> Parser [NoiseReducerFilter]
parseJSON :: Value -> Parser NoiseReducerFilter
$cparseJSON :: Value -> Parser NoiseReducerFilter
Core.FromJSON,
      FromJSONKeyFunction [NoiseReducerFilter]
FromJSONKeyFunction NoiseReducerFilter
FromJSONKeyFunction NoiseReducerFilter
-> FromJSONKeyFunction [NoiseReducerFilter]
-> FromJSONKey NoiseReducerFilter
forall a.
FromJSONKeyFunction a -> FromJSONKeyFunction [a] -> FromJSONKey a
fromJSONKeyList :: FromJSONKeyFunction [NoiseReducerFilter]
$cfromJSONKeyList :: FromJSONKeyFunction [NoiseReducerFilter]
fromJSONKey :: FromJSONKeyFunction NoiseReducerFilter
$cfromJSONKey :: FromJSONKeyFunction NoiseReducerFilter
Core.FromJSONKey,
      [NoiseReducerFilter] -> Encoding
[NoiseReducerFilter] -> Value
NoiseReducerFilter -> Encoding
NoiseReducerFilter -> Value
(NoiseReducerFilter -> Value)
-> (NoiseReducerFilter -> Encoding)
-> ([NoiseReducerFilter] -> Value)
-> ([NoiseReducerFilter] -> Encoding)
-> ToJSON NoiseReducerFilter
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> ToJSON a
toEncodingList :: [NoiseReducerFilter] -> Encoding
$ctoEncodingList :: [NoiseReducerFilter] -> Encoding
toJSONList :: [NoiseReducerFilter] -> Value
$ctoJSONList :: [NoiseReducerFilter] -> Value
toEncoding :: NoiseReducerFilter -> Encoding
$ctoEncoding :: NoiseReducerFilter -> Encoding
toJSON :: NoiseReducerFilter -> Value
$ctoJSON :: NoiseReducerFilter -> Value
Core.ToJSON,
      ToJSONKeyFunction [NoiseReducerFilter]
ToJSONKeyFunction NoiseReducerFilter
ToJSONKeyFunction NoiseReducerFilter
-> ToJSONKeyFunction [NoiseReducerFilter]
-> ToJSONKey NoiseReducerFilter
forall a.
ToJSONKeyFunction a -> ToJSONKeyFunction [a] -> ToJSONKey a
toJSONKeyList :: ToJSONKeyFunction [NoiseReducerFilter]
$ctoJSONKeyList :: ToJSONKeyFunction [NoiseReducerFilter]
toJSONKey :: ToJSONKeyFunction NoiseReducerFilter
$ctoJSONKey :: ToJSONKeyFunction NoiseReducerFilter
Core.ToJSONKey,
      [Node] -> Either String NoiseReducerFilter
([Node] -> Either String NoiseReducerFilter)
-> FromXML NoiseReducerFilter
forall a. ([Node] -> Either String a) -> FromXML a
parseXML :: [Node] -> Either String NoiseReducerFilter
$cparseXML :: [Node] -> Either String NoiseReducerFilter
Core.FromXML,
      NoiseReducerFilter -> XML
(NoiseReducerFilter -> XML) -> ToXML NoiseReducerFilter
forall a. (a -> XML) -> ToXML a
toXML :: NoiseReducerFilter -> XML
$ctoXML :: NoiseReducerFilter -> XML
Core.ToXML
    )

pattern NoiseReducerFilter_BILATERAL :: NoiseReducerFilter
pattern $bNoiseReducerFilter_BILATERAL :: NoiseReducerFilter
$mNoiseReducerFilter_BILATERAL :: forall r. NoiseReducerFilter -> (Void# -> r) -> (Void# -> r) -> r
NoiseReducerFilter_BILATERAL = NoiseReducerFilter' "BILATERAL"

pattern NoiseReducerFilter_CONSERVE :: NoiseReducerFilter
pattern $bNoiseReducerFilter_CONSERVE :: NoiseReducerFilter
$mNoiseReducerFilter_CONSERVE :: forall r. NoiseReducerFilter -> (Void# -> r) -> (Void# -> r) -> r
NoiseReducerFilter_CONSERVE = NoiseReducerFilter' "CONSERVE"

pattern NoiseReducerFilter_GAUSSIAN :: NoiseReducerFilter
pattern $bNoiseReducerFilter_GAUSSIAN :: NoiseReducerFilter
$mNoiseReducerFilter_GAUSSIAN :: forall r. NoiseReducerFilter -> (Void# -> r) -> (Void# -> r) -> r
NoiseReducerFilter_GAUSSIAN = NoiseReducerFilter' "GAUSSIAN"

pattern NoiseReducerFilter_LANCZOS :: NoiseReducerFilter
pattern $bNoiseReducerFilter_LANCZOS :: NoiseReducerFilter
$mNoiseReducerFilter_LANCZOS :: forall r. NoiseReducerFilter -> (Void# -> r) -> (Void# -> r) -> r
NoiseReducerFilter_LANCZOS = NoiseReducerFilter' "LANCZOS"

pattern NoiseReducerFilter_MEAN :: NoiseReducerFilter
pattern $bNoiseReducerFilter_MEAN :: NoiseReducerFilter
$mNoiseReducerFilter_MEAN :: forall r. NoiseReducerFilter -> (Void# -> r) -> (Void# -> r) -> r
NoiseReducerFilter_MEAN = NoiseReducerFilter' "MEAN"

pattern NoiseReducerFilter_SHARPEN :: NoiseReducerFilter
pattern $bNoiseReducerFilter_SHARPEN :: NoiseReducerFilter
$mNoiseReducerFilter_SHARPEN :: forall r. NoiseReducerFilter -> (Void# -> r) -> (Void# -> r) -> r
NoiseReducerFilter_SHARPEN = NoiseReducerFilter' "SHARPEN"

pattern NoiseReducerFilter_SPATIAL :: NoiseReducerFilter
pattern $bNoiseReducerFilter_SPATIAL :: NoiseReducerFilter
$mNoiseReducerFilter_SPATIAL :: forall r. NoiseReducerFilter -> (Void# -> r) -> (Void# -> r) -> r
NoiseReducerFilter_SPATIAL = NoiseReducerFilter' "SPATIAL"

pattern NoiseReducerFilter_TEMPORAL :: NoiseReducerFilter
pattern $bNoiseReducerFilter_TEMPORAL :: NoiseReducerFilter
$mNoiseReducerFilter_TEMPORAL :: forall r. NoiseReducerFilter -> (Void# -> r) -> (Void# -> r) -> r
NoiseReducerFilter_TEMPORAL = NoiseReducerFilter' "TEMPORAL"

{-# COMPLETE
  NoiseReducerFilter_BILATERAL,
  NoiseReducerFilter_CONSERVE,
  NoiseReducerFilter_GAUSSIAN,
  NoiseReducerFilter_LANCZOS,
  NoiseReducerFilter_MEAN,
  NoiseReducerFilter_SHARPEN,
  NoiseReducerFilter_SPATIAL,
  NoiseReducerFilter_TEMPORAL,
  NoiseReducerFilter'
  #-}