{-# 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.JobSettings
-- 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.JobSettings 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.AvailBlanking
import Amazonka.MediaConvert.Types.EsamSettings
import Amazonka.MediaConvert.Types.ExtendedDataServices
import Amazonka.MediaConvert.Types.Input
import Amazonka.MediaConvert.Types.KantarWatermarkSettings
import Amazonka.MediaConvert.Types.MotionImageInserter
import Amazonka.MediaConvert.Types.NielsenConfiguration
import Amazonka.MediaConvert.Types.NielsenNonLinearWatermarkSettings
import Amazonka.MediaConvert.Types.OutputGroup
import Amazonka.MediaConvert.Types.TimecodeConfig
import Amazonka.MediaConvert.Types.TimedMetadataInsertion
import qualified Amazonka.Prelude as Prelude

-- | JobSettings contains all the transcode settings for a job.
--
-- /See:/ 'newJobSettings' smart constructor.
data JobSettings = JobSettings'
  { -- | When specified, this offset (in milliseconds) is added to the input Ad
    -- Avail PTS time.
    JobSettings -> Maybe Int
adAvailOffset :: Prelude.Maybe Prelude.Int,
    -- | Settings for ad avail blanking. Video can be blanked or overlaid with an
    -- image, and audio muted during SCTE-35 triggered ad avails.
    JobSettings -> Maybe AvailBlanking
availBlanking :: Prelude.Maybe AvailBlanking,
    -- | Settings for Event Signaling And Messaging (ESAM). If you don\'t do ad
    -- insertion, you can ignore these settings.
    JobSettings -> Maybe EsamSettings
esam :: Prelude.Maybe EsamSettings,
    -- | If your source content has EIA-608 Line 21 Data Services, enable this
    -- feature to specify what MediaConvert does with the Extended Data
    -- Services (XDS) packets. You can choose to pass through XDS packets, or
    -- remove them from the output. For more information about XDS, see EIA-608
    -- Line Data Services, section 9.5.1.5 05h Content Advisory.
    JobSettings -> Maybe ExtendedDataServices
extendedDataServices :: Prelude.Maybe ExtendedDataServices,
    -- | Use Inputs (inputs) to define source file used in the transcode job.
    -- There can be multiple inputs add in a job. These inputs will be
    -- concantenated together to create the output.
    JobSettings -> Maybe [Input]
inputs :: Prelude.Maybe [Input],
    -- | Use these settings only when you use Kantar watermarking. Specify the
    -- values that MediaConvert uses to generate and place Kantar watermarks in
    -- your output audio. These settings apply to every output in your job. In
    -- addition to specifying these values, you also need to store your Kantar
    -- credentials in AWS Secrets Manager. For more information, see
    -- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/kantar-watermarking.html.
    JobSettings -> Maybe KantarWatermarkSettings
kantarWatermark :: Prelude.Maybe KantarWatermarkSettings,
    -- | Overlay motion graphics on top of your video. The motion graphics that
    -- you specify here appear on all outputs in all output groups. For more
    -- information, see
    -- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/motion-graphic-overlay.html.
    JobSettings -> Maybe MotionImageInserter
motionImageInserter :: Prelude.Maybe MotionImageInserter,
    -- | Settings for your Nielsen configuration. If you don\'t do Nielsen
    -- measurement and analytics, ignore these settings. When you enable
    -- Nielsen configuration (nielsenConfiguration), MediaConvert enables PCM
    -- to ID3 tagging for all outputs in the job. To enable Nielsen
    -- configuration programmatically, include an instance of
    -- nielsenConfiguration in your JSON job specification. Even if you don\'t
    -- include any children of nielsenConfiguration, you still enable the
    -- setting.
    JobSettings -> Maybe NielsenConfiguration
nielsenConfiguration :: Prelude.Maybe NielsenConfiguration,
    -- | Ignore these settings unless you are using Nielsen non-linear
    -- watermarking. Specify the values that MediaConvert uses to generate and
    -- place Nielsen watermarks in your output audio. In addition to specifying
    -- these values, you also need to set up your cloud TIC server. These
    -- settings apply to every output in your job. The MediaConvert
    -- implementation is currently with the following Nielsen versions: Nielsen
    -- Watermark SDK Version 5.2.1 Nielsen NLM Watermark Engine Version 1.2.7
    -- Nielsen Watermark Authenticator [SID_TIC] Version [5.0.0]
    JobSettings -> Maybe NielsenNonLinearWatermarkSettings
nielsenNonLinearWatermark :: Prelude.Maybe NielsenNonLinearWatermarkSettings,
    -- | (OutputGroups) contains one group of settings for each set of outputs
    -- that share a common package type. All unpackaged files (MPEG-4, MPEG-2
    -- TS, Quicktime, MXF, and no container) are grouped in a single output
    -- group as well. Required in (OutputGroups) is a group of settings that
    -- apply to the whole group. This required object depends on the value you
    -- set for (Type) under (OutputGroups)>(OutputGroupSettings). Type,
    -- settings object pairs are as follows. * FILE_GROUP_SETTINGS,
    -- FileGroupSettings * HLS_GROUP_SETTINGS, HlsGroupSettings *
    -- DASH_ISO_GROUP_SETTINGS, DashIsoGroupSettings *
    -- MS_SMOOTH_GROUP_SETTINGS, MsSmoothGroupSettings * CMAF_GROUP_SETTINGS,
    -- CmafGroupSettings
    JobSettings -> Maybe [OutputGroup]
outputGroups :: Prelude.Maybe [OutputGroup],
    -- | These settings control how the service handles timecodes throughout the
    -- job. These settings don\'t affect input clipping.
    JobSettings -> Maybe TimecodeConfig
timecodeConfig :: Prelude.Maybe TimecodeConfig,
    -- | Insert user-defined custom ID3 metadata (id3) at timecodes (timecode)
    -- that you specify. In each output that you want to include this metadata,
    -- you must set ID3 metadata (timedMetadata) to Passthrough (PASSTHROUGH).
    JobSettings -> Maybe TimedMetadataInsertion
timedMetadataInsertion :: Prelude.Maybe TimedMetadataInsertion
  }
  deriving (JobSettings -> JobSettings -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: JobSettings -> JobSettings -> Bool
$c/= :: JobSettings -> JobSettings -> Bool
== :: JobSettings -> JobSettings -> Bool
$c== :: JobSettings -> JobSettings -> Bool
Prelude.Eq, ReadPrec [JobSettings]
ReadPrec JobSettings
Int -> ReadS JobSettings
ReadS [JobSettings]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [JobSettings]
$creadListPrec :: ReadPrec [JobSettings]
readPrec :: ReadPrec JobSettings
$creadPrec :: ReadPrec JobSettings
readList :: ReadS [JobSettings]
$creadList :: ReadS [JobSettings]
readsPrec :: Int -> ReadS JobSettings
$creadsPrec :: Int -> ReadS JobSettings
Prelude.Read, Int -> JobSettings -> ShowS
[JobSettings] -> ShowS
JobSettings -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [JobSettings] -> ShowS
$cshowList :: [JobSettings] -> ShowS
show :: JobSettings -> String
$cshow :: JobSettings -> String
showsPrec :: Int -> JobSettings -> ShowS
$cshowsPrec :: Int -> JobSettings -> ShowS
Prelude.Show, forall x. Rep JobSettings x -> JobSettings
forall x. JobSettings -> Rep JobSettings x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep JobSettings x -> JobSettings
$cfrom :: forall x. JobSettings -> Rep JobSettings x
Prelude.Generic)

-- |
-- Create a value of 'JobSettings' 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:
--
-- 'adAvailOffset', 'jobSettings_adAvailOffset' - When specified, this offset (in milliseconds) is added to the input Ad
-- Avail PTS time.
--
-- 'availBlanking', 'jobSettings_availBlanking' - Settings for ad avail blanking. Video can be blanked or overlaid with an
-- image, and audio muted during SCTE-35 triggered ad avails.
--
-- 'esam', 'jobSettings_esam' - Settings for Event Signaling And Messaging (ESAM). If you don\'t do ad
-- insertion, you can ignore these settings.
--
-- 'extendedDataServices', 'jobSettings_extendedDataServices' - If your source content has EIA-608 Line 21 Data Services, enable this
-- feature to specify what MediaConvert does with the Extended Data
-- Services (XDS) packets. You can choose to pass through XDS packets, or
-- remove them from the output. For more information about XDS, see EIA-608
-- Line Data Services, section 9.5.1.5 05h Content Advisory.
--
-- 'inputs', 'jobSettings_inputs' - Use Inputs (inputs) to define source file used in the transcode job.
-- There can be multiple inputs add in a job. These inputs will be
-- concantenated together to create the output.
--
-- 'kantarWatermark', 'jobSettings_kantarWatermark' - Use these settings only when you use Kantar watermarking. Specify the
-- values that MediaConvert uses to generate and place Kantar watermarks in
-- your output audio. These settings apply to every output in your job. In
-- addition to specifying these values, you also need to store your Kantar
-- credentials in AWS Secrets Manager. For more information, see
-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/kantar-watermarking.html.
--
-- 'motionImageInserter', 'jobSettings_motionImageInserter' - Overlay motion graphics on top of your video. The motion graphics that
-- you specify here appear on all outputs in all output groups. For more
-- information, see
-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/motion-graphic-overlay.html.
--
-- 'nielsenConfiguration', 'jobSettings_nielsenConfiguration' - Settings for your Nielsen configuration. If you don\'t do Nielsen
-- measurement and analytics, ignore these settings. When you enable
-- Nielsen configuration (nielsenConfiguration), MediaConvert enables PCM
-- to ID3 tagging for all outputs in the job. To enable Nielsen
-- configuration programmatically, include an instance of
-- nielsenConfiguration in your JSON job specification. Even if you don\'t
-- include any children of nielsenConfiguration, you still enable the
-- setting.
--
-- 'nielsenNonLinearWatermark', 'jobSettings_nielsenNonLinearWatermark' - Ignore these settings unless you are using Nielsen non-linear
-- watermarking. Specify the values that MediaConvert uses to generate and
-- place Nielsen watermarks in your output audio. In addition to specifying
-- these values, you also need to set up your cloud TIC server. These
-- settings apply to every output in your job. The MediaConvert
-- implementation is currently with the following Nielsen versions: Nielsen
-- Watermark SDK Version 5.2.1 Nielsen NLM Watermark Engine Version 1.2.7
-- Nielsen Watermark Authenticator [SID_TIC] Version [5.0.0]
--
-- 'outputGroups', 'jobSettings_outputGroups' - (OutputGroups) contains one group of settings for each set of outputs
-- that share a common package type. All unpackaged files (MPEG-4, MPEG-2
-- TS, Quicktime, MXF, and no container) are grouped in a single output
-- group as well. Required in (OutputGroups) is a group of settings that
-- apply to the whole group. This required object depends on the value you
-- set for (Type) under (OutputGroups)>(OutputGroupSettings). Type,
-- settings object pairs are as follows. * FILE_GROUP_SETTINGS,
-- FileGroupSettings * HLS_GROUP_SETTINGS, HlsGroupSettings *
-- DASH_ISO_GROUP_SETTINGS, DashIsoGroupSettings *
-- MS_SMOOTH_GROUP_SETTINGS, MsSmoothGroupSettings * CMAF_GROUP_SETTINGS,
-- CmafGroupSettings
--
-- 'timecodeConfig', 'jobSettings_timecodeConfig' - These settings control how the service handles timecodes throughout the
-- job. These settings don\'t affect input clipping.
--
-- 'timedMetadataInsertion', 'jobSettings_timedMetadataInsertion' - Insert user-defined custom ID3 metadata (id3) at timecodes (timecode)
-- that you specify. In each output that you want to include this metadata,
-- you must set ID3 metadata (timedMetadata) to Passthrough (PASSTHROUGH).
newJobSettings ::
  JobSettings
newJobSettings :: JobSettings
newJobSettings =
  JobSettings'
    { $sel:adAvailOffset:JobSettings' :: Maybe Int
adAvailOffset = forall a. Maybe a
Prelude.Nothing,
      $sel:availBlanking:JobSettings' :: Maybe AvailBlanking
availBlanking = forall a. Maybe a
Prelude.Nothing,
      $sel:esam:JobSettings' :: Maybe EsamSettings
esam = forall a. Maybe a
Prelude.Nothing,
      $sel:extendedDataServices:JobSettings' :: Maybe ExtendedDataServices
extendedDataServices = forall a. Maybe a
Prelude.Nothing,
      $sel:inputs:JobSettings' :: Maybe [Input]
inputs = forall a. Maybe a
Prelude.Nothing,
      $sel:kantarWatermark:JobSettings' :: Maybe KantarWatermarkSettings
kantarWatermark = forall a. Maybe a
Prelude.Nothing,
      $sel:motionImageInserter:JobSettings' :: Maybe MotionImageInserter
motionImageInserter = forall a. Maybe a
Prelude.Nothing,
      $sel:nielsenConfiguration:JobSettings' :: Maybe NielsenConfiguration
nielsenConfiguration = forall a. Maybe a
Prelude.Nothing,
      $sel:nielsenNonLinearWatermark:JobSettings' :: Maybe NielsenNonLinearWatermarkSettings
nielsenNonLinearWatermark = forall a. Maybe a
Prelude.Nothing,
      $sel:outputGroups:JobSettings' :: Maybe [OutputGroup]
outputGroups = forall a. Maybe a
Prelude.Nothing,
      $sel:timecodeConfig:JobSettings' :: Maybe TimecodeConfig
timecodeConfig = forall a. Maybe a
Prelude.Nothing,
      $sel:timedMetadataInsertion:JobSettings' :: Maybe TimedMetadataInsertion
timedMetadataInsertion = forall a. Maybe a
Prelude.Nothing
    }

-- | When specified, this offset (in milliseconds) is added to the input Ad
-- Avail PTS time.
jobSettings_adAvailOffset :: Lens.Lens' JobSettings (Prelude.Maybe Prelude.Int)
jobSettings_adAvailOffset :: Lens' JobSettings (Maybe Int)
jobSettings_adAvailOffset = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\JobSettings' {Maybe Int
adAvailOffset :: Maybe Int
$sel:adAvailOffset:JobSettings' :: JobSettings -> Maybe Int
adAvailOffset} -> Maybe Int
adAvailOffset) (\s :: JobSettings
s@JobSettings' {} Maybe Int
a -> JobSettings
s {$sel:adAvailOffset:JobSettings' :: Maybe Int
adAvailOffset = Maybe Int
a} :: JobSettings)

