{-# 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 #-}

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

-- |
-- Module      : Amazonka.MediaConvert.Types.VideoPreprocessor
-- 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.VideoPreprocessor 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.ColorCorrector
import Amazonka.MediaConvert.Types.Deinterlacer
import Amazonka.MediaConvert.Types.DolbyVision
import Amazonka.MediaConvert.Types.Hdr10Plus
import Amazonka.MediaConvert.Types.ImageInserter
import Amazonka.MediaConvert.Types.NoiseReducer
import Amazonka.MediaConvert.Types.PartnerWatermarking
import Amazonka.MediaConvert.Types.TimecodeBurnin
import qualified Amazonka.Prelude as Prelude

-- | Find additional transcoding features under Preprocessors
-- (VideoPreprocessors). Enable the features at each output individually.
-- These features are disabled by default.
--
-- /See:/ 'newVideoPreprocessor' smart constructor.
data VideoPreprocessor = VideoPreprocessor'
  { -- | Use these settings to convert the color space or to modify properties
    -- such as hue and contrast for this output. For more information, see
    -- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/converting-the-color-space.html.
    VideoPreprocessor -> Maybe ColorCorrector
colorCorrector :: Prelude.Maybe ColorCorrector,
    -- | Use the deinterlacer to produce smoother motion and a clearer picture.
    -- For more information, see
    -- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/working-with-scan-type.html.
    VideoPreprocessor -> Maybe Deinterlacer
deinterlacer :: Prelude.Maybe Deinterlacer,
    -- | Enable Dolby Vision feature to produce Dolby Vision compatible video
    -- output.
    VideoPreprocessor -> Maybe DolbyVision
dolbyVision :: Prelude.Maybe DolbyVision,
    -- | Enable HDR10+ analyis and metadata injection. Compatible with HEVC only.
    VideoPreprocessor -> Maybe Hdr10Plus
hdr10Plus :: Prelude.Maybe Hdr10Plus,
    -- | Enable the Image inserter (ImageInserter) feature to include a graphic
    -- overlay on your video. Enable or disable this feature for each output
    -- individually. This setting is disabled by default.
    VideoPreprocessor -> Maybe ImageInserter
imageInserter :: Prelude.Maybe ImageInserter,
    -- | Enable the Noise reducer (NoiseReducer) feature to remove noise from
    -- your video output if necessary. Enable or disable this feature for each
    -- output individually. This setting is disabled by default.
    VideoPreprocessor -> Maybe NoiseReducer
noiseReducer :: Prelude.Maybe NoiseReducer,
    -- | If you work with a third party video watermarking partner, use the group
    -- of settings that correspond with your watermarking partner to include
    -- watermarks in your output.
    VideoPreprocessor -> Maybe PartnerWatermarking
partnerWatermarking :: Prelude.Maybe PartnerWatermarking,
    -- | Settings for burning the output timecode and specified prefix into the
    -- output.
    VideoPreprocessor -> Maybe TimecodeBurnin
timecodeBurnin :: Prelude.Maybe TimecodeBurnin
  }
  deriving (VideoPreprocessor -> VideoPreprocessor -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: VideoPreprocessor -> VideoPreprocessor -> Bool
$c/= :: VideoPreprocessor -> VideoPreprocessor -> Bool
== :: VideoPreprocessor -> VideoPreprocessor -> Bool
$c== :: VideoPreprocessor -> VideoPreprocessor -> Bool
Prelude.Eq, ReadPrec [VideoPreprocessor]
ReadPrec VideoPreprocessor
Int -> ReadS VideoPreprocessor
ReadS [VideoPreprocessor]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [VideoPreprocessor]
$creadListPrec :: ReadPrec [VideoPreprocessor]
readPrec :: ReadPrec VideoPreprocessor
$creadPrec :: ReadPrec VideoPreprocessor
readList :: ReadS [VideoPreprocessor]
$creadList :: ReadS [VideoPreprocessor]
readsPrec :: Int -> ReadS VideoPreprocessor
$creadsPrec :: Int -> ReadS VideoPreprocessor
Prelude.Read, Int -> VideoPreprocessor -> ShowS
[VideoPreprocessor] -> ShowS
VideoPreprocessor -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [VideoPreprocessor] -> ShowS
$cshowList :: [VideoPreprocessor] -> ShowS
show :: VideoPreprocessor -> String
$cshow :: VideoPreprocessor -> String
showsPrec :: Int -> VideoPreprocessor -> ShowS
$cshowsPrec :: Int -> VideoPreprocessor -> ShowS
Prelude.Show, forall x. Rep VideoPreprocessor x -> VideoPreprocessor
forall x. VideoPreprocessor -> Rep VideoPreprocessor x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep VideoPreprocessor x -> VideoPreprocessor
$cfrom :: forall x. VideoPreprocessor -> Rep VideoPreprocessor x
Prelude.Generic)

-- |
-- Create a value of 'VideoPreprocessor' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'colorCorrector', 'videoPreprocessor_colorCorrector' - Use these settings to convert the color space or to modify properties
-- such as hue and contrast for this output. For more information, see
-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/converting-the-color-space.html.
--
-- 'deinterlacer', 'videoPreprocessor_deinterlacer' - Use the deinterlacer to produce smoother motion and a clearer picture.
-- For more information, see
-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/working-with-scan-type.html.
--
-- 'dolbyVision', 'videoPreprocessor_dolbyVision' - Enable Dolby Vision feature to produce Dolby Vision compatible video
-- output.
--
-- 'hdr10Plus', 'videoPreprocessor_hdr10Plus' - Enable HDR10+ analyis and metadata injection. Compatible with HEVC only.
--
-- 'imageInserter', 'videoPreprocessor_imageInserter' - Enable the Image inserter (ImageInserter) feature to include a graphic
-- overlay on your video. Enable or disable this feature for each output
-- individually. This setting is disabled by default.
--
-- 'noiseReducer', 'videoPreprocessor_noiseReducer' - Enable the Noise reducer (NoiseReducer) feature to remove noise from
-- your video output if necessary. Enable or disable this feature for each
-- output individually. This setting is disabled by default.
--
-- 'partnerWatermarking', 'videoPreprocessor_partnerWatermarking' - If you work with a third party video watermarking partner, use the group
-- of settings that correspond with your watermarking partner to include
-- watermarks in your output.
--
-- 'timecodeBurnin', 'videoPreprocessor_timecodeBurnin' - Settings for burning the output timecode and specified prefix into the
-- output.
newVideoPreprocessor ::
  VideoPreprocessor
newVideoPreprocessor :: VideoPreprocessor
newVideoPreprocessor =
  VideoPreprocessor'
    { $sel:colorCorrector:VideoPreprocessor' :: Maybe ColorCorrector
colorCorrector =
        forall a. Maybe a
Prelude.Nothing,
      $sel:deinterlacer:VideoPreprocessor' :: Maybe Deinterlacer
deinterlacer = forall a. Maybe a
Prelude.Nothing,
      $sel:dolbyVision:VideoPreprocessor' :: Maybe DolbyVision
dolbyVision = forall a. Maybe a
Prelude.Nothing,
      $sel:hdr10Plus:VideoPreprocessor' :: Maybe Hdr10Plus
hdr10Plus = forall a. Maybe a
Prelude.Nothing,
      $sel:imageInserter:VideoPreprocessor' :: Maybe ImageInserter
imageInserter = forall a. Maybe a
Prelude.Nothing,
      $sel:noiseReducer:VideoPreprocessor' :: Maybe NoiseReducer
noiseReducer = forall a. Maybe a
Prelude.Nothing,
      $sel:partnerWatermarking:VideoPreprocessor' :: Maybe PartnerWatermarking
partnerWatermarking = forall a. Maybe a
Prelude.Nothing,
      $sel:timecodeBurnin:VideoPreprocessor' :: Maybe TimecodeBurnin
timecodeBurnin = forall a. Maybe a
Prelude.Nothing
    }

-- | Use these settings to convert the color space or to modify properties
-- such as hue and contrast for this output. For more information, see
-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/converting-the-color-space.html.
videoPreprocessor_colorCorrector :: Lens.Lens' VideoPreprocessor (Prelude.Maybe ColorCorrector)
videoPreprocessor_colorCorrector :: Lens' VideoPreprocessor (Maybe ColorCorrector)
videoPreprocessor_colorCorrector = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\VideoPreprocessor' {Maybe ColorCorrector
colorCorrector :: Maybe ColorCorrector
$sel:colorCorrector:VideoPreprocessor' :: VideoPreprocessor -> Maybe ColorCorrector
colorCorrector} -> Maybe ColorCorrector
colorCorrector) (\s :: VideoPreprocessor
s@VideoPreprocessor' {} Maybe ColorCorrector
a -> VideoPreprocessor
s {$sel:colorCorrector:VideoPreprocessor' :: Maybe ColorCorrector
colorCorrector = Maybe ColorCorrector
a} :: VideoPreprocessor)

