{-# 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.Input
-- 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.Input where

import qualified Amazonka.Core as Core
import qualified Amazonka.Lens as Lens
import Amazonka.MediaConvert.Types.AudioSelector
import Amazonka.MediaConvert.Types.AudioSelectorGroup
import Amazonka.MediaConvert.Types.CaptionSelector
import Amazonka.MediaConvert.Types.ImageInserter
import Amazonka.MediaConvert.Types.InputClipping
import Amazonka.MediaConvert.Types.InputDeblockFilter
import Amazonka.MediaConvert.Types.InputDecryptionSettings
import Amazonka.MediaConvert.Types.InputDenoiseFilter
import Amazonka.MediaConvert.Types.InputFilterEnable
import Amazonka.MediaConvert.Types.InputPsiControl
import Amazonka.MediaConvert.Types.InputScanType
import Amazonka.MediaConvert.Types.InputTimecodeSource
import Amazonka.MediaConvert.Types.Rectangle
import Amazonka.MediaConvert.Types.VideoSelector
import qualified Amazonka.Prelude as Prelude

-- | Use inputs to define the source files used in your transcoding job. For
-- more information, see
-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/specify-input-settings.html.
-- You can use multiple video inputs to do input stitching. For more
-- information, see
-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/assembling-multiple-inputs-and-input-clips.html
--
-- /See:/ 'newInput' smart constructor.
data Input = Input'
  { -- | Input video selectors contain the video settings for the input. Each of
    -- your inputs can have up to one video selector.
    Input -> Maybe VideoSelector
videoSelector :: Prelude.Maybe VideoSelector,
    -- | Provide a list of any necessary supplemental IMPs. You need supplemental
    -- IMPs if the CPL that you\'re using for your input is in an incomplete
    -- IMP. Specify either the supplemental IMP directories with a trailing
    -- slash or the ASSETMAP.xml files. For example [\"s3:\/\/bucket\/ov\/\",
    -- \"s3:\/\/bucket\/vf2\/ASSETMAP.xml\"]. You don\'t need to specify the
    -- IMP that contains your input CPL, because the service automatically
    -- detects it.
    Input -> Maybe [Text]
supplementalImps :: Prelude.Maybe [Prelude.Text],
    -- | Use Program (programNumber) to select a specific program from within a
    -- multi-program transport stream. Note that Quad 4K is not currently
    -- supported. Default is the first program within the transport stream. If
    -- the program you specify doesn\'t exist, the transcoding service will use
    -- this default.
    Input -> Maybe Natural
programNumber :: Prelude.Maybe Prelude.Natural,
    -- | Use audio selector groups to combine multiple sidecar audio inputs so
    -- that you can assign them to a single output audio tab
    -- (AudioDescription). Note that, if you\'re working with embedded audio,
    -- it\'s simpler to assign multiple input tracks into a single audio
    -- selector rather than use an audio selector group.
    Input -> Maybe (HashMap Text AudioSelectorGroup)
audioSelectorGroups :: Prelude.Maybe (Prelude.HashMap Prelude.Text AudioSelectorGroup),
    -- | Use this Timecode source setting, located under the input settings
    -- (InputTimecodeSource), to specify how the service counts input video
    -- frames. This input frame count affects only the behavior of features
    -- that apply to a single input at a time, such as input clipping and
    -- synchronizing some captions formats. Choose Embedded (EMBEDDED) to use
    -- the timecodes in your input video. Choose Start at zero (ZEROBASED) to
    -- start the first frame at zero. Choose Specified start (SPECIFIEDSTART)
    -- to start the first frame at the timecode that you specify in the setting
    -- Start timecode (timecodeStart). If you don\'t specify a value for
    -- Timecode source, the service will use Embedded by default. For more
    -- information about timecodes, see
    -- https:\/\/docs.aws.amazon.com\/console\/mediaconvert\/timecode.
    Input -> Maybe InputTimecodeSource
timecodeSource :: Prelude.Maybe InputTimecodeSource,
    -- | Use Audio selectors (AudioSelectors) to specify a track or set of tracks
    -- from the input that you will use in your outputs. You can use multiple
    -- Audio selectors per input.
    Input -> Maybe (HashMap Text AudioSelector)
audioSelectors :: Prelude.Maybe (Prelude.HashMap Prelude.Text AudioSelector),
    -- | Settings for decrypting any input files that you encrypt before you
    -- upload them to Amazon S3. MediaConvert can decrypt files only when you
    -- use AWS Key Management Service (KMS) to encrypt the data key that you
    -- use to encrypt your content.
    Input -> Maybe InputDecryptionSettings
decryptionSettings :: Prelude.Maybe InputDecryptionSettings,
    -- | Enable Deblock (InputDeblockFilter) to produce smoother motion in the
    -- output. Default is disabled. Only manually controllable for MPEG2 and
    -- uncompressed video inputs.
    Input -> Maybe InputDeblockFilter
deblockFilter :: Prelude.Maybe InputDeblockFilter,
    -- | (InputClippings) contains sets of start and end times that together
    -- specify a portion of the input to be used in the outputs. If you provide
    -- only a start time, the clip will be the entire input from that point to
    -- the end. If you provide only an end time, it will be the entire input up
    -- to that point. When you specify more than one input clip, the
    -- transcoding service creates the job outputs by stringing the clips
    -- together in the order you specify them.
    Input -> Maybe [InputClipping]
inputClippings :: Prelude.Maybe [InputClipping],
    -- | Use Cropping selection (crop) to specify the video area that the service
    -- will include in the output video frame. If you specify a value here, it
    -- will override any value that you specify in the output setting Cropping
    -- selection (crop).
    Input -> Maybe Rectangle
crop :: Prelude.Maybe Rectangle,
    -- | Enable Denoise (InputDenoiseFilter) to filter noise from the input.
    -- Default is disabled. Only applicable to MPEG2, H.264, H.265, and
    -- uncompressed video inputs.
    Input -> Maybe InputDenoiseFilter
denoiseFilter :: Prelude.Maybe InputDenoiseFilter,
    -- | Enable the image inserter feature to include a graphic overlay on your
    -- video. Enable or disable this feature for each input individually. This
    -- setting is disabled by default.
    Input -> Maybe ImageInserter
imageInserter :: Prelude.Maybe ImageInserter,
    -- | Use Filter strength (FilterStrength) to adjust the magnitude the input
    -- filter settings (Deblock and Denoise). The range is -5 to 5. Default is
    -- 0.
    Input -> Maybe Int
filterStrength :: Prelude.Maybe Prelude.Int,
    -- | Set PSI control (InputPsiControl) for transport stream inputs to specify
    -- which data the demux process to scans. * Ignore PSI - Scan all PIDs for
    -- audio and video. * Use PSI - Scan only PSI data.
    Input -> Maybe InputPsiControl
psiControl :: Prelude.Maybe InputPsiControl,
    -- | Use captions selectors to specify the captions data from your input that
    -- you use in your outputs. You can use up to 20 captions selectors per
    -- input.
    Input -> Maybe (HashMap Text CaptionSelector)
captionSelectors :: Prelude.Maybe (Prelude.HashMap Prelude.Text CaptionSelector),
    -- | Specify the source file for your transcoding job. You can use multiple
    -- inputs in a single job. The service concatenates these inputs, in the
    -- order that you specify them in the job, to create the outputs. If your
    -- input format is IMF, specify your input by providing the path to your
    -- CPL. For example, \"s3:\/\/bucket\/vf\/cpl.xml\". If the CPL is in an
    -- incomplete IMP, make sure to use *Supplemental IMPs* (SupplementalImps)
    -- to specify any supplemental IMPs that contain assets referenced by the
    -- CPL.
    Input -> Maybe Text
fileInput :: Prelude.Maybe Prelude.Text,
    -- | Specify the timecode that you want the service to use for this input\'s
    -- initial frame. To use this setting, you must set the Timecode source
    -- setting, located under the input settings (InputTimecodeSource), to
    -- Specified start (SPECIFIEDSTART). For more information about timecodes,
    -- see https:\/\/docs.aws.amazon.com\/console\/mediaconvert\/timecode.
    Input -> Maybe Text
timecodeStart :: Prelude.Maybe Prelude.Text,
    -- | 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.
    Input -> Maybe InputScanType
inputScanType :: Prelude.Maybe InputScanType,
    -- | Use Selection placement (position) to define the video area in your
    -- output frame. The area outside of the rectangle that you specify here is
    -- black. If you specify a value here, it will override any value that you
    -- specify in the output setting Selection placement (position). If you
    -- specify a value here, this will override any AFD values in your input,
    -- even if you set Respond to AFD (RespondToAfd) to Respond (RESPOND). If
    -- you specify a value here, this will ignore anything that you specify for
    -- the setting Scaling Behavior (scalingBehavior).
    Input -> Maybe Rectangle
position :: Prelude.Maybe Rectangle,
    -- | 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.
    Input -> Maybe InputFilterEnable
filterEnable :: Prelude.Maybe InputFilterEnable
  }
  deriving (Input -> Input -> Bool
(Input -> Input -> Bool) -> (Input -> Input -> Bool) -> Eq Input
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Input -> Input -> Bool
$c/= :: Input -> Input -> Bool
== :: Input -> Input -> Bool
$c== :: Input -> Input -> Bool
Prelude.Eq, ReadPrec [Input]
ReadPrec Input
Int -> ReadS Input
ReadS [Input]
(Int -> ReadS Input)
-> ReadS [Input]
-> ReadPrec Input
-> ReadPrec [Input]
-> Read Input
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [Input]
$creadListPrec :: ReadPrec [Input]
readPrec :: ReadPrec Input
$creadPrec :: ReadPrec Input
readList :: ReadS [Input]
$creadList :: ReadS [Input]
readsPrec :: Int -> ReadS Input
$creadsPrec :: Int -> ReadS Input
Prelude.Read, Int -> Input -> ShowS
[Input] -> ShowS
Input -> String
(Int -> Input -> ShowS)
-> (Input -> String) -> ([Input] -> ShowS) -> Show Input
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Input] -> ShowS
$cshowList :: [Input] -> ShowS
show :: Input -> String
$cshow :: Input -> String
showsPrec :: Int -> Input -> ShowS
$cshowsPrec :: Int -> Input -> ShowS
Prelude.Show, (forall x. Input -> Rep Input x)
-> (forall x. Rep Input x -> Input) -> Generic Input
forall x. Rep Input x -> Input
forall x. Input -> Rep Input x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep Input x -> Input
$cfrom :: forall x. Input -> Rep Input x
Prelude.Generic)

-- |
-- Create a value of 'Input' 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:
--
-- 'videoSelector', 'input_videoSelector' - Input video selectors contain the video settings for the input. Each of
-- your inputs can have up to one video selector.
--
-- 'supplementalImps', 'input_supplementalImps' - Provide a list of any necessary supplemental IMPs. You need supplemental
-- IMPs if the CPL that you\'re using for your input is in an incomplete
-- IMP. Specify either the supplemental IMP directories with a trailing
-- slash or the ASSETMAP.xml files. For example [\"s3:\/\/bucket\/ov\/\",
-- \"s3:\/\/bucket\/vf2\/ASSETMAP.xml\"]. You don\'t need to specify the
-- IMP that contains your input CPL, because the service automatically
-- detects it.
--
-- 'programNumber', 'input_programNumber' - Use Program (programNumber) to select a specific program from within a
-- multi-program transport stream. Note that Quad 4K is not currently
-- supported. Default is the first program within the transport stream. If
-- the program you specify doesn\'t exist, the transcoding service will use
-- this default.
--
-- 'audioSelectorGroups', 'input_audioSelectorGroups' - Use audio selector groups to combine multiple sidecar audio inputs so
-- that you can assign them to a single output audio tab
-- (AudioDescription). Note that, if you\'re working with embedded audio,
-- it\'s simpler to assign multiple input tracks into a single audio
-- selector rather than use an audio selector group.
--
-- 'timecodeSource', 'input_timecodeSource' - Use this Timecode source setting, located under the input settings
-- (InputTimecodeSource), to specify how the service counts input video
-- frames. This input frame count affects only the behavior of features
-- that apply to a single input at a time, such as input clipping and
-- synchronizing some captions formats. Choose Embedded (EMBEDDED) to use
-- the timecodes in your input video. Choose Start at zero (ZEROBASED) to
-- start the first frame at zero. Choose Specified start (SPECIFIEDSTART)
-- to start the first frame at the timecode that you specify in the setting
-- Start timecode (timecodeStart). If you don\'t specify a value for
-- Timecode source, the service will use Embedded by default. For more
-- information about timecodes, see
-- https:\/\/docs.aws.amazon.com\/console\/mediaconvert\/timecode.
--
-- 'audioSelectors', 'input_audioSelectors' - Use Audio selectors (AudioSelectors) to specify a track or set of tracks
-- from the input that you will use in your outputs. You can use multiple
-- Audio selectors per input.
--
-- 'decryptionSettings', 'input_decryptionSettings' - Settings for decrypting any input files that you encrypt before you
-- upload them to Amazon S3. MediaConvert can decrypt files only when you
-- use AWS Key Management Service (KMS) to encrypt the data key that you
-- use to encrypt your content.
--
-- 'deblockFilter', 'input_deblockFilter' - Enable Deblock (InputDeblockFilter) to produce smoother motion in the
-- output. Default is disabled. Only manually controllable for MPEG2 and
-- uncompressed video inputs.
--
-- 'inputClippings', 'input_inputClippings' - (InputClippings) contains sets of start and end times that together
-- specify a portion of the input to be used in the outputs. If you provide
-- only a start time, the clip will be the entire input from that point to
-- the end. If you provide only an end time, it will be the entire input up
-- to that point. When you specify more than one input clip, the
-- transcoding service creates the job outputs by stringing the clips
-- together in the order you specify them.
--
-- 'crop', 'input_crop' - Use Cropping selection (crop) to specify the video area that the service
-- will include in the output video frame. If you specify a value here, it
-- will override any value that you specify in the output setting Cropping
-- selection (crop).
--
-- 'denoiseFilter', 'input_denoiseFilter' - Enable Denoise (InputDenoiseFilter) to filter noise from the input.
-- Default is disabled. Only applicable to MPEG2, H.264, H.265, and
-- uncompressed video inputs.
--
-- 'imageInserter', 'input_imageInserter' - Enable the image inserter feature to include a graphic overlay on your
-- video. Enable or disable this feature for each input individually. This
-- setting is disabled by default.
--
-- 'filterStrength', 'input_filterStrength' - Use Filter strength (FilterStrength) to adjust the magnitude the input
-- filter settings (Deblock and Denoise). The range is -5 to 5. Default is
-- 0.
--
-- 'psiControl', 'input_psiControl' - Set PSI control (InputPsiControl) for transport stream inputs to specify
-- which data the demux process to scans. * Ignore PSI - Scan all PIDs for
-- audio and video. * Use PSI - Scan only PSI data.
--
-- 'captionSelectors', 'input_captionSelectors' - Use captions selectors to specify the captions data from your input that
-- you use in your outputs. You can use up to 20 captions selectors per
-- input.
--
-- 'fileInput', 'input_fileInput' - Specify the source file for your transcoding job. You can use multiple
-- inputs in a single job. The service concatenates these inputs, in the
-- order that you specify them in the job, to create the outputs. If your
-- input format is IMF, specify your input by providing the path to your
-- CPL. For example, \"s3:\/\/bucket\/vf\/cpl.xml\". If the CPL is in an
-- incomplete IMP, make sure to use *Supplemental IMPs* (SupplementalImps)
-- to specify any supplemental IMPs that contain assets referenced by the
-- CPL.
--
-- 'timecodeStart', 'input_timecodeStart' - Specify the timecode that you want the service to use for this input\'s
-- initial frame. To use this setting, you must set the Timecode source
-- setting, located under the input settings (InputTimecodeSource), to
-- Specified start (SPECIFIEDSTART). For more information about timecodes,
-- see https:\/\/docs.aws.amazon.com\/console\/mediaconvert\/timecode.
--
-- 'inputScanType', 'input_inputScanType' - 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.
--
-- 'position', 'input_position' - Use Selection placement (position) to define the video area in your
-- output frame. The area outside of the rectangle that you specify here is
-- black. If you specify a value here, it will override any value that you
-- specify in the output setting Selection placement (position). If you
-- specify a value here, this will override any AFD values in your input,
-- even if you set Respond to AFD (RespondToAfd) to Respond (RESPOND). If
-- you specify a value here, this will ignore anything that you specify for
-- the setting Scaling Behavior (scalingBehavior).
--
-- 'filterEnable', 'input_filterEnable' - 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.
newInput ::
  Input
newInput :: Input
newInput =
  Input' :: Maybe VideoSelector
-> Maybe [Text]
-> Maybe Natural
-> Maybe (HashMap Text AudioSelectorGroup)
-> Maybe InputTimecodeSource
-> Maybe (HashMap Text AudioSelector)
-> Maybe InputDecryptionSettings
-> Maybe InputDeblockFilter
-> Maybe [InputClipping]
-> Maybe Rectangle
-> Maybe InputDenoiseFilter
-> Maybe ImageInserter
-> Maybe Int
-> Maybe InputPsiControl
-> Maybe (HashMap Text CaptionSelector)
-> Maybe Text
-> Maybe Text
-> Maybe InputScanType
-> Maybe Rectangle
-> Maybe InputFilterEnable
-> Input
Input'
    { $sel:videoSelector:Input' :: Maybe VideoSelector
videoSelector = Maybe VideoSelector
forall a. Maybe a
Prelude.Nothing,
      $sel:supplementalImps:Input' :: Maybe [Text]
supplementalImps = Maybe [Text]
forall a. Maybe a
Prelude.Nothing,
      $sel:programNumber:Input' :: Maybe Natural
programNumber = Maybe Natural
forall a. Maybe a
Prelude.Nothing,
      $sel:audioSelectorGroups:Input' :: Maybe (HashMap Text AudioSelectorGroup)
audioSelectorGroups = Maybe (HashMap Text AudioSelectorGroup)
forall a. Maybe a
Prelude.Nothing,
      $sel:timecodeSource:Input' :: Maybe InputTimecodeSource
timecodeSource = Maybe InputTimecodeSource
forall a. Maybe a
Prelude.Nothing,
      $sel:audioSelectors:Input' :: Maybe (HashMap Text AudioSelector)
audioSelectors = Maybe (HashMap Text AudioSelector)
forall a. Maybe a
Prelude.Nothing,
      $sel:decryptionSettings:Input' :: Maybe InputDecryptionSettings
decryptionSettings = Maybe InputDecryptionSettings
forall a. Maybe a
Prelude.Nothing,
      $sel:deblockFilter:Input' :: Maybe InputDeblockFilter
deblockFilter = Maybe InputDeblockFilter
forall a. Maybe a
Prelude.Nothing,
      $sel:inputClippings:Input' :: Maybe [InputClipping]
inputClippings = Maybe [InputClipping]
forall a. Maybe a
Prelude.Nothing,
      $sel:crop:Input' :: Maybe Rectangle
crop = Maybe Rectangle
forall a. Maybe a
Prelude.Nothing,
      $sel:denoiseFilter:Input' :: Maybe InputDenoiseFilter
denoiseFilter = Maybe InputDenoiseFilter
forall a. Maybe a
Prelude.Nothing,
      $sel:imageInserter:Input' :: Maybe ImageInserter
imageInserter = Maybe ImageInserter
forall a. Maybe a
Prelude.Nothing,
      $sel:filterStrength:Input' :: Maybe Int
filterStrength = Maybe Int
forall a. Maybe a
Prelude.Nothing,
      $sel:psiControl:Input' :: Maybe InputPsiControl
psiControl = Maybe InputPsiControl
forall a. Maybe a
Prelude.Nothing,
      $sel:captionSelectors:Input' :: Maybe (HashMap Text CaptionSelector)
captionSelectors = Maybe (HashMap Text CaptionSelector)
forall a. Maybe a
Prelude.Nothing,
      $sel:fileInput:Input' :: Maybe Text
fileInput = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:timecodeStart:Input' :: Maybe Text
timecodeStart = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:inputScanType:Input' :: Maybe InputScanType
inputScanType = Maybe InputScanType
forall a. Maybe a
Prelude.Nothing,
      $sel:position:Input' :: Maybe Rectangle
position = Maybe Rectangle
forall a. Maybe a
Prelude.Nothing,
      $sel:filterEnable:Input' :: Maybe InputFilterEnable
filterEnable = Maybe InputFilterEnable
forall a. Maybe a
Prelude.Nothing
    }

-- | Input video selectors contain the video settings for the input. Each of
-- your inputs can have up to one video selector.
input_videoSelector :: Lens.Lens' Input (Prelude.Maybe VideoSelector)
input_videoSelector :: (Maybe VideoSelector -> f (Maybe VideoSelector))
-> Input -> f Input
input_videoSelector = (Input -> Maybe VideoSelector)
-> (Input -> Maybe VideoSelector -> Input)
-> Lens Input Input (Maybe VideoSelector) (Maybe VideoSelector)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Input' {Maybe VideoSelector
videoSelector :: Maybe VideoSelector
$sel:videoSelector:Input' :: Input -> Maybe VideoSelector
videoSelector} -> Maybe VideoSelector
videoSelector) (\s :: Input
s@Input' {} Maybe VideoSelector
a -> Input
s {$sel:videoSelector:Input' :: Maybe VideoSelector
videoSelector = Maybe VideoSelector
a} :: Input)