-- | Settings for ad avail blanking. Video can be blanked or overlaid with an
-- image, and audio muted during SCTE-35 triggered ad avails.
jobSettings_availBlanking :: Lens.Lens' JobSettings (Prelude.Maybe AvailBlanking)
jobSettings_availBlanking :: Lens' JobSettings (Maybe AvailBlanking)
jobSettings_availBlanking = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\JobSettings' {Maybe AvailBlanking
availBlanking :: Maybe AvailBlanking
$sel:availBlanking:JobSettings' :: JobSettings -> Maybe AvailBlanking
availBlanking} -> Maybe AvailBlanking
availBlanking) (\s :: JobSettings
s@JobSettings' {} Maybe AvailBlanking
a -> JobSettings
s {$sel:availBlanking:JobSettings' :: Maybe AvailBlanking
availBlanking = Maybe AvailBlanking
a} :: JobSettings)

-- | Settings for Event Signaling And Messaging (ESAM). If you don\'t do ad
-- insertion, you can ignore these settings.
jobSettings_esam :: Lens.Lens' JobSettings (Prelude.Maybe EsamSettings)
jobSettings_esam :: Lens' JobSettings (Maybe EsamSettings)
jobSettings_esam = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\JobSettings' {Maybe EsamSettings
esam :: Maybe EsamSettings
$sel:esam:JobSettings' :: JobSettings -> Maybe EsamSettings
esam} -> Maybe EsamSettings
esam) (\s :: JobSettings
s@JobSettings' {} Maybe EsamSettings
a -> JobSettings
s {$sel:esam:JobSettings' :: Maybe EsamSettings
esam = Maybe EsamSettings
a} :: JobSettings)