-- | Use the deinterlacer to produce smoother motion and a clearer picture.
-- For more information, see
-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/working-with-scan-type.html.
videoPreprocessor_deinterlacer :: Lens.Lens' VideoPreprocessor (Prelude.Maybe Deinterlacer)
videoPreprocessor_deinterlacer :: Lens' VideoPreprocessor (Maybe Deinterlacer)
videoPreprocessor_deinterlacer = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\VideoPreprocessor' {Maybe Deinterlacer
deinterlacer :: Maybe Deinterlacer
$sel:deinterlacer:VideoPreprocessor' :: VideoPreprocessor -> Maybe Deinterlacer
deinterlacer} -> Maybe Deinterlacer
deinterlacer) (\s :: VideoPreprocessor
s@VideoPreprocessor' {} Maybe Deinterlacer
a -> VideoPreprocessor
s {$sel:deinterlacer:VideoPreprocessor' :: Maybe Deinterlacer
deinterlacer = Maybe Deinterlacer
a} :: VideoPreprocessor)

-- | Enable Dolby Vision feature to produce Dolby Vision compatible video
-- output.
videoPreprocessor_dolbyVision :: Lens.Lens' VideoPreprocessor (Prelude.Maybe DolbyVision)
videoPreprocessor_dolbyVision :: Lens' VideoPreprocessor (Maybe DolbyVision)
videoPreprocessor_dolbyVision = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\VideoPreprocessor' {Maybe DolbyVision
dolbyVision :: Maybe DolbyVision
$sel:dolbyVision:VideoPreprocessor' :: VideoPreprocessor -> Maybe DolbyVision
dolbyVision} -> Maybe DolbyVision
dolbyVision) (\s :: VideoPreprocessor
s@VideoPreprocessor' {} Maybe DolbyVision
a -> VideoPreprocessor
s {$sel:dolbyVision:VideoPreprocessor' :: Maybe DolbyVision
dolbyVision = Maybe DolbyVision
a} :: VideoPreprocessor)