-- | Provide a list of any necessary supplemental IMPs. You need supplemental
-- IMPs if the CPL that you\'re using for your input is in an incomplete
-- IMP. Specify either the supplemental IMP directories with a trailing
-- slash or the ASSETMAP.xml files. For example [\"s3:\/\/bucket\/ov\/\",
-- \"s3:\/\/bucket\/vf2\/ASSETMAP.xml\"]. You don\'t need to specify the
-- IMP that contains your input CPL, because the service automatically
-- detects it.
input_supplementalImps :: Lens.Lens' Input (Prelude.Maybe [Prelude.Text])
input_supplementalImps :: (Maybe [Text] -> f (Maybe [Text])) -> Input -> f Input
input_supplementalImps = (Input -> Maybe [Text])
-> (Input -> Maybe [Text] -> Input)
-> Lens Input Input (Maybe [Text]) (Maybe [Text])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Input' {Maybe [Text]
supplementalImps :: Maybe [Text]
$sel:supplementalImps:Input' :: Input -> Maybe [Text]
supplementalImps} -> Maybe [Text]
supplementalImps) (\s :: Input
s@Input' {} Maybe [Text]
a -> Input
s {$sel:supplementalImps:Input' :: Maybe [Text]
supplementalImps = Maybe [Text]
a} :: Input) ((Maybe [Text] -> f (Maybe [Text])) -> Input -> f Input)
-> ((Maybe [Text] -> f (Maybe [Text]))
    -> Maybe [Text] -> f (Maybe [Text]))