-- | If your source content has EIA-608 Line 21 Data Services, enable this
-- feature to specify what MediaConvert does with the Extended Data
-- Services (XDS) packets. You can choose to pass through XDS packets, or
-- remove them from the output. For more information about XDS, see EIA-608
-- Line Data Services, section 9.5.1.5 05h Content Advisory.
jobSettings_extendedDataServices :: Lens.Lens' JobSettings (Prelude.Maybe ExtendedDataServices)
jobSettings_extendedDataServices :: Lens' JobSettings (Maybe ExtendedDataServices)
jobSettings_extendedDataServices = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\JobSettings' {Maybe ExtendedDataServices
extendedDataServices :: Maybe ExtendedDataServices
$sel:extendedDataServices:JobSettings' :: JobSettings -> Maybe ExtendedDataServices
extendedDataServices} -> Maybe ExtendedDataServices
extendedDataServices) (\s :: JobSettings
s@JobSettings' {} Maybe ExtendedDataServices
a -> JobSettings
s {$sel:extendedDataServices:JobSettings' :: Maybe ExtendedDataServices
extendedDataServices = Maybe ExtendedDataServices
a} :: JobSettings)

-- | Use Inputs (inputs) to define source file used in the transcode job.
-- There can be multiple inputs add in a job. These inputs will be
-- concantenated together to create the output.
jobSettings_inputs :: Lens.Lens' JobSettings (Prelude.Maybe [Input])
jobSettings_inputs :: Lens' JobSettings (Maybe [Input])
jobSettings_inputs = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\JobSettings' {Maybe [Input]
inputs :: Maybe [Input]
$sel:inputs:JobSettings' :: JobSettings -> Maybe [Input]
inputs} -> Maybe [Input]
inputs) (\s :: JobSettings
s@JobSettings' {} Maybe [Input]
a -> JobSettings
s {$sel:inputs:JobSettings' :: Maybe [Input]
inputs = Maybe [Input]
a} :: JobSettings) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. 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 forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | Use these settings only when you use Kantar watermarking. Specify the
-- values that MediaConvert uses to generate and place Kantar watermarks in
-- your output audio. These settings apply to every output in your job. In
-- addition to specifying these values, you also need to store your Kantar
-- credentials in AWS Secrets Manager. For more information, see
-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/kantar-watermarking.html.
jobSettings_kantarWatermark :: Lens.Lens' JobSettings (Prelude.Maybe KantarWatermarkSettings)
jobSettings_kantarWatermark :: Lens' JobSettings (Maybe KantarWatermarkSettings)
jobSettings_kantarWatermark = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\JobSettings' {Maybe KantarWatermarkSettings
kantarWatermark :: Maybe KantarWatermarkSettings
$sel:kantarWatermark:JobSettings' :: JobSettings -> Maybe KantarWatermarkSettings
kantarWatermark} -> Maybe KantarWatermarkSettings
kantarWatermark) (\s :: JobSettings
s@JobSettings' {} Maybe KantarWatermarkSettings
a -> JobSettings
s {$sel:kantarWatermark:JobSettings' :: Maybe KantarWatermarkSettings
kantarWatermark = Maybe KantarWatermarkSettings
a} :: JobSettings)