-- | Enable HDR10+ analyis and metadata injection. Compatible with HEVC only.
videoPreprocessor_hdr10Plus :: Lens.Lens' VideoPreprocessor (Prelude.Maybe Hdr10Plus)
videoPreprocessor_hdr10Plus :: Lens' VideoPreprocessor (Maybe Hdr10Plus)
videoPreprocessor_hdr10Plus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\VideoPreprocessor' {Maybe Hdr10Plus
hdr10Plus :: Maybe Hdr10Plus
$sel:hdr10Plus:VideoPreprocessor' :: VideoPreprocessor -> Maybe Hdr10Plus
hdr10Plus} -> Maybe Hdr10Plus
hdr10Plus) (\s :: VideoPreprocessor
s@VideoPreprocessor' {} Maybe Hdr10Plus
a -> VideoPreprocessor
s {$sel:hdr10Plus:VideoPreprocessor' :: Maybe Hdr10Plus
hdr10Plus = Maybe Hdr10Plus
a} :: VideoPreprocessor)

-- | Enable the Image inserter (ImageInserter) feature to include a graphic
-- overlay on your video. Enable or disable this feature for each output
-- individually. This setting is disabled by default.
videoPreprocessor_imageInserter :: Lens.Lens' VideoPreprocessor (Prelude.Maybe ImageInserter)
videoPreprocessor_imageInserter :: Lens' VideoPreprocessor (Maybe ImageInserter)
videoPreprocessor_imageInserter = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\VideoPreprocessor' {Maybe ImageInserter
imageInserter :: Maybe ImageInserter
$sel:imageInserter:VideoPreprocessor' :: VideoPreprocessor -> Maybe ImageInserter
imageInserter} -> Maybe ImageInserter
imageInserter) (\s :: VideoPreprocessor
s@VideoPreprocessor' {} Maybe ImageInserter
a -> VideoPreprocessor
s {$sel:imageInserter:VideoPreprocessor' :: Maybe ImageInserter
imageInserter = Maybe ImageInserter
a} :: VideoPreprocessor)