-> (Maybe [Text] -> f (Maybe [Text]))
-> Input
-> f Input
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso [Text] [Text] [Text] [Text]
-> Iso (Maybe [Text]) (Maybe [Text]) (Maybe [Text]) (Maybe [Text])
forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping AnIso [Text] [Text] [Text] [Text]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | Use Program (programNumber) to select a specific program from within a
-- multi-program transport stream. Note that Quad 4K is not currently
-- supported. Default is the first program within the transport stream. If
-- the program you specify doesn\'t exist, the transcoding service will use
-- this default.
input_programNumber :: Lens.Lens' Input (Prelude.Maybe Prelude.Natural)
input_programNumber :: (Maybe Natural -> f (Maybe Natural)) -> Input -> f Input
input_programNumber = (Input -> Maybe Natural)
-> (Input -> Maybe Natural -> Input)
-> Lens Input Input (Maybe Natural) (Maybe Natural)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Input' {Maybe Natural
programNumber :: Maybe Natural
$sel:programNumber:Input' :: Input -> Maybe Natural
programNumber} -> Maybe Natural
programNumber) (\s :: Input
s@Input' {} Maybe Natural
a -> Input
s {$sel:programNumber:Input' :: Maybe Natural
programNumber = Maybe Natural
a} :: Input)

-- | Use audio selector groups to combine multiple sidecar audio inputs so
-- that you can assign them to a single output audio tab
-- (AudioDescription). Note that, if you\'re working with embedded audio,
-- it\'s simpler to assign multiple input tracks into a single audio
-- selector rather than use an audio selector group.
input_audioSelectorGroups :: Lens.Lens' Input (Prelude.Maybe (Prelude.HashMap Prelude.Text AudioSelectorGroup))
input_audioSelectorGroups :: (Maybe (HashMap Text AudioSelectorGroup)
 -> f (Maybe (HashMap Text AudioSelectorGroup)))
-> Input -> f Input
input_audioSelectorGroups = (Input -> Maybe (HashMap Text AudioSelectorGroup))
-> (Input -> Maybe (HashMap Text AudioSelectorGroup) -> Input)
-> Lens
     Input
     Input
     (Maybe (HashMap Text AudioSelectorGroup))
     (Maybe (HashMap Text AudioSelectorGroup))
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Input' {Maybe (HashMap Text AudioSelectorGroup)
audioSelectorGroups :: Maybe (HashMap Text AudioSelectorGroup)
$sel:audioSelectorGroups:Input' :: Input -> Maybe (HashMap Text AudioSelectorGroup)
audioSelectorGroups} -> Maybe (HashMap Text AudioSelectorGroup)
audioSelectorGroups) (\s :: Input
s@Input' {} Maybe (HashMap Text AudioSelectorGroup)
a -> Input
s {$sel:audioSelectorGroups:Input' :: Maybe (HashMap Text AudioSelectorGroup)
audioSelectorGroups = Maybe (HashMap Text AudioSelectorGroup)
a} :: Input) ((Maybe (HashMap Text AudioSelectorGroup)
  -> f (Maybe (HashMap Text AudioSelectorGroup)))
 -> Input -> f Input)
-> ((Maybe (HashMap Text AudioSelectorGroup)
     -> f (Maybe (HashMap Text AudioSelectorGroup)))
    -> Maybe (HashMap Text AudioSelectorGroup)
    -> f (Maybe (HashMap Text AudioSelectorGroup)))
-> (Maybe (HashMap Text AudioSelectorGroup)
    -> f (Maybe (HashMap Text AudioSelectorGroup)))
-> Input
-> f Input
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  (HashMap Text AudioSelectorGroup)
  (HashMap Text AudioSelectorGroup)
  (HashMap Text AudioSelectorGroup)
  (HashMap Text AudioSelectorGroup)
-> Iso
     (Maybe (HashMap Text AudioSelectorGroup))
     (Maybe (HashMap Text AudioSelectorGroup))
     (Maybe (HashMap Text AudioSelectorGroup))
     (Maybe (HashMap Text AudioSelectorGroup))
forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping AnIso
  (HashMap Text AudioSelectorGroup)
  (HashMap Text AudioSelectorGroup)
  (HashMap Text AudioSelectorGroup)
  (HashMap Text AudioSelectorGroup)
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | Use this Timecode source setting, located under the input settings
-- (InputTimecodeSource), to specify how the service counts input video
-- frames. This input frame count affects only the behavior of features
-- that apply to a single input at a time, such as input clipping and
-- synchronizing some captions formats. Choose Embedded (EMBEDDED) to use
-- the timecodes in your input video. Choose Start at zero (ZEROBASED) to
-- start the first frame at zero. Choose Specified start (SPECIFIEDSTART)
-- to start the first frame at the timecode that you specify in the setting
-- Start timecode (timecodeStart). If you don\'t specify a value for
-- Timecode source, the service will use Embedded by default. For more
-- information about timecodes, see
-- https:\/\/docs.aws.amazon.com\/console\/mediaconvert\/timecode.
input_timecodeSource :: Lens.Lens' Input (Prelude.Maybe InputTimecodeSource)
input_timecodeSource :: (Maybe InputTimecodeSource -> f (Maybe InputTimecodeSource))
-> Input -> f Input
input_timecodeSource = (Input -> Maybe InputTimecodeSource)
-> (Input -> Maybe InputTimecodeSource -> Input)
-> Lens
     Input Input (Maybe InputTimecodeSource) (Maybe InputTimecodeSource)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Input' {Maybe InputTimecodeSource