-- | Overlay motion graphics on top of your video. The motion graphics that
-- you specify here appear on all outputs in all output groups. For more
-- information, see
-- https:\/\/docs.aws.amazon.com\/mediaconvert\/latest\/ug\/motion-graphic-overlay.html.
jobSettings_motionImageInserter :: Lens.Lens' JobSettings (Prelude.Maybe MotionImageInserter)
jobSettings_motionImageInserter :: Lens' JobSettings (Maybe MotionImageInserter)
jobSettings_motionImageInserter = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\JobSettings' {Maybe MotionImageInserter
motionImageInserter :: Maybe MotionImageInserter
$sel:motionImageInserter:JobSettings' :: JobSettings -> Maybe MotionImageInserter
motionImageInserter} -> Maybe MotionImageInserter
motionImageInserter) (\s :: JobSettings
s@JobSettings' {} Maybe MotionImageInserter
a -> JobSettings
s {$sel:motionImageInserter:JobSettings' :: Maybe MotionImageInserter
motionImageInserter = Maybe MotionImageInserter
a} :: JobSettings)

-- | Settings for your Nielsen configuration. If you don\'t do Nielsen
-- measurement and analytics, ignore these settings. When you enable
-- Nielsen configuration (nielsenConfiguration), MediaConvert enables PCM
-- to ID3 tagging for all outputs in the job. To enable Nielsen
-- configuration programmatically, include an instance of
-- nielsenConfiguration in your JSON job specification. Even if you don\'t
-- include any children of nielsenConfiguration, you still enable the
-- setting.
jobSettings_nielsenConfiguration :: Lens.Lens' JobSettings (Prelude.Maybe NielsenConfiguration)
jobSettings_nielsenConfiguration :: Lens' JobSettings (Maybe NielsenConfiguration)
jobSettings_nielsenConfiguration = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\JobSettings' {Maybe NielsenConfiguration
nielsenConfiguration :: Maybe NielsenConfiguration
$sel:nielsenConfiguration:JobSettings' :: JobSettings -> Maybe NielsenConfiguration
nielsenConfiguration} -> Maybe NielsenConfiguration
nielsenConfiguration) (\s :: JobSettings
s@JobSettings' {} Maybe NielsenConfiguration
a -> JobSettings
s {$sel:nielsenConfiguration:JobSettings' :: Maybe NielsenConfiguration
nielsenConfiguration = Maybe NielsenConfiguration
a} :: JobSettings)