-- | Enable the Noise reducer (NoiseReducer) feature to remove noise from
-- your video output if necessary. Enable or disable this feature for each
-- output individually. This setting is disabled by default.
videoPreprocessor_noiseReducer :: Lens.Lens' VideoPreprocessor (Prelude.Maybe NoiseReducer)
videoPreprocessor_noiseReducer :: Lens' VideoPreprocessor (Maybe NoiseReducer)
videoPreprocessor_noiseReducer = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\VideoPreprocessor' {Maybe NoiseReducer
noiseReducer :: Maybe NoiseReducer
$sel:noiseReducer:VideoPreprocessor' :: VideoPreprocessor -> Maybe NoiseReducer
noiseReducer} -> Maybe NoiseReducer
noiseReducer) (\s :: VideoPreprocessor
s@VideoPreprocessor' {} Maybe NoiseReducer
a -> VideoPreprocessor
s {$sel:noiseReducer:VideoPreprocessor' :: Maybe NoiseReducer
noiseReducer = Maybe NoiseReducer
a} :: VideoPreprocessor)

-- | If you work with a third party video watermarking partner, use the group
-- of settings that correspond with your watermarking partner to include
-- watermarks in your output.
videoPreprocessor_partnerWatermarking :: Lens.Lens' VideoPreprocessor (Prelude.Maybe PartnerWatermarking)
videoPreprocessor_partnerWatermarking :: Lens' VideoPreprocessor (Maybe PartnerWatermarking)
videoPreprocessor_partnerWatermarking = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\VideoPreprocessor' {Maybe PartnerWatermarking
partnerWatermarking :: Maybe PartnerWatermarking
$sel:partnerWatermarking:VideoPreprocessor' :: VideoPreprocessor -> Maybe PartnerWatermarking
partnerWatermarking} -> Maybe PartnerWatermarking
partnerWatermarking) (\s :: VideoPreprocessor
s@VideoPreprocessor' {} Maybe PartnerWatermarking
a -> VideoPreprocessor
s {$sel:partnerWatermarking:VideoPreprocessor' :: Maybe PartnerWatermarking
partnerWatermarking = Maybe PartnerWatermarking
a} :: VideoPreprocessor)

-- | Settings for burning the output timecode and specified prefix into the
-- output.
videoPreprocessor_timecodeBurnin :: Lens.Lens' VideoPreprocessor (Prelude.Maybe TimecodeBurnin)
videoPreprocessor_timecodeBurnin :: Lens' VideoPreprocessor (Maybe TimecodeBurnin)
videoPreprocessor_timecodeBurnin = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\VideoPreprocessor' {Maybe TimecodeBurnin
timecodeBurnin :: Maybe TimecodeBurnin
$sel:timecodeBurnin:VideoPreprocessor' :: VideoPreprocessor -> Maybe TimecodeBurnin
timecodeBurnin} -> Maybe TimecodeBurnin
timecodeBurnin) (\s :: VideoPreprocessor
s@VideoPreprocessor' {} Maybe TimecodeBurnin
a -> VideoPreprocessor
s {$sel:timecodeBurnin:VideoPreprocessor' :: Maybe TimecodeBurnin
timecodeBurnin = Maybe TimecodeBurnin
a} :: VideoPreprocessor)