timecodeSource :: Maybe InputTimecodeSource
$sel:timecodeSource:Input' :: Input -> Maybe InputTimecodeSource
timecodeSource} -> Maybe InputTimecodeSource
timecodeSource) (\s :: Input
s@Input' {} Maybe InputTimecodeSource
a -> Input
s {$sel:timecodeSource:Input' :: Maybe InputTimecodeSource
timecodeSource = Maybe InputTimecodeSource
a} :: Input)

-- | Use Audio selectors (AudioSelectors) to specify a track or set of tracks
-- from the input that you will use in your outputs. You can use multiple
-- Audio selectors per input.
input_audioSelectors :: Lens.Lens' Input (Prelude.Maybe (Prelude.HashMap Prelude.Text AudioSelector))
input_audioSelectors :: (Maybe (HashMap Text AudioSelector)
 -> f (Maybe (HashMap Text AudioSelector)))
-> Input -> f Input
input_audioSelectors = (Input -> Maybe (HashMap Text AudioSelector))
-> (Input -> Maybe (HashMap Text AudioSelector) -> Input)
-> Lens
     Input
     Input
     (Maybe (HashMap Text AudioSelector))
     (Maybe (HashMap Text AudioSelector))
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Input' {Maybe (HashMap Text AudioSelector)
audioSelectors :: Maybe (HashMap Text AudioSelector)
$sel:audioSelectors:Input' :: Input -> Maybe (HashMap Text AudioSelector)
audioSelectors} -> Maybe (HashMap Text AudioSelector)
audioSelectors) (\s :: Input
s@Input' {} Maybe (HashMap Text AudioSelector)
a -> Input
s {$sel:audioSelectors:Input' :: Maybe (HashMap Text AudioSelector)
audioSelectors = Maybe (HashMap Text AudioSelector)
a} :: Input) ((Maybe (HashMap Text AudioSelector)
  -> f (Maybe (HashMap Text AudioSelector)))
 -> Input -> f Input)
-> ((Maybe (HashMap Text AudioSelector)
     -> f (Maybe (HashMap Text AudioSelector)))
    -> Maybe (HashMap Text AudioSelector)
    -> f (Maybe (HashMap Text AudioSelector)))
-> (Maybe (HashMap Text AudioSelector)
    -> f (Maybe (HashMap Text AudioSelector)))
-> Input
-> f Input
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  (HashMap Text AudioSelector)
  (HashMap Text AudioSelector)
  (HashMap Text AudioSelector)
  (HashMap Text AudioSelector)
-> Iso
     (Maybe (HashMap Text AudioSelector))
     (Maybe (HashMap Text AudioSelector))
     (Maybe (HashMap Text AudioSelector))
     (Maybe (HashMap Text AudioSelector))
forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping AnIso
  (HashMap Text AudioSelector)
  (HashMap Text AudioSelector)
  (HashMap Text AudioSelector)
  (HashMap Text AudioSelector)
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | Settings for decrypting any input files that you encrypt before you
-- upload them to Amazon S3. MediaConvert can decrypt files only when you
-- use AWS Key Management Service (KMS) to encrypt the data key that you
-- use to encrypt your content.
input_decryptionSettings :: Lens.Lens' Input (Prelude.Maybe InputDecryptionSettings)
input_decryptionSettings :: (Maybe InputDecryptionSettings
 -> f (Maybe InputDecryptionSettings))
-> Input -> f Input
input_decryptionSettings = (Input -> Maybe InputDecryptionSettings)
-> (Input -> Maybe InputDecryptionSettings -> Input)
-> Lens
     Input
     Input
     (Maybe InputDecryptionSettings)
     (Maybe InputDecryptionSettings)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Input' {Maybe InputDecryptionSettings
decryptionSettings :: Maybe InputDecryptionSettings
$sel:decryptionSettings:Input' :: Input -> Maybe InputDecryptionSettings
decryptionSettings} -> Maybe InputDecryptionSettings
decryptionSettings) (\s :: Input
s@Input' {} Maybe InputDecryptionSettings
a -> Input
s {$sel:decryptionSettings:Input' :: Maybe InputDecryptionSettings
decryptionSettings = Maybe InputDecryptionSettings
a} :: Input)

-- | Enable Deblock (InputDeblockFilter) to produce smoother motion in the
-- output. Default is disabled. Only manually controllable for MPEG2 and
-- uncompressed video inputs.
input_deblockFilter :: Lens.Lens' Input (Prelude.Maybe InputDeblockFilter)
input_deblockFilter :: (Maybe InputDeblockFilter -> f (Maybe InputDeblockFilter))
-> Input -> f Input
input_deblockFilter = (Input -> Maybe InputDeblockFilter)
-> (Input -> Maybe InputDeblockFilter -> Input)
-> Lens
     Input Input (Maybe InputDeblockFilter) (Maybe InputDeblockFilter)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Input' {Maybe InputDeblockFilter
deblockFilter :: Maybe InputDeblockFilter
$sel:deblockFilter:Input' :: Input -> Maybe InputDeblockFilter
deblockFilter} -> Maybe InputDeblockFilter
deblockFilter) (\s :: Input
s@Input' {} Maybe InputDeblockFilter
a -> Input
s {$sel:deblockFilter:Input' :: Maybe InputDeblockFilter
deblockFilter = Maybe InputDeblockFilter
a} :: Input)

-- | (InputClippings) contains sets of start and end times that together
-- specify a portion of the input to be used in the outputs. If you provide
-- only a start time, the clip will be the entire input from that point to
-- the end. If you provide only an end time, it will be the entire input up
-- to that point. When you specify more than one input clip, the
-- transcoding service creates the job outputs by stringing the clips
-- together in the order you specify them.
input_inputClippings :: Lens.Lens' Input (Prelude.Maybe [InputClipping])
input_inputClippings :: (Maybe [InputClipping] -> f (Maybe [InputClipping]))
-> Input -> f Input
input_inputClippings = (Input -> Maybe [InputClipping])
-> (Input -> Maybe [InputClipping] -> Input)
-> Lens Input Input (Maybe [InputClipping]) (Maybe [InputClipping])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Input' {Maybe [InputClipping]
inputClippings :: Maybe [InputClipping]
$sel:inputClippings:Input' :: Input -> Maybe [InputClipping]
inputClippings} -> Maybe [InputClipping]
inputClippings) (\s :: Input
s@Input' {} Maybe [InputClipping]
a -> Input
s {$sel:inputClippings:Input' :: Maybe [InputClipping]
inputClippings = Maybe [InputClipping]
a} :: Input) ((Maybe [InputClipping] -> f (Maybe [InputClipping]))
 -> Input -> f Input)
-> ((Maybe [InputClipping] -> f (Maybe [InputClipping]))
    -> Maybe [InputClipping] -> f (Maybe [InputClipping]))
-> (Maybe [InputClipping] -> f (Maybe [InputClipping]))
-> Input
-> f Input
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  [InputClipping] [InputClipping] [InputClipping] [InputClipping]
-> Iso
     (Maybe [InputClipping])
     (Maybe [InputClipping])
     (Maybe [InputClipping])
     (Maybe [InputClipping])
forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping AnIso
  [InputClipping] [InputClipping] [InputClipping] [InputClipping]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | Use Cropping selection (crop) to specify the video area that the service
-- will include in the output video frame. If you specify a value here, it
-- will override any value that you specify in the output setting Cropping
-- selection (crop).
input_crop :: Lens.Lens' Input (Prelude.Maybe Rectangle)
input_crop :: (Maybe Rectangle -> f (Maybe Rectangle)) -> Input -> f Input
input_crop = (Input -> Maybe Rectangle)
-> (Input -> Maybe Rectangle -> Input)
-> Lens Input Input (Maybe Rectangle) (Maybe Rectangle)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Input' {Maybe Rectangle
crop :: Maybe Rectangle
$sel:crop:Input' :: Input -> Maybe Rectangle
crop} -> Maybe Rectangle
crop) (\s :: Input
s@Input' {} Maybe Rectangle
a -> Input
s {$sel:crop:Input' :: Maybe Rectangle
crop = Maybe Rectangle
a} :: Input)

-- | Enable Denoise (InputDenoiseFilter) to filter noise from the input.
-- Default is disabled. Only applicable to MPEG2, H.264, H.265, and
-- uncompressed video inputs.
input_denoiseFilter :: Lens.Lens' Input (Prelude.Maybe InputDenoiseFilter)
input_denoiseFilter :: (Maybe InputDenoiseFilter -> f (Maybe InputDenoiseFilter))
-> Input -> f Input
input_denoiseFilter = (Input -> Maybe InputDenoiseFilter)
-> (Input -> Maybe InputDenoiseFilter -> Input)
-> Lens
     Input Input (Maybe InputDenoiseFilter) (Maybe InputDenoiseFilter)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Input' {Maybe InputDenoiseFilter