-- | Ignore these settings unless you are using Nielsen non-linear
-- watermarking. Specify the values that MediaConvert uses to generate and
-- place Nielsen watermarks in your output audio. In addition to specifying
-- these values, you also need to set up your cloud TIC server. These
-- settings apply to every output in your job. The MediaConvert
-- implementation is currently with the following Nielsen versions: Nielsen
-- Watermark SDK Version 5.2.1 Nielsen NLM Watermark Engine Version 1.2.7
-- Nielsen Watermark Authenticator [SID_TIC] Version [5.0.0]
jobSettings_nielsenNonLinearWatermark :: Lens.Lens' JobSettings (Prelude.Maybe NielsenNonLinearWatermarkSettings)
jobSettings_nielsenNonLinearWatermark :: Lens' JobSettings (Maybe NielsenNonLinearWatermarkSettings)
jobSettings_nielsenNonLinearWatermark = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\JobSettings' {Maybe NielsenNonLinearWatermarkSettings
nielsenNonLinearWatermark :: Maybe NielsenNonLinearWatermarkSettings
$sel:nielsenNonLinearWatermark:JobSettings' :: JobSettings -> Maybe NielsenNonLinearWatermarkSettings
nielsenNonLinearWatermark} -> Maybe NielsenNonLinearWatermarkSettings
nielsenNonLinearWatermark) (\s :: JobSettings
s@JobSettings' {} Maybe NielsenNonLinearWatermarkSettings
a -> JobSettings
s {$sel:nielsenNonLinearWatermark:JobSettings' :: Maybe NielsenNonLinearWatermarkSettings
nielsenNonLinearWatermark = Maybe NielsenNonLinearWatermarkSettings
a} :: JobSettings)