instance Data.FromJSON VideoPreprocessor where
  parseJSON :: Value -> Parser VideoPreprocessor
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"VideoPreprocessor"
      ( \Object
x ->
          Maybe ColorCorrector
-> Maybe Deinterlacer
-> Maybe DolbyVision
-> Maybe Hdr10Plus
-> Maybe ImageInserter
-> Maybe NoiseReducer
-> Maybe PartnerWatermarking
-> Maybe TimecodeBurnin
-> VideoPreprocessor
VideoPreprocessor'
            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
"colorCorrector")
            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
"deinterlacer")
            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
"dolbyVision")
            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
"hdr10Plus")
            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
"imageInserter")
            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
"noiseReducer")
            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
"partnerWatermarking")
            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
"timecodeBurnin")
      )

instance Prelude.Hashable VideoPreprocessor where
  hashWithSalt :: Int -> VideoPreprocessor -> Int
hashWithSalt Int
_salt VideoPreprocessor' {Maybe Deinterlacer
Maybe DolbyVision
Maybe Hdr10Plus
Maybe ImageInserter
Maybe NoiseReducer
Maybe ColorCorrector
Maybe TimecodeBurnin
Maybe PartnerWatermarking
timecodeBurnin :: Maybe TimecodeBurnin
partnerWatermarking :: Maybe PartnerWatermarking
noiseReducer :: Maybe NoiseReducer
imageInserter :: Maybe ImageInserter
hdr10Plus :: Maybe Hdr10Plus
dolbyVision :: Maybe DolbyVision
deinterlacer :: Maybe Deinterlacer
colorCorrector :: Maybe ColorCorrector
$sel:timecodeBurnin:VideoPreprocessor' :: VideoPreprocessor -> Maybe TimecodeBurnin
$sel:partnerWatermarking:VideoPreprocessor' :: VideoPreprocessor -> Maybe PartnerWatermarking
$sel:noiseReducer:VideoPreprocessor' :: VideoPreprocessor -> Maybe NoiseReducer
$sel:imageInserter:VideoPreprocessor' :: VideoPreprocessor -> Maybe ImageInserter
$sel:hdr10Plus:VideoPreprocessor' :: VideoPreprocessor -> Maybe Hdr10Plus
$sel:dolbyVision:VideoPreprocessor' :: VideoPreprocessor -> Maybe DolbyVision
$sel:deinterlacer:VideoPreprocessor' :: VideoPreprocessor -> Maybe Deinterlacer
$sel:colorCorrector:VideoPreprocessor' :: VideoPreprocessor -> Maybe ColorCorrector
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ColorCorrector
colorCorrector
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Deinterlacer
deinterlacer
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe DolbyVision
dolbyVision
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Hdr10Plus
hdr10Plus
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ImageInserter
imageInserter
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe NoiseReducer
noiseReducer
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe PartnerWatermarking
partnerWatermarking
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe TimecodeBurnin
timecodeBurnin

instance Prelude.NFData VideoPreprocessor where
  rnf :: VideoPreprocessor -> ()