denoiseFilter :: Maybe InputDenoiseFilter
$sel:denoiseFilter:Input' :: Input -> Maybe InputDenoiseFilter
denoiseFilter} -> Maybe InputDenoiseFilter
denoiseFilter) (\s :: Input
s@Input' {} Maybe InputDenoiseFilter
a -> Input
s {$sel:denoiseFilter:Input' :: Maybe InputDenoiseFilter
denoiseFilter = Maybe InputDenoiseFilter
a} :: Input)

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

-- | Use Filter strength (FilterStrength) to adjust the magnitude the input
-- filter settings (Deblock and Denoise). The range is -5 to 5. Default is
-- 0.
input_filterStrength :: Lens.Lens' Input (Prelude.Maybe Prelude.Int)
input_filterStrength :: (Maybe Int -> f (Maybe Int)) -> Input -> f Input
input_filterStrength = (Input -> Maybe Int)
-> (Input -> Maybe Int -> Input)
-> Lens Input Input (Maybe Int) (Maybe Int)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Input' {Maybe Int
filterStrength :: Maybe Int
$sel:filterStrength:Input' :: Input -> Maybe Int
filterStrength} -> Maybe Int
filterStrength) (\s :: Input
s@Input' {} Maybe Int
a -> Input
s {$sel:filterStrength:Input' :: Maybe Int
filterStrength = Maybe Int
a} :: Input)

-- | Set PSI control (InputPsiControl) for transport stream inputs to specify
-- which data the demux process to scans. * Ignore PSI - Scan all PIDs for
-- audio and video. * Use PSI - Scan only PSI data.
input_psiControl :: Lens.Lens' Input (Prelude.Maybe InputPsiControl)
input_psiControl :: (Maybe InputPsiControl -> f (Maybe InputPsiControl))
-> Input -> f Input
input_psiControl = (Input -> Maybe InputPsiControl)
-> (Input -> Maybe InputPsiControl -> Input)
-> Lens Input Input (Maybe InputPsiControl) (Maybe InputPsiControl)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Input' {Maybe InputPsiControl
psiControl :: Maybe InputPsiControl
$sel:psiControl:Input' :: Input -> Maybe InputPsiControl
psiControl} -> Maybe InputPsiControl
psiControl) (\s :: Input
s@Input' {} Maybe InputPsiControl
a -> Input
s {$sel:psiControl:Input' :: Maybe InputPsiControl
psiControl = Maybe InputPsiControl
a} :: Input)

-- | Use captions selectors to specify the captions data from your input that
-- you use in your outputs. You can use up to 20 captions selectors per
-- input.
input_captionSelectors :: Lens.Lens' Input (Prelude.Maybe (Prelude.HashMap Prelude.Text CaptionSelector))
input_captionSelectors :: (Maybe (HashMap Text CaptionSelector)
 -> f (Maybe (HashMap Text CaptionSelector)))
-> Input -> f Input
input_captionSelectors = (Input -> Maybe (HashMap Text CaptionSelector))
-> (Input -> Maybe (HashMap Text CaptionSelector) -> Input)
-> Lens
     Input
     Input
     (Maybe (HashMap Text CaptionSelector))
     (Maybe (HashMap Text CaptionSelector))
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Input' {Maybe (HashMap Text CaptionSelector)
captionSelectors :: Maybe (HashMap Text CaptionSelector)
$sel:captionSelectors:Input' :: Input -> Maybe (HashMap Text CaptionSelector)
captionSelectors} -> Maybe (HashMap Text CaptionSelector)
captionSelectors) (\s :: Input
s@Input' {} Maybe (HashMap Text CaptionSelector)
a -> Input
s {$sel:captionSelectors:Input' :: Maybe (HashMap Text CaptionSelector)
captionSelectors = Maybe (HashMap Text CaptionSelector)
a} :: Input) ((Maybe (HashMap Text CaptionSelector)
  -> f (Maybe (HashMap Text CaptionSelector)))
 -> Input -> f Input)
-> ((Maybe (HashMap Text CaptionSelector)
     -> f (Maybe (HashMap Text CaptionSelector)))
    -> Maybe (HashMap Text CaptionSelector)
    -> f (Maybe (HashMap Text CaptionSelector)))
-> (Maybe (HashMap Text CaptionSelector)
    -> f (Maybe (HashMap Text CaptionSelector)))
-> Input
-> f Input
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  (HashMap Text CaptionSelector)
  (HashMap Text CaptionSelector)
  (HashMap Text CaptionSelector)
  (HashMap Text CaptionSelector)
-> Iso
     (Maybe (HashMap Text CaptionSelector))
     (Maybe (HashMap Text CaptionSelector))
     (Maybe (HashMap Text CaptionSelector))
     (Maybe (HashMap Text CaptionSelector))
forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping AnIso
  (HashMap Text CaptionSelector)
  (HashMap Text CaptionSelector)
  (HashMap Text CaptionSelector)
  (HashMap Text CaptionSelector)
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | Specify the source file for your transcoding job. You can use multiple
-- inputs in a single job. The service concatenates these inputs, in the
-- order that you specify them in the job, to create the outputs. If your
-- input format is IMF, specify your input by providing the path to your
-- CPL. For example, \"s3:\/\/bucket\/vf\/cpl.xml\". If the CPL is in an
-- incomplete IMP, make sure to use *Supplemental IMPs* (SupplementalImps)
-- to specify any supplemental IMPs that contain assets referenced by the
-- CPL.
input_fileInput :: Lens.Lens' Input (Prelude.Maybe Prelude.Text)
input_fileInput :: (Maybe Text -> f (Maybe Text)) -> Input -> f Input
input_fileInput = (Input -> Maybe Text)
-> (Input -> Maybe Text -> Input)
-> Lens Input Input (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Input' {Maybe Text
fileInput :: Maybe Text
$sel:fileInput:Input' :: Input -> Maybe Text
fileInput} -> Maybe Text
fileInput) (\s :: Input
s@Input' {} Maybe Text
a -> Input
s {$sel:fileInput:Input' :: Maybe Text
fileInput = Maybe Text
a} :: Input)

-- | Specify the timecode that you want the service to use for this input\'s
-- initial frame. To use this setting, you must set the Timecode source
-- setting, located under the input settings (InputTimecodeSource), to
-- Specified start (SPECIFIEDSTART). For more information about timecodes,
-- see https:\/\/docs.aws.amazon.com\/console\/mediaconvert\/timecode.
input_timecodeStart :: Lens.Lens' Input (Prelude.Maybe Prelude.Text)
input_timecodeStart :: (Maybe Text -> f (Maybe Text)) -> Input -> f Input
input_timecodeStart = (Input -> Maybe Text)
-> (Input -> Maybe Text -> Input)
-> Lens Input Input (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Input' {Maybe Text
timecodeStart :: Maybe Text
$sel:timecodeStart:Input' :: Input -> Maybe Text
timecodeStart} -> Maybe Text
timecodeStart) (\s :: Input
s@Input' {} Maybe Text
a -> Input
s {$sel:timecodeStart:Input' :: Maybe Text
timecodeStart = Maybe Text
a} :: Input)

-- | 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.
input_inputScanType :: Lens.Lens' Input (Prelude.Maybe InputScanType)
input_inputScanType :: (Maybe InputScanType -> f (Maybe InputScanType))
-> Input -> f Input
input_inputScanType = (Input -> Maybe InputScanType)
-> (Input -> Maybe InputScanType -> Input)
-> Lens Input Input (Maybe InputScanType) (Maybe InputScanType)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Input' {Maybe InputScanType
inputScanType :: Maybe InputScanType
$sel:inputScanType:Input' :: Input -> Maybe InputScanType
inputScanType} -> Maybe InputScanType
inputScanType) (\s :: Input
s@Input' {} Maybe InputScanType
a -> Input
s {$sel:inputScanType:Input' :: Maybe InputScanType
inputScanType = Maybe InputScanType
a} :: Input)

-- | Use Selection placement (position) to define the video area in your
-- output frame. The area outside of the rectangle that you specify here is
-- black. If you specify a value here, it will override any value that you
-- specify in the output setting Selection placement (position). If you
-- specify a value here, this will override any AFD values in your input,
-- even if you set Respond to AFD (RespondToAfd) to Respond (RESPOND). If
-- you specify a value here, this will ignore anything that you specify for
-- the setting Scaling Behavior (scalingBehavior).
input_position :: Lens.Lens' Input (Prelude.Maybe Rectangle)
input_position :: (Maybe Rectangle -> f (Maybe Rectangle)) -> Input -> f Input
input_position = (Input -> Maybe Rectangle)
-> (Input -> Maybe Rectangle -> Input)
-> Lens Input Input (Maybe Rectangle) (Maybe Rectangle)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Input' {Maybe Rectangle
position :: Maybe Rectangle
$sel:position:Input' :: Input -> Maybe Rectangle
position} -> Maybe Rectangle
position) (\s :: Input
s@Input' {} Maybe Rectangle
a -> Input
s {$sel:position:Input' :: Maybe Rectangle
position = Maybe Rectangle
a} :: Input)