-- | (OutputGroups) contains one group of settings for each set of outputs
-- that share a common package type. All unpackaged files (MPEG-4, MPEG-2
-- TS, Quicktime, MXF, and no container) are grouped in a single output
-- group as well. Required in (OutputGroups) is a group of settings that
-- apply to the whole group. This required object depends on the value you
-- set for (Type) under (OutputGroups)>(OutputGroupSettings). Type,
-- settings object pairs are as follows. * FILE_GROUP_SETTINGS,
-- FileGroupSettings * HLS_GROUP_SETTINGS, HlsGroupSettings *
-- DASH_ISO_GROUP_SETTINGS, DashIsoGroupSettings *
-- MS_SMOOTH_GROUP_SETTINGS, MsSmoothGroupSettings * CMAF_GROUP_SETTINGS,
-- CmafGroupSettings
jobSettings_outputGroups :: Lens.Lens' JobSettings (Prelude.Maybe [OutputGroup])
jobSettings_outputGroups :: Lens' JobSettings (Maybe [OutputGroup])
jobSettings_outputGroups = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\JobSettings' {Maybe [OutputGroup]
outputGroups :: Maybe [OutputGroup]
$sel:outputGroups:JobSettings' :: JobSettings -> Maybe [OutputGroup]
outputGroups} -> Maybe [OutputGroup]
outputGroups) (\s :: JobSettings
s@JobSettings' {} Maybe [OutputGroup]
a -> JobSettings
s {$sel:outputGroups:JobSettings' :: Maybe [OutputGroup]
outputGroups = Maybe [OutputGroup]
a} :: JobSettings) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. 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 forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | These settings control how the service handles timecodes throughout the
-- job. These settings don\'t affect input clipping.
jobSettings_timecodeConfig :: Lens.Lens' JobSettings (Prelude.Maybe TimecodeConfig)
jobSettings_timecodeConfig :: Lens' JobSettings (Maybe TimecodeConfig)
jobSettings_timecodeConfig = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\JobSettings' {Maybe TimecodeConfig
timecodeConfig :: Maybe TimecodeConfig
$sel:timecodeConfig:JobSettings' :: JobSettings -> Maybe TimecodeConfig
timecodeConfig} -> Maybe TimecodeConfig
timecodeConfig) (\s :: JobSettings
s@JobSettings' {} Maybe TimecodeConfig
a -> JobSettings
s {$sel:timecodeConfig:JobSettings' :: Maybe TimecodeConfig
timecodeConfig = Maybe TimecodeConfig
a} :: JobSettings)

-- | Insert user-defined custom ID3 metadata (id3) at timecodes (timecode)
-- that you specify. In each output that you want to include this metadata,
-- you must set ID3 metadata (timedMetadata) to Passthrough (PASSTHROUGH).
jobSettings_timedMetadataInsertion :: Lens.Lens' JobSettings (Prelude.Maybe TimedMetadataInsertion)
jobSettings_timedMetadataInsertion :: Lens' JobSettings (Maybe TimedMetadataInsertion)
jobSettings_timedMetadataInsertion = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\JobSettings' {Maybe TimedMetadataInsertion
timedMetadataInsertion :: Maybe TimedMetadataInsertion
$sel:timedMetadataInsertion:JobSettings' :: JobSettings -> Maybe TimedMetadataInsertion
timedMetadataInsertion} -> Maybe TimedMetadataInsertion
timedMetadataInsertion) (\s :: JobSettings
s@JobSettings' {} Maybe TimedMetadataInsertion
a -> JobSettings
s {$sel:timedMetadataInsertion:JobSettings' :: Maybe TimedMetadataInsertion
timedMetadataInsertion = Maybe TimedMetadataInsertion
a} :: JobSettings)

instance Data.FromJSON JobSettings where
  parseJSON :: Value -> Parser JobSettings
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"JobSettings"
      ( \Object
x ->
          Maybe Int
-> Maybe AvailBlanking
-> Maybe EsamSettings
-> Maybe ExtendedDataServices
-> Maybe [Input]
-> Maybe KantarWatermarkSettings
-> Maybe MotionImageInserter
-> Maybe NielsenConfiguration
-> Maybe NielsenNonLinearWatermarkSettings
-> Maybe [OutputGroup]
-> Maybe TimecodeConfig
-> Maybe TimedMetadataInsertion
-> JobSettings
JobSettings'
            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
"adAvailOffset")
            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
"availBlanking")
            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
"esam")
            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
"extendedDataServices")
            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
"inputs" forall a. Parser (Maybe a) -> a -> Parser a
Data..!= forall a. Monoid a => a
Prelude.mempty)
            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
"kantarWatermark")
            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
"motionImageInserter")
            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
"nielsenConfiguration")
            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
"nielsenNonLinearWatermark")
            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