rnf VideoPreprocessor' {Maybe Deinterlacer
Maybe DolbyVision
Maybe Hdr10Plus
Maybe ImageInserter
Maybe NoiseReducer
Maybe ColorCorrector
Maybe TimecodeBurnin
Maybe PartnerWatermarking
timecodeBurnin :: Maybe TimecodeBurnin
partnerWatermarking :: Maybe PartnerWatermarking
noiseReducer :: Maybe NoiseReducer
imageInserter :: Maybe ImageInserter
hdr10Plus :: Maybe Hdr10Plus
dolbyVision :: Maybe DolbyVision
deinterlacer :: Maybe Deinterlacer
colorCorrector :: Maybe ColorCorrector
$sel:timecodeBurnin:VideoPreprocessor' :: VideoPreprocessor -> Maybe TimecodeBurnin
$sel:partnerWatermarking:VideoPreprocessor' :: VideoPreprocessor -> Maybe PartnerWatermarking
$sel:noiseReducer:VideoPreprocessor' :: VideoPreprocessor -> Maybe NoiseReducer
$sel:imageInserter:VideoPreprocessor' :: VideoPreprocessor -> Maybe ImageInserter
$sel:hdr10Plus:VideoPreprocessor' :: VideoPreprocessor -> Maybe Hdr10Plus
$sel:dolbyVision:VideoPreprocessor' :: VideoPreprocessor -> Maybe DolbyVision
$sel:deinterlacer:VideoPreprocessor' :: VideoPreprocessor -> Maybe Deinterlacer
$sel:colorCorrector:VideoPreprocessor' :: VideoPreprocessor -> Maybe ColorCorrector
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe ColorCorrector
colorCorrector
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Deinterlacer
deinterlacer
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe DolbyVision
dolbyVision
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Hdr10Plus
hdr10Plus
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ImageInserter
imageInserter
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe NoiseReducer
noiseReducer
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe PartnerWatermarking
partnerWatermarking
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe TimecodeBurnin
timecodeBurnin

instance Data.ToJSON VideoPreprocessor where
  toJSON :: VideoPreprocessor -> Value
toJSON VideoPreprocessor' {Maybe Deinterlacer
Maybe DolbyVision
Maybe Hdr10Plus
Maybe ImageInserter
Maybe NoiseReducer
Maybe ColorCorrector
Maybe TimecodeBurnin
Maybe PartnerWatermarking
timecodeBurnin :: Maybe TimecodeBurnin
partnerWatermarking :: Maybe PartnerWatermarking
noiseReducer :: Maybe NoiseReducer
imageInserter :: Maybe ImageInserter
hdr10Plus :: Maybe Hdr10Plus
dolbyVision :: Maybe DolbyVision
deinterlacer :: Maybe Deinterlacer
colorCorrector :: Maybe ColorCorrector
$sel:timecodeBurnin:VideoPreprocessor' :: VideoPreprocessor -> Maybe TimecodeBurnin
$sel:partnerWatermarking:VideoPreprocessor' :: VideoPreprocessor -> Maybe PartnerWatermarking
$sel:noiseReducer:VideoPreprocessor' :: VideoPreprocessor -> Maybe NoiseReducer
$sel:imageInserter:VideoPreprocessor' :: VideoPreprocessor -> Maybe ImageInserter
$sel:hdr10Plus:VideoPreprocessor' :: VideoPreprocessor -> Maybe Hdr10Plus
$sel:dolbyVision:VideoPreprocessor' :: VideoPreprocessor -> Maybe DolbyVision
$sel:deinterlacer:VideoPreprocessor' :: VideoPreprocessor -> Maybe Deinterlacer
$sel:colorCorrector:VideoPreprocessor' :: VideoPreprocessor -> Maybe ColorCorrector
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"colorCorrector" 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 ColorCorrector
colorCorrector,
            (Key
"deinterlacer" 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 Deinterlacer
deinterlacer,
            (Key
"dolbyVision" 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 DolbyVision
dolbyVision,
            (Key
"hdr10Plus" 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 Hdr10Plus
hdr10Plus,
            (Key
"imageInserter" 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 ImageInserter
imageInserter,
            (Key
"noiseReducer" 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 NoiseReducer
noiseReducer,
            (Key
"partnerWatermarking" 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 PartnerWatermarking
partnerWatermarking,
            (Key
"timecodeBurnin" 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 TimecodeBurnin
timecodeBurnin
          ]
      )