-- | 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.
input_filterEnable :: Lens.Lens' Input (Prelude.Maybe InputFilterEnable)
input_filterEnable :: (Maybe InputFilterEnable -> f (Maybe InputFilterEnable))
-> Input -> f Input
input_filterEnable = (Input -> Maybe InputFilterEnable)
-> (Input -> Maybe InputFilterEnable -> Input)
-> Lens
     Input Input (Maybe InputFilterEnable) (Maybe InputFilterEnable)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Input' {Maybe InputFilterEnable
filterEnable :: Maybe InputFilterEnable
$sel:filterEnable:Input' :: Input -> Maybe InputFilterEnable
filterEnable} -> Maybe InputFilterEnable
filterEnable) (\s :: Input
s@Input' {} Maybe InputFilterEnable
a -> Input
s {$sel:filterEnable:Input' :: Maybe InputFilterEnable
filterEnable = Maybe InputFilterEnable
a} :: Input)

instance Core.FromJSON Input where
  parseJSON :: Value -> Parser Input
parseJSON =
    String -> (Object -> Parser Input) -> Value -> Parser Input
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Core.withObject
      String
"Input"
      ( \Object
x ->
          Maybe VideoSelector
-> Maybe [Text]
-> Maybe Natural
-> Maybe (HashMap Text AudioSelectorGroup)
-> Maybe InputTimecodeSource
-> Maybe (HashMap Text AudioSelector)
-> Maybe InputDecryptionSettings
-> Maybe InputDeblockFilter
-> Maybe [InputClipping]
-> Maybe Rectangle
-> Maybe InputDenoiseFilter
-> Maybe ImageInserter
-> Maybe Int
-> Maybe InputPsiControl
-> Maybe (HashMap Text CaptionSelector)
-> Maybe Text
-> Maybe Text
-> Maybe InputScanType
-> Maybe Rectangle
-> Maybe InputFilterEnable
-> Input
Input'
            (Maybe VideoSelector
 -> Maybe [Text]
 -> Maybe Natural
 -> Maybe (HashMap Text AudioSelectorGroup)
 -> Maybe InputTimecodeSource
 -> Maybe (HashMap Text AudioSelector)
 -> Maybe InputDecryptionSettings
 -> Maybe InputDeblockFilter
 -> Maybe [InputClipping]
 -> Maybe Rectangle
 -> Maybe InputDenoiseFilter
 -> Maybe ImageInserter
 -> Maybe Int
 -> Maybe InputPsiControl
 -> Maybe (HashMap Text CaptionSelector)
 -> Maybe Text
 -> Maybe Text
 -> Maybe InputScanType
 -> Maybe Rectangle
 -> Maybe InputFilterEnable
 -> Input)
-> Parser (Maybe VideoSelector)
-> Parser
     (Maybe [Text]
      -> Maybe Natural
      -> Maybe (HashMap Text AudioSelectorGroup)
      -> Maybe InputTimecodeSource
      -> Maybe (HashMap Text AudioSelector)
      -> Maybe InputDecryptionSettings
      -> Maybe InputDeblockFilter
      -> Maybe [InputClipping]
      -> Maybe Rectangle
      -> Maybe InputDenoiseFilter
      -> Maybe ImageInserter
      -> Maybe Int
      -> Maybe InputPsiControl
      -> Maybe (HashMap Text CaptionSelector)
      -> Maybe Text
      -> Maybe Text
      -> Maybe InputScanType
      -> Maybe Rectangle
      -> Maybe InputFilterEnable
      -> Input)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x Object -> Text -> Parser (Maybe VideoSelector)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"videoSelector")
            Parser
  (Maybe [Text]
   -> Maybe Natural
   -> Maybe (HashMap Text AudioSelectorGroup)
   -> Maybe InputTimecodeSource
   -> Maybe (HashMap Text AudioSelector)
   -> Maybe InputDecryptionSettings
   -> Maybe InputDeblockFilter
   -> Maybe [InputClipping]
   -> Maybe Rectangle
   -> Maybe InputDenoiseFilter
   -> Maybe ImageInserter
   -> Maybe Int
   -> Maybe InputPsiControl
   -> Maybe (HashMap Text CaptionSelector)
   -> Maybe Text
   -> Maybe Text
   -> Maybe InputScanType
   -> Maybe Rectangle
   -> Maybe InputFilterEnable
   -> Input)
-> Parser (Maybe [Text])
-> Parser
     (Maybe Natural
      -> Maybe (HashMap Text AudioSelectorGroup)
      -> Maybe InputTimecodeSource
      -> Maybe (HashMap Text AudioSelector)
      -> Maybe InputDecryptionSettings
      -> Maybe InputDeblockFilter
      -> Maybe [InputClipping]
      -> Maybe Rectangle
      -> Maybe InputDenoiseFilter
      -> Maybe ImageInserter
      -> Maybe Int
      -> Maybe InputPsiControl
      -> Maybe (HashMap Text CaptionSelector)
      -> Maybe Text
      -> Maybe Text
      -> Maybe InputScanType
      -> Maybe Rectangle
      -> Maybe InputFilterEnable
      -> Input)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( Object
x Object -> Text -> Parser (Maybe (Maybe [Text]))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"supplementalImps"
                            Parser (Maybe (Maybe [Text]))
-> Maybe [Text] -> Parser (Maybe [Text])
forall a. Parser (Maybe a) -> a -> Parser a
Core..!= Maybe [Text]
forall a. Monoid a => a
Prelude.mempty
                        )
            Parser
  (Maybe Natural
   -> Maybe (HashMap Text AudioSelectorGroup)
   -> Maybe InputTimecodeSource
   -> Maybe (HashMap Text AudioSelector)
   -> Maybe InputDecryptionSettings
   -> Maybe InputDeblockFilter
   -> Maybe [InputClipping]
   -> Maybe Rectangle
   -> Maybe InputDenoiseFilter
   -> Maybe ImageInserter
   -> Maybe Int
   -> Maybe InputPsiControl
   -> Maybe (HashMap Text CaptionSelector)
   -> Maybe Text
   -> Maybe Text
   -> Maybe InputScanType
   -> Maybe Rectangle
   -> Maybe InputFilterEnable
   -> Input)
-> Parser (Maybe Natural)
-> Parser
     (Maybe (HashMap Text AudioSelectorGroup)
      -> Maybe InputTimecodeSource
      -> Maybe (HashMap Text AudioSelector)
      -> Maybe InputDecryptionSettings
      -> Maybe InputDeblockFilter
      -> Maybe [InputClipping]
      -> Maybe Rectangle
      -> Maybe InputDenoiseFilter
      -> Maybe ImageInserter
      -> Maybe Int
      -> Maybe InputPsiControl
      -> Maybe (HashMap Text CaptionSelector)
      -> Maybe Text
      -> Maybe Text
      -> Maybe InputScanType
      -> Maybe Rectangle
      -> Maybe InputFilterEnable
      -> Input)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Natural)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"programNumber")
            Parser
  (Maybe (HashMap Text AudioSelectorGroup)
   -> Maybe InputTimecodeSource
   -> Maybe (HashMap Text AudioSelector)
   -> Maybe InputDecryptionSettings
   -> Maybe InputDeblockFilter
   -> Maybe [InputClipping]
   -> Maybe Rectangle
   -> Maybe InputDenoiseFilter
   -> Maybe ImageInserter
   -> Maybe Int
   -> Maybe InputPsiControl
   -> Maybe (HashMap Text CaptionSelector)
   -> Maybe Text
   -> Maybe Text
   -> Maybe InputScanType
   -> Maybe Rectangle
   -> Maybe InputFilterEnable
   -> Input)
-> Parser (Maybe (HashMap Text AudioSelectorGroup))
-> Parser
     (Maybe InputTimecodeSource
      -> Maybe (HashMap Text AudioSelector)
      -> Maybe InputDecryptionSettings
      -> Maybe InputDeblockFilter
      -> Maybe [InputClipping]
      -> Maybe Rectangle
      -> Maybe InputDenoiseFilter
      -> Maybe ImageInserter
      -> Maybe Int
      -> Maybe InputPsiControl
      -> Maybe (HashMap Text CaptionSelector)
      -> Maybe Text
      -> Maybe Text
      -> Maybe InputScanType
      -> Maybe Rectangle
      -> Maybe InputFilterEnable
      -> Input)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( Object
x Object
-> Text -> Parser (Maybe (Maybe (HashMap Text AudioSelectorGroup)))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"audioSelectorGroups"
                            Parser (Maybe (Maybe (HashMap Text AudioSelectorGroup)))
-> Maybe (HashMap Text AudioSelectorGroup)
-> Parser (Maybe (HashMap Text AudioSelectorGroup))
forall a. Parser (Maybe a) -> a -> Parser a
Core..!= Maybe (HashMap Text AudioSelectorGroup)
forall a. Monoid a => a
Prelude.mempty
                        )
            Parser
  (Maybe InputTimecodeSource
   -> Maybe (HashMap Text AudioSelector)
   -> Maybe InputDecryptionSettings
   -> Maybe InputDeblockFilter
   -> Maybe [InputClipping]
   -> Maybe Rectangle
   -> Maybe InputDenoiseFilter
   -> Maybe ImageInserter
   -> Maybe Int
   -> Maybe InputPsiControl
   -> Maybe (HashMap Text CaptionSelector)
   -> Maybe Text
   -> Maybe Text
   -> Maybe InputScanType
   -> Maybe Rectangle
   -> Maybe InputFilterEnable
   -> Input)