"outputGroups" forall a. Parser (Maybe a) -> a -> Parser a
Data..!= forall a. Monoid a => a
Prelude.mempty)
            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
"timecodeConfig")
            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
"timedMetadataInsertion")
      )

instance Prelude.Hashable JobSettings where
  hashWithSalt :: Int -> JobSettings -> Int
hashWithSalt Int
_salt JobSettings' {Maybe Int
Maybe [Input]
Maybe [OutputGroup]
Maybe AvailBlanking
Maybe EsamSettings
Maybe KantarWatermarkSettings
Maybe MotionImageInserter
Maybe NielsenConfiguration
Maybe NielsenNonLinearWatermarkSettings
Maybe TimecodeConfig
Maybe TimedMetadataInsertion
Maybe ExtendedDataServices
timedMetadataInsertion :: Maybe TimedMetadataInsertion
timecodeConfig :: Maybe TimecodeConfig
outputGroups :: Maybe [OutputGroup]
nielsenNonLinearWatermark :: Maybe NielsenNonLinearWatermarkSettings
nielsenConfiguration :: Maybe NielsenConfiguration
motionImageInserter :: Maybe MotionImageInserter
kantarWatermark :: Maybe KantarWatermarkSettings
inputs :: Maybe [Input]
extendedDataServices :: Maybe ExtendedDataServices
esam :: Maybe EsamSettings
availBlanking :: Maybe AvailBlanking
adAvailOffset :: Maybe Int
$sel:timedMetadataInsertion:JobSettings' :: JobSettings -> Maybe TimedMetadataInsertion
$sel:timecodeConfig:JobSettings' :: JobSettings -> Maybe TimecodeConfig
$sel:outputGroups:JobSettings' :: JobSettings -> Maybe [OutputGroup]
$sel:nielsenNonLinearWatermark:JobSettings' :: JobSettings -> Maybe NielsenNonLinearWatermarkSettings
$sel:nielsenConfiguration:JobSettings' :: JobSettings -> Maybe NielsenConfiguration
$sel:motionImageInserter:JobSettings' :: JobSettings -> Maybe MotionImageInserter
$sel:kantarWatermark:JobSettings' :: JobSettings -> Maybe KantarWatermarkSettings
$sel:inputs:JobSettings' :: JobSettings -> Maybe [Input]
$sel:extendedDataServices:JobSettings' :: JobSettings -> Maybe ExtendedDataServices
$sel:esam:JobSettings' :: JobSettings -> Maybe EsamSettings
$sel:availBlanking:JobSettings' :: JobSettings -> Maybe AvailBlanking
$sel:adAvailOffset:JobSettings' :: JobSettings -> Maybe Int
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
adAvailOffset
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe AvailBlanking
availBlanking
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe EsamSettings
esam
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ExtendedDataServices
extendedDataServices
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Input]
inputs
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe KantarWatermarkSettings
kantarWatermark
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe MotionImageInserter
motionImageInserter
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe NielsenConfiguration
nielsenConfiguration
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe NielsenNonLinearWatermarkSettings
nielsenNonLinearWatermark
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [OutputGroup]
outputGroups
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe TimecodeConfig
timecodeConfig
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe TimedMetadataInsertion
timedMetadataInsertion

instance Prelude.NFData JobSettings where
  rnf :: JobSettings -> ()
rnf JobSettings' {Maybe Int
Maybe [Input]
Maybe [OutputGroup]
Maybe AvailBlanking
Maybe EsamSettings
Maybe KantarWatermarkSettings
Maybe MotionImageInserter
Maybe NielsenConfiguration
Maybe NielsenNonLinearWatermarkSettings
Maybe TimecodeConfig
Maybe TimedMetadataInsertion
Maybe ExtendedDataServices
timedMetadataInsertion :: Maybe TimedMetadataInsertion
timecodeConfig :: Maybe TimecodeConfig
outputGroups :: Maybe [OutputGroup]
nielsenNonLinearWatermark :: Maybe NielsenNonLinearWatermarkSettings
nielsenConfiguration :: Maybe NielsenConfiguration
motionImageInserter :: Maybe MotionImageInserter
kantarWatermark :: Maybe KantarWatermarkSettings
inputs :: Maybe [Input]
extendedDataServices :: Maybe ExtendedDataServices
esam :: Maybe EsamSettings
availBlanking :: Maybe AvailBlanking
adAvailOffset :: Maybe Int
$sel:timedMetadataInsertion:JobSettings' :: JobSettings -> Maybe TimedMetadataInsertion
$sel:timecodeConfig:JobSettings' :: JobSettings -> Maybe TimecodeConfig
$sel:outputGroups:JobSettings' :: JobSettings -> Maybe [OutputGroup]
$sel:nielsenNonLinearWatermark:JobSettings' :: JobSettings -> Maybe NielsenNonLinearWatermarkSettings
$sel:nielsenConfiguration:JobSettings' :: JobSettings -> Maybe NielsenConfiguration
$sel:motionImageInserter:JobSettings' :: JobSettings -> Maybe MotionImageInserter
$sel:kantarWatermark:JobSettings' :: JobSettings -> Maybe KantarWatermarkSettings
$sel:inputs:JobSettings' :: JobSettings -> Maybe [Input]
$sel:extendedDataServices:JobSettings' :: JobSettings -> Maybe ExtendedDataServices
$sel:esam:JobSettings' :: JobSettings -> Maybe EsamSettings
$sel:availBlanking:JobSettings' :: JobSettings -> Maybe AvailBlanking
$sel:adAvailOffset:JobSettings' :: JobSettings -> Maybe Int
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
adAvailOffset
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe AvailBlanking
availBlanking
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe EsamSettings
esam
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ExtendedDataServices
extendedDataServices
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Input]
inputs
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe KantarWatermarkSettings
kantarWatermark
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe MotionImageInserter
motionImageInserter
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe NielsenConfiguration
nielsenConfiguration
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe NielsenNonLinearWatermarkSettings
nielsenNonLinearWatermark
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [OutputGroup]
outputGroups
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe TimecodeConfig
timecodeConfig
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe TimedMetadataInsertion
timedMetadataInsertion

