{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}
module Amazonka.MediaConvert.Types.Deinterlacer where
import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.MediaConvert.Types.DeinterlaceAlgorithm
import Amazonka.MediaConvert.Types.DeinterlacerControl
import Amazonka.MediaConvert.Types.DeinterlacerMode
import qualified Amazonka.Prelude as Prelude
data Deinterlacer = Deinterlacer'
{
Deinterlacer -> Maybe DeinterlaceAlgorithm
algorithm :: Prelude.Maybe DeinterlaceAlgorithm,
Deinterlacer -> Maybe DeinterlacerControl
control :: Prelude.Maybe DeinterlacerControl,
Deinterlacer -> Maybe DeinterlacerMode
mode :: Prelude.Maybe DeinterlacerMode
}
deriving (Deinterlacer -> Deinterlacer -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Deinterlacer -> Deinterlacer -> Bool
$c/= :: Deinterlacer -> Deinterlacer -> Bool
== :: Deinterlacer -> Deinterlacer -> Bool
$c== :: Deinterlacer -> Deinterlacer -> Bool
Prelude.Eq, ReadPrec [Deinterlacer]
ReadPrec Deinterlacer
Int -> ReadS Deinterlacer
ReadS [Deinterlacer]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [Deinterlacer]
$creadListPrec :: ReadPrec [Deinterlacer]
readPrec :: ReadPrec Deinterlacer
$creadPrec :: ReadPrec Deinterlacer
readList :: ReadS [Deinterlacer]
$creadList :: ReadS [Deinterlacer]
readsPrec :: Int -> ReadS Deinterlacer
$creadsPrec :: Int -> ReadS Deinterlacer
Prelude.Read, Int -> Deinterlacer -> ShowS
[Deinterlacer] -> ShowS
Deinterlacer -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Deinterlacer] -> ShowS
$cshowList :: [Deinterlacer] -> ShowS
show :: Deinterlacer -> String
$cshow :: Deinterlacer -> String
showsPrec :: Int -> Deinterlacer -> ShowS
$cshowsPrec :: Int -> Deinterlacer -> ShowS
Prelude.Show, forall x. Rep Deinterlacer x -> Deinterlacer
forall x. Deinterlacer -> Rep Deinterlacer x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep Deinterlacer x -> Deinterlacer
$cfrom :: forall x. Deinterlacer -> Rep Deinterlacer x
Prelude.Generic)
newDeinterlacer ::
Deinterlacer
newDeinterlacer :: Deinterlacer
newDeinterlacer =
Deinterlacer'
{ $sel:algorithm:Deinterlacer' :: Maybe DeinterlaceAlgorithm
algorithm = forall a. Maybe a
Prelude.Nothing,
$sel:control:Deinterlacer' :: Maybe DeinterlacerControl
control = forall a. Maybe a
Prelude.Nothing,
$sel:mode:Deinterlacer' :: Maybe DeinterlacerMode
mode = forall a. Maybe a
Prelude.Nothing
}
deinterlacer_algorithm :: Lens.Lens' Deinterlacer (Prelude.Maybe DeinterlaceAlgorithm)
deinterlacer_algorithm :: Lens' Deinterlacer (Maybe DeinterlaceAlgorithm)
deinterlacer_algorithm = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Deinterlacer' {Maybe DeinterlaceAlgorithm
algorithm :: Maybe DeinterlaceAlgorithm
$sel:algorithm:Deinterlacer' :: Deinterlacer -> Maybe DeinterlaceAlgorithm
algorithm} -> Maybe DeinterlaceAlgorithm
algorithm) (\s :: Deinterlacer
s@Deinterlacer' {} Maybe DeinterlaceAlgorithm
a -> Deinterlacer
s {$sel:algorithm:Deinterlacer' :: Maybe DeinterlaceAlgorithm
algorithm = Maybe DeinterlaceAlgorithm
a} :: Deinterlacer)
deinterlacer_control :: Lens.Lens' Deinterlacer (Prelude.Maybe DeinterlacerControl)
deinterlacer_control :: Lens' Deinterlacer (Maybe DeinterlacerControl)
deinterlacer_control = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Deinterlacer' {Maybe DeinterlacerControl
control :: Maybe DeinterlacerControl
$sel:control:Deinterlacer' :: Deinterlacer -> Maybe DeinterlacerControl
control} -> Maybe DeinterlacerControl
control) (\s :: Deinterlacer
s@Deinterlacer' {} Maybe DeinterlacerControl
a -> Deinterlacer
s {$sel:control:Deinterlacer' :: Maybe DeinterlacerControl
control = Maybe DeinterlacerControl
a} :: Deinterlacer)
deinterlacer_mode :: Lens.Lens' Deinterlacer (Prelude.Maybe DeinterlacerMode)
deinterlacer_mode :: Lens' Deinterlacer (Maybe DeinterlacerMode)
deinterlacer_mode = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Deinterlacer' {Maybe DeinterlacerMode
mode :: Maybe DeinterlacerMode
$sel:mode:Deinterlacer' :: Deinterlacer -> Maybe DeinterlacerMode
mode} -> Maybe DeinterlacerMode
mode) (\s :: Deinterlacer
s@Deinterlacer' {} Maybe DeinterlacerMode
a -> Deinterlacer
s {$sel:mode:Deinterlacer' :: Maybe DeinterlacerMode
mode = Maybe DeinterlacerMode
a} :: Deinterlacer)
instance Data.FromJSON Deinterlacer where
parseJSON :: Value -> Parser Deinterlacer
parseJSON =
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
String
"Deinterlacer"
( \Object
x ->
Maybe DeinterlaceAlgorithm
-> Maybe DeinterlacerControl
-> Maybe DeinterlacerMode
-> Deinterlacer
Deinterlacer'
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"algorithm")
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"control")
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"mode")
)
instance Prelude.Hashable Deinterlacer where
hashWithSalt :: Int -> Deinterlacer -> Int
hashWithSalt Int
_salt Deinterlacer' {Maybe DeinterlaceAlgorithm
Maybe DeinterlacerControl
Maybe DeinterlacerMode
mode :: Maybe DeinterlacerMode
control :: Maybe DeinterlacerControl
algorithm :: Maybe DeinterlaceAlgorithm
$sel:mode:Deinterlacer' :: Deinterlacer -> Maybe DeinterlacerMode
$sel:control:Deinterlacer' :: Deinterlacer -> Maybe DeinterlacerControl
$sel:algorithm:Deinterlacer' :: Deinterlacer -> Maybe DeinterlaceAlgorithm
..} =
Int
_salt
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe DeinterlaceAlgorithm
algorithm
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe DeinterlacerControl
control
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe DeinterlacerMode
mode
instance Prelude.NFData Deinterlacer where
rnf :: Deinterlacer -> ()
rnf Deinterlacer' {Maybe DeinterlaceAlgorithm
Maybe DeinterlacerControl
Maybe DeinterlacerMode
mode :: Maybe DeinterlacerMode
control :: Maybe DeinterlacerControl
algorithm :: Maybe DeinterlaceAlgorithm
$sel:mode:Deinterlacer' :: Deinterlacer -> Maybe DeinterlacerMode
$sel:control:Deinterlacer' :: Deinterlacer -> Maybe DeinterlacerControl
$sel:algorithm:Deinterlacer' :: Deinterlacer -> Maybe DeinterlaceAlgorithm
..} =
forall a. NFData a => a -> ()
Prelude.rnf Maybe DeinterlaceAlgorithm
algorithm
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe DeinterlacerControl
control
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe DeinterlacerMode
mode
instance Data.ToJSON Deinterlacer where
toJSON :: Deinterlacer -> Value
toJSON Deinterlacer' {Maybe DeinterlaceAlgorithm
Maybe DeinterlacerControl
Maybe DeinterlacerMode
mode :: Maybe DeinterlacerMode
control :: Maybe DeinterlacerControl
algorithm :: Maybe DeinterlaceAlgorithm
$sel:mode:Deinterlacer' :: Deinterlacer -> Maybe DeinterlacerMode
$sel:control:Deinterlacer' :: Deinterlacer -> Maybe DeinterlacerControl
$sel:algorithm:Deinterlacer' :: Deinterlacer -> Maybe DeinterlaceAlgorithm
..} =
[Pair] -> Value
Data.object
( forall a. [Maybe a] -> [a]
Prelude.catMaybes
[ (Key
"algorithm" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe DeinterlaceAlgorithm
algorithm,
(Key
"control" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe DeinterlacerControl
control,
(Key
"mode" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe DeinterlacerMode
mode
]
)