-> Parser (Maybe InputTimecodeSource)
-> Parser
     (Maybe (HashMap Text AudioSelector)
      -> Maybe InputDecryptionSettings
      -> Maybe InputDeblockFilter
      -> Maybe [InputClipping]
      -> Maybe Rectangle
      -> Maybe InputDenoiseFilter
      -> Maybe ImageInserter
      -> Maybe Int
      -> Maybe InputPsiControl
      -> Maybe (HashMap Text CaptionSelector)
      -> Maybe Text
      -> Maybe Text
      -> Maybe InputScanType
      -> Maybe Rectangle
      -> Maybe InputFilterEnable
      -> Input)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe InputTimecodeSource)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"timecodeSource")
            Parser
  (Maybe (HashMap Text AudioSelector)
   -> Maybe InputDecryptionSettings
   -> Maybe InputDeblockFilter
   -> Maybe [InputClipping]
   -> Maybe Rectangle
   -> Maybe InputDenoiseFilter
   -> Maybe ImageInserter
   -> Maybe Int
   -> Maybe InputPsiControl
   -> Maybe (HashMap Text CaptionSelector)
   -> Maybe Text
   -> Maybe Text
   -> Maybe InputScanType
   -> Maybe Rectangle
   -> Maybe InputFilterEnable
   -> Input)
-> Parser (Maybe (HashMap Text AudioSelector))
-> Parser
     (Maybe InputDecryptionSettings
      -> Maybe InputDeblockFilter
      -> Maybe [InputClipping]
      -> Maybe Rectangle
      -> Maybe InputDenoiseFilter
      -> Maybe ImageInserter
      -> Maybe Int
      -> Maybe InputPsiControl
      -> Maybe (HashMap Text CaptionSelector)
      -> Maybe Text
      -> Maybe Text
      -> Maybe InputScanType
      -> Maybe Rectangle
      -> Maybe InputFilterEnable
      -> Input)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object
-> Text -> Parser (Maybe (Maybe (HashMap Text AudioSelector)))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"audioSelectors" Parser (Maybe (Maybe (HashMap Text AudioSelector)))
-> Maybe (HashMap Text AudioSelector)
-> Parser (Maybe (HashMap Text AudioSelector))
forall a. Parser (Maybe a) -> a -> Parser a
Core..!= Maybe (HashMap Text AudioSelector)
forall a. Monoid a => a
Prelude.mempty)
            Parser
  (Maybe InputDecryptionSettings
   -> Maybe InputDeblockFilter
   -> Maybe [InputClipping]
   -> Maybe Rectangle
   -> Maybe InputDenoiseFilter
   -> Maybe ImageInserter
   -> Maybe Int
   -> Maybe InputPsiControl
   -> Maybe (HashMap Text CaptionSelector)
   -> Maybe Text
   -> Maybe Text
   -> Maybe InputScanType
   -> Maybe Rectangle
   -> Maybe InputFilterEnable
   -> Input)
-> Parser (Maybe InputDecryptionSettings)
-> Parser
     (Maybe InputDeblockFilter
      -> Maybe [InputClipping]
      -> Maybe Rectangle
      -> Maybe InputDenoiseFilter
      -> Maybe ImageInserter
      -> Maybe Int
      -> Maybe InputPsiControl
      -> Maybe (HashMap Text CaptionSelector)
      -> Maybe Text
      -> Maybe Text
      -> Maybe InputScanType
      -> Maybe Rectangle
      -> Maybe InputFilterEnable
      -> Input)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe InputDecryptionSettings)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"decryptionSettings")
            Parser
  (Maybe InputDeblockFilter
   -> Maybe [InputClipping]
   -> Maybe Rectangle
   -> Maybe InputDenoiseFilter
   -> Maybe ImageInserter
   -> Maybe Int
   -> Maybe InputPsiControl
   -> Maybe (HashMap Text CaptionSelector)
   -> Maybe Text
   -> Maybe Text
   -> Maybe InputScanType
   -> Maybe Rectangle
   -> Maybe InputFilterEnable
   -> Input)
-> Parser (Maybe InputDeblockFilter)
-> Parser
     (Maybe [InputClipping]
      -> Maybe Rectangle
      -> Maybe InputDenoiseFilter
      -> Maybe ImageInserter
      -> Maybe Int
      -> Maybe InputPsiControl
      -> Maybe (HashMap Text CaptionSelector)
      -> Maybe Text
      -> Maybe Text
      -> Maybe InputScanType
      -> Maybe Rectangle
      -> Maybe InputFilterEnable
      -> Input)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe InputDeblockFilter)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"deblockFilter")
            Parser
  (Maybe [InputClipping]
   -> Maybe Rectangle
   -> Maybe InputDenoiseFilter
   -> Maybe ImageInserter
   -> Maybe Int
   -> Maybe InputPsiControl
   -> Maybe (HashMap Text CaptionSelector)
   -> Maybe Text
   -> Maybe Text
   -> Maybe InputScanType
   -> Maybe Rectangle
   -> Maybe InputFilterEnable
   -> Input)
-> Parser (Maybe [InputClipping])
-> Parser
     (Maybe Rectangle
      -> Maybe InputDenoiseFilter
      -> Maybe ImageInserter
      -> Maybe Int
      -> Maybe InputPsiControl
      -> Maybe (HashMap Text CaptionSelector)
      -> Maybe Text
      -> Maybe Text
      -> Maybe InputScanType
      -> Maybe Rectangle
      -> Maybe InputFilterEnable
      -> Input)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe (Maybe [InputClipping]))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"inputClippings" Parser (Maybe (Maybe [InputClipping]))
-> Maybe [InputClipping] -> Parser (Maybe [InputClipping])
forall a. Parser (Maybe a) -> a -> Parser a
Core..!= Maybe [InputClipping]
forall a. Monoid a => a
Prelude.mempty)
            Parser
  (Maybe Rectangle
   -> Maybe InputDenoiseFilter
   -> Maybe ImageInserter
   -> Maybe Int
   -> Maybe InputPsiControl
   -> Maybe (HashMap Text CaptionSelector)
   -> Maybe Text
   -> Maybe Text
   -> Maybe InputScanType
   -> Maybe Rectangle
   -> Maybe InputFilterEnable
   -> Input)
-> Parser (Maybe Rectangle)
-> Parser
     (Maybe InputDenoiseFilter
      -> Maybe ImageInserter
      -> Maybe Int
      -> Maybe InputPsiControl
      -> Maybe (HashMap Text CaptionSelector)
      -> Maybe Text
      -> Maybe Text
      -> Maybe InputScanType
      -> Maybe Rectangle
      -> Maybe InputFilterEnable
      -> Input)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Rectangle)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"crop")
            Parser
  (Maybe InputDenoiseFilter
   -> Maybe ImageInserter
   -> Maybe Int
   -> Maybe InputPsiControl
   -> Maybe (HashMap Text CaptionSelector)
   -> Maybe Text
   -> Maybe Text
   -> Maybe InputScanType
   -> Maybe Rectangle
   -> Maybe InputFilterEnable
   -> Input)
-> Parser (Maybe InputDenoiseFilter)
-> Parser
     (Maybe ImageInserter
      -> Maybe Int
      -> Maybe InputPsiControl
      -> Maybe (HashMap Text CaptionSelector)
      -> Maybe Text
      -> Maybe Text
      -> Maybe InputScanType
      -> Maybe Rectangle
      -> Maybe InputFilterEnable
      -> Input)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe InputDenoiseFilter)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"denoiseFilter")
            Parser
  (Maybe ImageInserter
   -> Maybe Int
   -> Maybe InputPsiControl
   -> Maybe (HashMap Text CaptionSelector)
   -> Maybe Text
   -> Maybe Text
   -> Maybe InputScanType
   -> Maybe Rectangle
   -> Maybe InputFilterEnable
   -> Input)
-> Parser (Maybe ImageInserter)
-> Parser
     (Maybe Int
      -> Maybe InputPsiControl
      -> Maybe (HashMap Text CaptionSelector)
      -> Maybe Text
      -> Maybe Text
      -> Maybe InputScanType
      -> Maybe Rectangle
      -> Maybe InputFilterEnable
      -> Input)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe ImageInserter)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"imageInserter")
            Parser
  (Maybe Int
   -> Maybe InputPsiControl
   -> Maybe (HashMap Text CaptionSelector)
   -> Maybe Text
   -> Maybe Text
   -> Maybe InputScanType
   -> Maybe Rectangle
   -> Maybe InputFilterEnable
   -> Input)
-> Parser (Maybe Int)
-> Parser
     (Maybe InputPsiControl
      -> Maybe (HashMap Text CaptionSelector)
      -> Maybe Text
      -> Maybe Text
      -> Maybe InputScanType
      -> Maybe Rectangle
      -> Maybe InputFilterEnable
      -> Input)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Int)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"filterStrength")
            Parser
  (Maybe InputPsiControl
   -> Maybe (HashMap Text CaptionSelector)
   -> Maybe Text
   -> Maybe Text
   -> Maybe InputScanType
   -> Maybe Rectangle
   -> Maybe InputFilterEnable
   -> Input)