instance Data.ToJSON JobSettings where
  toJSON :: JobSettings -> Value
toJSON JobSettings' {Maybe Int
Maybe [Input]
Maybe [OutputGroup]
Maybe AvailBlanking
Maybe EsamSettings
Maybe KantarWatermarkSettings
Maybe MotionImageInserter
Maybe NielsenConfiguration
Maybe NielsenNonLinearWatermarkSettings
Maybe TimecodeConfig
Maybe TimedMetadataInsertion
Maybe ExtendedDataServices
timedMetadataInsertion :: Maybe TimedMetadataInsertion
timecodeConfig :: Maybe TimecodeConfig
outputGroups :: Maybe [OutputGroup]
nielsenNonLinearWatermark :: Maybe NielsenNonLinearWatermarkSettings
nielsenConfiguration :: Maybe NielsenConfiguration
motionImageInserter :: Maybe MotionImageInserter
kantarWatermark :: Maybe KantarWatermarkSettings
inputs :: Maybe [Input]
extendedDataServices :: Maybe ExtendedDataServices
esam :: Maybe EsamSettings
availBlanking :: Maybe AvailBlanking
adAvailOffset :: Maybe Int
$sel:timedMetadataInsertion:JobSettings' :: JobSettings -> Maybe TimedMetadataInsertion
$sel:timecodeConfig:JobSettings' :: JobSettings -> Maybe TimecodeConfig
$sel:outputGroups:JobSettings' :: JobSettings -> Maybe [OutputGroup]
$sel:nielsenNonLinearWatermark:JobSettings' :: JobSettings -> Maybe NielsenNonLinearWatermarkSettings
$sel:nielsenConfiguration:JobSettings' :: JobSettings -> Maybe NielsenConfiguration
$sel:motionImageInserter:JobSettings' :: JobSettings -> Maybe MotionImageInserter
$sel:kantarWatermark:JobSettings' :: JobSettings -> Maybe KantarWatermarkSettings
$sel:inputs:JobSettings' :: JobSettings -> Maybe [Input]
$sel:extendedDataServices:JobSettings' :: JobSettings -> Maybe ExtendedDataServices
$sel:esam:JobSettings' :: JobSettings -> Maybe EsamSettings
$sel:availBlanking:JobSettings' :: JobSettings -> Maybe AvailBlanking
$sel:adAvailOffset:JobSettings' :: JobSettings -> Maybe Int
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"adAvailOffset" 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 Int
adAvailOffset,
            (Key
"availBlanking" 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 AvailBlanking
availBlanking,
            (Key
"esam" 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 EsamSettings
esam,
            (Key
"extendedDataServices" 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 ExtendedDataServices
extendedDataServices,
            (Key
"inputs" 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 [Input]
inputs,
            (Key
"kantarWatermark" 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 KantarWatermarkSettings
kantarWatermark,
            (Key
"motionImageInserter" 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 MotionImageInserter
motionImageInserter,
            (Key
"nielsenConfiguration" 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 NielsenConfiguration
nielsenConfiguration,
            (Key
"nielsenNonLinearWatermark" 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 NielsenNonLinearWatermarkSettings
nielsenNonLinearWatermark,
            (Key
"outputGroups" 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 [OutputGroup]
outputGroups,
            (Key
"timecodeConfig" 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 TimecodeConfig
timecodeConfig,
            (Key
"timedMetadataInsertion" 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 TimedMetadataInsertion
timedMetadataInsertion
          ]
      )