-> Parser (Maybe InputPsiControl)
-> Parser
     (Maybe (HashMap Text CaptionSelector)
      -> Maybe Text
      -> Maybe Text
      -> Maybe InputScanType
      -> Maybe Rectangle
      -> Maybe InputFilterEnable
      -> Input)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe InputPsiControl)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"psiControl")
            Parser
  (Maybe (HashMap Text CaptionSelector)
   -> Maybe Text
   -> Maybe Text
   -> Maybe InputScanType
   -> Maybe Rectangle
   -> Maybe InputFilterEnable
   -> Input)
-> Parser (Maybe (HashMap Text CaptionSelector))
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe InputScanType
      -> Maybe Rectangle
      -> Maybe InputFilterEnable
      -> Input)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( Object
x Object
-> Text -> Parser (Maybe (Maybe (HashMap Text CaptionSelector)))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"captionSelectors"
                            Parser (Maybe (Maybe (HashMap Text CaptionSelector)))
-> Maybe (HashMap Text CaptionSelector)
-> Parser (Maybe (HashMap Text CaptionSelector))
forall a. Parser (Maybe a) -> a -> Parser a
Core..!= Maybe (HashMap Text CaptionSelector)
forall a. Monoid a => a
Prelude.mempty
                        )
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe InputScanType
   -> Maybe Rectangle
   -> Maybe InputFilterEnable
   -> Input)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe InputScanType
      -> Maybe Rectangle
      -> Maybe InputFilterEnable
      -> Input)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"fileInput")
            Parser
  (Maybe Text
   -> Maybe InputScanType
   -> Maybe Rectangle
   -> Maybe InputFilterEnable
   -> Input)
-> Parser (Maybe Text)
-> Parser
     (Maybe InputScanType
      -> Maybe Rectangle -> Maybe InputFilterEnable -> Input)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"timecodeStart")
            Parser
  (Maybe InputScanType
   -> Maybe Rectangle -> Maybe InputFilterEnable -> Input)
-> Parser (Maybe InputScanType)
-> Parser (Maybe Rectangle -> Maybe InputFilterEnable -> Input)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe InputScanType)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"inputScanType")
            Parser (Maybe Rectangle -> Maybe InputFilterEnable -> Input)
-> Parser (Maybe Rectangle)
-> Parser (Maybe InputFilterEnable -> Input)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Rectangle)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"position")
            Parser (Maybe InputFilterEnable -> Input)
-> Parser (Maybe InputFilterEnable) -> Parser Input
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe InputFilterEnable)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"filterEnable")
      )

instance Prelude.Hashable Input

instance Prelude.NFData Input

instance Core.ToJSON Input where
  toJSON :: Input -> Value
toJSON Input' {Maybe Int
Maybe Natural
Maybe [Text]
Maybe [InputClipping]
Maybe Text
Maybe (HashMap Text AudioSelectorGroup)
Maybe (HashMap Text AudioSelector)
Maybe (HashMap Text CaptionSelector)
Maybe InputDeblockFilter
Maybe InputDecryptionSettings
Maybe InputDenoiseFilter
Maybe InputFilterEnable
Maybe InputPsiControl
Maybe InputScanType
Maybe InputTimecodeSource
Maybe ImageInserter
Maybe Rectangle
Maybe VideoSelector
filterEnable :: Maybe InputFilterEnable
position :: Maybe Rectangle
inputScanType :: Maybe InputScanType
timecodeStart :: Maybe Text
fileInput :: Maybe Text
captionSelectors :: Maybe (HashMap Text CaptionSelector)
psiControl :: Maybe InputPsiControl
filterStrength :: Maybe Int
imageInserter :: Maybe ImageInserter
denoiseFilter :: Maybe InputDenoiseFilter
crop :: Maybe Rectangle
inputClippings :: Maybe [InputClipping]
deblockFilter :: Maybe InputDeblockFilter
decryptionSettings :: Maybe InputDecryptionSettings
audioSelectors :: Maybe (HashMap Text AudioSelector)
timecodeSource :: Maybe InputTimecodeSource
audioSelectorGroups :: Maybe (HashMap Text AudioSelectorGroup)
programNumber :: Maybe Natural
supplementalImps :: Maybe [Text]
videoSelector :: Maybe VideoSelector
$sel:filterEnable:Input' :: Input -> Maybe InputFilterEnable
$sel:position:Input' :: Input -> Maybe Rectangle
$sel:inputScanType:Input' :: Input -> Maybe InputScanType
$sel:timecodeStart:Input' :: Input -> Maybe Text
$sel:fileInput:Input' :: Input -> Maybe Text
$sel:captionSelectors:Input' :: Input -> Maybe (HashMap Text CaptionSelector)
$sel:psiControl:Input' :: Input -> Maybe InputPsiControl
$sel:filterStrength:Input' :: Input -> Maybe Int
$sel:imageInserter:Input' :: Input -> Maybe ImageInserter
$sel:denoiseFilter:Input' :: Input -> Maybe InputDenoiseFilter
$sel:crop:Input' :: Input -> Maybe Rectangle
$sel:inputClippings:Input' :: Input -> Maybe [InputClipping]
$sel:deblockFilter:Input' :: Input -> Maybe InputDeblockFilter
$sel:decryptionSettings:Input' :: Input -> Maybe InputDecryptionSettings
$sel:audioSelectors:Input' :: Input -> Maybe (HashMap Text AudioSelector)
$sel:timecodeSource:Input' :: Input -> Maybe InputTimecodeSource
$sel:audioSelectorGroups:Input' :: Input -> Maybe (HashMap Text AudioSelectorGroup)
$sel:programNumber:Input' :: Input -> Maybe Natural
$sel:supplementalImps:Input' :: Input -> Maybe [Text]
$sel:videoSelector:Input' :: Input -> Maybe VideoSelector
..} =
    [Pair] -> Value
Core.object
      ( [Maybe Pair] -> [Pair]
forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Text
"videoSelector" Text -> VideoSelector -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (VideoSelector -> Pair) -> Maybe VideoSelector -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe VideoSelector
videoSelector,
            (Text
"supplementalImps" Text -> [Text] -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              ([Text] -> Pair) -> Maybe [Text] -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [Text]
supplementalImps,
            (Text
"programNumber" Text -> Natural -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (Natural -> Pair) -> Maybe Natural -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Natural
programNumber,
            (Text
"audioSelectorGroups" Text -> HashMap Text AudioSelectorGroup -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (HashMap Text AudioSelectorGroup -> Pair)
-> Maybe (HashMap Text AudioSelectorGroup) -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe (HashMap Text AudioSelectorGroup)
audioSelectorGroups,
            (Text
"timecodeSource" Text -> InputTimecodeSource -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (InputTimecodeSource -> Pair)
-> Maybe InputTimecodeSource -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe InputTimecodeSource
timecodeSource,
            (Text
"audioSelectors" Text -> HashMap Text AudioSelector -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (HashMap Text AudioSelector -> Pair)
-> Maybe (HashMap Text AudioSelector) -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe (HashMap Text AudioSelector)
audioSelectors,
            (Text
"decryptionSettings" Text -> InputDecryptionSettings -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (InputDecryptionSettings -> Pair)
-> Maybe InputDecryptionSettings -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe InputDecryptionSettings
decryptionSettings,
            (Text
"deblockFilter" Text -> InputDeblockFilter -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (InputDeblockFilter -> Pair)
-> Maybe InputDeblockFilter -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe InputDeblockFilter
deblockFilter,
            (Text
"inputClippings" Text -> [InputClipping] -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              ([InputClipping] -> Pair) -> Maybe [InputClipping] -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [InputClipping]
inputClippings,
            (Text
"crop" Text -> Rectangle -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (Rectangle -> Pair) -> Maybe Rectangle -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Rectangle
crop,
            (Text
"denoiseFilter" Text -> InputDenoiseFilter -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (InputDenoiseFilter -> Pair)
-> Maybe InputDenoiseFilter -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe InputDenoiseFilter
denoiseFilter,
            (Text
"imageInserter" Text -> ImageInserter -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (ImageInserter -> Pair) -> Maybe ImageInserter -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe ImageInserter
imageInserter,
            (Text
"filterStrength" Text -> Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (Int -> Pair) -> Maybe Int -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Int
filterStrength,
            (Text
"psiControl" Text -> InputPsiControl -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (InputPsiControl -> Pair) -> Maybe InputPsiControl -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe InputPsiControl
psiControl,
            (Text
"captionSelectors" Text -> HashMap Text CaptionSelector -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (HashMap Text CaptionSelector -> Pair)
-> Maybe (HashMap Text CaptionSelector) -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe (HashMap Text CaptionSelector)
captionSelectors,
            (Text
"fileInput" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (Text -> Pair) -> Maybe Text -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
fileInput,
            (Text
"timecodeStart" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (Text -> Pair) -> Maybe Text -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
timecodeStart,
            (Text
"inputScanType" Text -> InputScanType -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (InputScanType -> Pair) -> Maybe InputScanType -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe InputScanType
inputScanType,
            (Text
"position" Text -> Rectangle -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (Rectangle -> Pair) -> Maybe Rectangle -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Rectangle
position,
            (Text
"filterEnable" Text -> InputFilterEnable -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (InputFilterEnable -> Pair)
-> Maybe InputFilterEnable -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe InputFilterEnable
filterEnable
          ]
      )