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

import qualified Amazonka.Core as Core
import qualified Amazonka.Lens as Lens
import Amazonka.MediaConvert.Types.Eac3AtmosBitstreamMode
import Amazonka.MediaConvert.Types.Eac3AtmosCodingMode
import Amazonka.MediaConvert.Types.Eac3AtmosDialogueIntelligence
import Amazonka.MediaConvert.Types.Eac3AtmosDownmixControl
import Amazonka.MediaConvert.Types.Eac3AtmosDynamicRangeCompressionLine
import Amazonka.MediaConvert.Types.Eac3AtmosDynamicRangeCompressionRf
import Amazonka.MediaConvert.Types.Eac3AtmosDynamicRangeControl
import Amazonka.MediaConvert.Types.Eac3AtmosMeteringMode
import Amazonka.MediaConvert.Types.Eac3AtmosStereoDownmix
import Amazonka.MediaConvert.Types.Eac3AtmosSurroundExMode
import qualified Amazonka.Prelude as Prelude

-- | Required when you set (Codec) under (AudioDescriptions)>(CodecSettings)
-- to the value EAC3_ATMOS.
--
-- /See:/ 'newEac3AtmosSettings' smart constructor.
data Eac3AtmosSettings = Eac3AtmosSettings'
  { -- | Choose how the service does stereo downmixing. Default value: Not
    -- indicated (ATMOS_STORAGE_DDP_DMIXMOD_NOT_INDICATED) Related setting: To
    -- have MediaConvert use this value, keep the default value, Custom
    -- (SPECIFIED) for the setting Downmix control (DownmixControl). Otherwise,
    -- MediaConvert ignores Stereo downmix (StereoDownmix).
    Eac3AtmosSettings -> Maybe Eac3AtmosStereoDownmix
stereoDownmix :: Prelude.Maybe Eac3AtmosStereoDownmix,
    -- | Specify a value for the following Dolby Atmos setting: Left only\/Right
    -- only center mix (Lo\/Ro center). MediaConvert uses this value for
    -- downmixing. Default value: -3 dB (ATMOS_STORAGE_DDP_MIXLEV_MINUS_3_DB).
    -- Valid values: 3.0, 1.5, 0.0, -1.5, -3.0, -4.5, and -6.0. Related
    -- setting: How the service uses this value depends on the value that you
    -- choose for Stereo downmix (Eac3AtmosStereoDownmix). Related setting: To
    -- have MediaConvert use this value, keep the default value, Custom
    -- (SPECIFIED) for the setting Downmix control (DownmixControl). Otherwise,
    -- MediaConvert ignores Left only\/Right only center (LoRoCenterMixLevel).
    Eac3AtmosSettings -> Maybe Double
loRoCenterMixLevel :: Prelude.Maybe Prelude.Double,
    -- | Specify a value for the following Dolby Atmos setting: Left total\/Right
    -- total center mix (Lt\/Rt center). MediaConvert uses this value for
    -- downmixing. Default value: -3 dB (ATMOS_STORAGE_DDP_MIXLEV_MINUS_3_DB)
    -- Valid values: 3.0, 1.5, 0.0, -1.5, -3.0, -4.5, and -6.0. Related
    -- setting: How the service uses this value depends on the value that you
    -- choose for Stereo downmix (Eac3AtmosStereoDownmix). Related setting: To
    -- have MediaConvert use this value, keep the default value, Custom
    -- (SPECIFIED) for the setting Downmix control (DownmixControl). Otherwise,
    -- MediaConvert ignores Left total\/Right total center
    -- (LtRtCenterMixLevel).
    Eac3AtmosSettings -> Maybe Double
ltRtCenterMixLevel :: Prelude.Maybe Prelude.Double,
    -- | Choose the Dolby dynamic range control (DRC) profile that MediaConvert
    -- uses when encoding the metadata in the Dolby stream for the line
    -- operating mode. Default value: Film light
    -- (ATMOS_STORAGE_DDP_COMPR_FILM_LIGHT) Related setting: To have
    -- MediaConvert use the value you specify here, keep the default value,
    -- Custom (SPECIFIED) for the setting Dynamic range control
    -- (DynamicRangeControl). Otherwise, MediaConvert ignores Dynamic range
    -- compression line (DynamicRangeCompressionLine). For information about
    -- the Dolby DRC operating modes and profiles, see the Dynamic Range
    -- Control chapter of the Dolby Metadata Guide at
    -- https:\/\/developer.dolby.com\/globalassets\/professional\/documents\/dolby-metadata-guide.pdf.
    Eac3AtmosSettings -> Maybe Eac3AtmosDynamicRangeCompressionLine
dynamicRangeCompressionLine :: Prelude.Maybe Eac3AtmosDynamicRangeCompressionLine,
    -- | Specify a value for the following Dolby Atmos setting: Left total\/Right
    -- total surround mix (Lt\/Rt surround). MediaConvert uses this value for
    -- downmixing. Default value: -3 dB (ATMOS_STORAGE_DDP_MIXLEV_MINUS_3_DB)
    -- Valid values: -1.5, -3.0, -4.5, -6.0, and -60. The value -60 mutes the
    -- channel. Related setting: How the service uses this value depends on the
    -- value that you choose for Stereo downmix (Eac3AtmosStereoDownmix).
    -- Related setting: To have MediaConvert use this value, keep the default
    -- value, Custom (SPECIFIED) for the setting Downmix control
    -- (DownmixControl). Otherwise, the service ignores Left total\/Right total
    -- surround (LtRtSurroundMixLevel).
    Eac3AtmosSettings -> Maybe Double
ltRtSurroundMixLevel :: Prelude.Maybe Prelude.Double,
    -- | Specify a value for the following Dolby Atmos setting: Left only\/Right
    -- only (Lo\/Ro surround). MediaConvert uses this value for downmixing.
    -- Default value: -3 dB (ATMOS_STORAGE_DDP_MIXLEV_MINUS_3_DB). Valid
    -- values: -1.5, -3.0, -4.5, -6.0, and -60. The value -60 mutes the
    -- channel. Related setting: How the service uses this value depends on the
    -- value that you choose for Stereo downmix (Eac3AtmosStereoDownmix).
    -- Related setting: To have MediaConvert use this value, keep the default
    -- value, Custom (SPECIFIED) for the setting Downmix control
    -- (DownmixControl). Otherwise, MediaConvert ignores Left only\/Right only
    -- surround (LoRoSurroundMixLevel).
    Eac3AtmosSettings -> Maybe Double
loRoSurroundMixLevel :: Prelude.Maybe Prelude.Double,
    -- | Specify whether MediaConvert should use any dynamic range control
    -- metadata from your input file. Keep the default value, Custom
    -- (SPECIFIED), to provide dynamic range control values in your job
    -- settings. Choose Follow source (INITIALIZE_FROM_SOURCE) to use the
    -- metadata from your input. Related settings--Use these settings to
    -- specify your dynamic range control values: Dynamic range compression
    -- line (DynamicRangeCompressionLine) and Dynamic range compression RF
    -- (DynamicRangeCompressionRf). When you keep the value Custom (SPECIFIED)
    -- for Dynamic range control (DynamicRangeControl) and you don\'t specify
    -- values for the related settings, MediaConvert uses default values for
    -- those settings.
    Eac3AtmosSettings -> Maybe Eac3AtmosDynamicRangeControl
dynamicRangeControl :: Prelude.Maybe Eac3AtmosDynamicRangeControl,
    -- | Specify the bitstream mode for the E-AC-3 stream that the encoder emits.
    -- For more information about the EAC3 bitstream mode, see ATSC A\/52-2012
    -- (Annex E).
    Eac3AtmosSettings -> Maybe Eac3AtmosBitstreamMode
bitstreamMode :: Prelude.Maybe Eac3AtmosBitstreamMode,
    -- | Choose the Dolby dynamic range control (DRC) profile that MediaConvert
    -- uses when encoding the metadata in the Dolby stream for the RF operating
    -- mode. Default value: Film light (ATMOS_STORAGE_DDP_COMPR_FILM_LIGHT)
    -- Related setting: To have MediaConvert use the value you specify here,
    -- keep the default value, Custom (SPECIFIED) for the setting Dynamic range
    -- control (DynamicRangeControl). Otherwise, MediaConvert ignores Dynamic
    -- range compression RF (DynamicRangeCompressionRf). For information about
    -- the Dolby DRC operating modes and profiles, see the Dynamic Range
    -- Control chapter of the Dolby Metadata Guide at
    -- https:\/\/developer.dolby.com\/globalassets\/professional\/documents\/dolby-metadata-guide.pdf.
    Eac3AtmosSettings -> Maybe Eac3AtmosDynamicRangeCompressionRf
dynamicRangeCompressionRf :: Prelude.Maybe Eac3AtmosDynamicRangeCompressionRf,
    -- | The coding mode for Dolby Digital Plus JOC (Atmos).
    Eac3AtmosSettings -> Maybe Eac3AtmosCodingMode
codingMode :: Prelude.Maybe Eac3AtmosCodingMode,
    -- | This value is always 48000. It represents the sample rate in Hz.
    Eac3AtmosSettings -> Maybe Natural
sampleRate :: Prelude.Maybe Prelude.Natural,
    -- | Specify the percentage of audio content, from 0% to 100%, that must be
    -- speech in order for the encoder to use the measured speech loudness as
    -- the overall program loudness. Default value: 15%
    Eac3AtmosSettings -> Maybe Natural
speechThreshold :: Prelude.Maybe Prelude.Natural,
    -- | Specify the average bitrate for this output in bits per second. Valid
    -- values: 384k, 448k, 576k, 640k, 768k, 1024k Default value: 448k Note
    -- that MediaConvert supports 384k only with channel-based immersive (CBI)
    -- 7.1.4 and 5.1.4 inputs. For CBI 9.1.6 and other input types,
    -- MediaConvert automatically increases your output bitrate to 448k.
    Eac3AtmosSettings -> Maybe Natural
bitrate :: Prelude.Maybe Prelude.Natural,
    -- | Enable Dolby Dialogue Intelligence to adjust loudness based on dialogue
    -- analysis.
    Eac3AtmosSettings -> Maybe Eac3AtmosDialogueIntelligence
dialogueIntelligence :: Prelude.Maybe Eac3AtmosDialogueIntelligence,
    -- | Choose how the service meters the loudness of your audio.
    Eac3AtmosSettings -> Maybe Eac3AtmosMeteringMode
meteringMode :: Prelude.Maybe Eac3AtmosMeteringMode,
    -- | Specify whether your input audio has an additional center rear surround
    -- channel matrix encoded into your left and right surround channels.
    Eac3AtmosSettings -> Maybe Eac3AtmosSurroundExMode
surroundExMode :: Prelude.Maybe Eac3AtmosSurroundExMode,
    -- | Specify whether MediaConvert should use any downmix metadata from your
    -- input file. Keep the default value, Custom (SPECIFIED) to provide
    -- downmix values in your job settings. Choose Follow source
    -- (INITIALIZE_FROM_SOURCE) to use the metadata from your input. Related
    -- settings--Use these settings to specify your downmix values: Left
    -- only\/Right only surround (LoRoSurroundMixLevel), Left total\/Right
    -- total surround (LtRtSurroundMixLevel), Left total\/Right total center
    -- (LtRtCenterMixLevel), Left only\/Right only center (LoRoCenterMixLevel),
    -- and Stereo downmix (StereoDownmix). When you keep Custom (SPECIFIED) for
    -- Downmix control (DownmixControl) and you don\'t specify values for the
    -- related settings, MediaConvert uses default values for those settings.
    Eac3AtmosSettings -> Maybe Eac3AtmosDownmixControl
downmixControl :: Prelude.Maybe Eac3AtmosDownmixControl
  }
  deriving (Eac3AtmosSettings -> Eac3AtmosSettings -> Bool
(Eac3AtmosSettings -> Eac3AtmosSettings -> Bool)
-> (Eac3AtmosSettings -> Eac3AtmosSettings -> Bool)
-> Eq Eac3AtmosSettings
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Eac3AtmosSettings -> Eac3AtmosSettings -> Bool
$c/= :: Eac3AtmosSettings -> Eac3AtmosSettings -> Bool
== :: Eac3AtmosSettings -> Eac3AtmosSettings -> Bool
$c== :: Eac3AtmosSettings -> Eac3AtmosSettings -> Bool
Prelude.Eq, ReadPrec [Eac3AtmosSettings]
ReadPrec Eac3AtmosSettings
Int -> ReadS Eac3AtmosSettings
ReadS [Eac3AtmosSettings]
(Int -> ReadS Eac3AtmosSettings)
-> ReadS [Eac3AtmosSettings]
-> ReadPrec Eac3AtmosSettings
-> ReadPrec [Eac3AtmosSettings]
-> Read Eac3AtmosSettings
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [Eac3AtmosSettings]
$creadListPrec :: ReadPrec [Eac3AtmosSettings]
readPrec :: ReadPrec Eac3AtmosSettings
$creadPrec :: ReadPrec Eac3AtmosSettings
readList :: ReadS [Eac3AtmosSettings]
$creadList :: ReadS [Eac3AtmosSettings]
readsPrec :: Int -> ReadS Eac3AtmosSettings
$creadsPrec :: Int -> ReadS Eac3AtmosSettings
Prelude.Read, Int -> Eac3AtmosSettings -> ShowS
[Eac3AtmosSettings] -> ShowS
Eac3AtmosSettings -> String
(Int -> Eac3AtmosSettings -> ShowS)
-> (Eac3AtmosSettings -> String)
-> ([Eac3AtmosSettings] -> ShowS)
-> Show Eac3AtmosSettings
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Eac3AtmosSettings] -> ShowS
$cshowList :: [Eac3AtmosSettings] -> ShowS
show :: Eac3AtmosSettings -> String
$cshow :: Eac3AtmosSettings -> String
showsPrec :: Int -> Eac3AtmosSettings -> ShowS
$cshowsPrec :: Int -> Eac3AtmosSettings -> ShowS
Prelude.Show, (forall x. Eac3AtmosSettings -> Rep Eac3AtmosSettings x)
-> (forall x. Rep Eac3AtmosSettings x -> Eac3AtmosSettings)
-> Generic Eac3AtmosSettings
forall x. Rep Eac3AtmosSettings x -> Eac3AtmosSettings
forall x. Eac3AtmosSettings -> Rep Eac3AtmosSettings x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep Eac3AtmosSettings x -> Eac3AtmosSettings
$cfrom :: forall x. Eac3AtmosSettings -> Rep Eac3AtmosSettings x
Prelude.Generic)

-- |
-- Create a value of 'Eac3AtmosSettings' 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:
--
-- 'stereoDownmix', 'eac3AtmosSettings_stereoDownmix' - Choose how the service does stereo downmixing. Default value: Not
-- indicated (ATMOS_STORAGE_DDP_DMIXMOD_NOT_INDICATED) Related setting: To
-- have MediaConvert use this value, keep the default value, Custom
-- (SPECIFIED) for the setting Downmix control (DownmixControl). Otherwise,
-- MediaConvert ignores Stereo downmix (StereoDownmix).
--
-- 'loRoCenterMixLevel', 'eac3AtmosSettings_loRoCenterMixLevel' - Specify a value for the following Dolby Atmos setting: Left only\/Right
-- only center mix (Lo\/Ro center). MediaConvert uses this value for
-- downmixing. Default value: -3 dB (ATMOS_STORAGE_DDP_MIXLEV_MINUS_3_DB).
-- Valid values: 3.0, 1.5, 0.0, -1.5, -3.0, -4.5, and -6.0. Related
-- setting: How the service uses this value depends on the value that you
-- choose for Stereo downmix (Eac3AtmosStereoDownmix). Related setting: To
-- have MediaConvert use this value, keep the default value, Custom
-- (SPECIFIED) for the setting Downmix control (DownmixControl). Otherwise,
-- MediaConvert ignores Left only\/Right only center (LoRoCenterMixLevel).
--
-- 'ltRtCenterMixLevel', 'eac3AtmosSettings_ltRtCenterMixLevel' - Specify a value for the following Dolby Atmos setting: Left total\/Right
-- total center mix (Lt\/Rt center). MediaConvert uses this value for
-- downmixing. Default value: -3 dB (ATMOS_STORAGE_DDP_MIXLEV_MINUS_3_DB)
-- Valid values: 3.0, 1.5, 0.0, -1.5, -3.0, -4.5, and -6.0. Related
-- setting: How the service uses this value depends on the value that you
-- choose for Stereo downmix (Eac3AtmosStereoDownmix). Related setting: To
-- have MediaConvert use this value, keep the default value, Custom
-- (SPECIFIED) for the setting Downmix control (DownmixControl). Otherwise,
-- MediaConvert ignores Left total\/Right total center
-- (LtRtCenterMixLevel).
--
-- 'dynamicRangeCompressionLine', 'eac3AtmosSettings_dynamicRangeCompressionLine' - Choose the Dolby dynamic range control (DRC) profile that MediaConvert
-- uses when encoding the metadata in the Dolby stream for the line
-- operating mode. Default value: Film light
-- (ATMOS_STORAGE_DDP_COMPR_FILM_LIGHT) Related setting: To have
-- MediaConvert use the value you specify here, keep the default value,
-- Custom (SPECIFIED) for the setting Dynamic range control
-- (DynamicRangeControl). Otherwise, MediaConvert ignores Dynamic range
-- compression line (DynamicRangeCompressionLine). For information about
-- the Dolby DRC operating modes and profiles, see the Dynamic Range
-- Control chapter of the Dolby Metadata Guide at
-- https:\/\/developer.dolby.com\/globalassets\/professional\/documents\/dolby-metadata-guide.pdf.
--
-- 'ltRtSurroundMixLevel', 'eac3AtmosSettings_ltRtSurroundMixLevel' - Specify a value for the following Dolby Atmos setting: Left total\/Right
-- total surround mix (Lt\/Rt surround). MediaConvert uses this value for
-- downmixing. Default value: -3 dB (ATMOS_STORAGE_DDP_MIXLEV_MINUS_3_DB)
-- Valid values: -1.5, -3.0, -4.5, -6.0, and -60. The value -60 mutes the
-- channel. Related setting: How the service uses this value depends on the
-- value that you choose for Stereo downmix (Eac3AtmosStereoDownmix).
-- Related setting: To have MediaConvert use this value, keep the default
-- value, Custom (SPECIFIED) for the setting Downmix control
-- (DownmixControl). Otherwise, the service ignores Left total\/Right total
-- surround (LtRtSurroundMixLevel).
--
-- 'loRoSurroundMixLevel', 'eac3AtmosSettings_loRoSurroundMixLevel' - Specify a value for the following Dolby Atmos setting: Left only\/Right
-- only (Lo\/Ro surround). MediaConvert uses this value for downmixing.
-- Default value: -3 dB (ATMOS_STORAGE_DDP_MIXLEV_MINUS_3_DB). Valid
-- values: -1.5, -3.0, -4.5, -6.0, and -60. The value -60 mutes the
-- channel. Related setting: How the service uses this value depends on the
-- value that you choose for Stereo downmix (Eac3AtmosStereoDownmix).
-- Related setting: To have MediaConvert use this value, keep the default
-- value, Custom (SPECIFIED) for the setting Downmix control
-- (DownmixControl). Otherwise, MediaConvert ignores Left only\/Right only
-- surround (LoRoSurroundMixLevel).
--
-- 'dynamicRangeControl', 'eac3AtmosSettings_dynamicRangeControl' - Specify whether MediaConvert should use any dynamic range control
-- metadata from your input file. Keep the default value, Custom
-- (SPECIFIED), to provide dynamic range control values in your job
-- settings. Choose Follow source (INITIALIZE_FROM_SOURCE) to use the
-- metadata from your input. Related settings--Use these settings to
-- specify your dynamic range control values: Dynamic range compression
-- line (DynamicRangeCompressionLine) and Dynamic range compression RF
-- (DynamicRangeCompressionRf). When you keep the value Custom (SPECIFIED)
-- for Dynamic range control (DynamicRangeControl) and you don\'t specify
-- values for the related settings, MediaConvert uses default values for
-- those settings.
--
-- 'bitstreamMode', 'eac3AtmosSettings_bitstreamMode' - Specify the bitstream mode for the E-AC-3 stream that the encoder emits.
-- For more information about the EAC3 bitstream mode, see ATSC A\/52-2012
-- (Annex E).
--
-- 'dynamicRangeCompressionRf', 'eac3AtmosSettings_dynamicRangeCompressionRf' - Choose the Dolby dynamic range control (DRC) profile that MediaConvert
-- uses when encoding the metadata in the Dolby stream for the RF operating
-- mode. Default value: Film light (ATMOS_STORAGE_DDP_COMPR_FILM_LIGHT)
-- Related setting: To have MediaConvert use the value you specify here,
-- keep the default value, Custom (SPECIFIED) for the setting Dynamic range
-- control (DynamicRangeControl). Otherwise, MediaConvert ignores Dynamic
-- range compression RF (DynamicRangeCompressionRf). For information about
-- the Dolby DRC operating modes and profiles, see the Dynamic Range
-- Control chapter of the Dolby Metadata Guide at
-- https:\/\/developer.dolby.com\/globalassets\/professional\/documents\/dolby-metadata-guide.pdf.
--
-- 'codingMode', 'eac3AtmosSettings_codingMode' - The coding mode for Dolby Digital Plus JOC (Atmos).
--
-- 'sampleRate', 'eac3AtmosSettings_sampleRate' - This value is always 48000. It represents the sample rate in Hz.
--
-- 'speechThreshold', 'eac3AtmosSettings_speechThreshold' - Specify the percentage of audio content, from 0% to 100%, that must be
-- speech in order for the encoder to use the measured speech loudness as
-- the overall program loudness. Default value: 15%
--
-- 'bitrate', 'eac3AtmosSettings_bitrate' - Specify the average bitrate for this output in bits per second. Valid
-- values: 384k, 448k, 576k, 640k, 768k, 1024k Default value: 448k Note
-- that MediaConvert supports 384k only with channel-based immersive (CBI)
-- 7.1.4 and 5.1.4 inputs. For CBI 9.1.6 and other input types,
-- MediaConvert automatically increases your output bitrate to 448k.
--
-- 'dialogueIntelligence', 'eac3AtmosSettings_dialogueIntelligence' - Enable Dolby Dialogue Intelligence to adjust loudness based on dialogue
-- analysis.
--
-- 'meteringMode', 'eac3AtmosSettings_meteringMode' - Choose how the service meters the loudness of your audio.
--
-- 'surroundExMode', 'eac3AtmosSettings_surroundExMode' - Specify whether your input audio has an additional center rear surround
-- channel matrix encoded into your left and right surround channels.
--
-- 'downmixControl', 'eac3AtmosSettings_downmixControl' - Specify whether MediaConvert should use any downmix metadata from your
-- input file. Keep the default value, Custom (SPECIFIED) to provide
-- downmix values in your job settings. Choose Follow source
-- (INITIALIZE_FROM_SOURCE) to use the metadata from your input. Related
-- settings--Use these settings to specify your downmix values: Left
-- only\/Right only surround (LoRoSurroundMixLevel), Left total\/Right
-- total surround (LtRtSurroundMixLevel), Left total\/Right total center
-- (LtRtCenterMixLevel), Left only\/Right only center (LoRoCenterMixLevel),
-- and Stereo downmix (StereoDownmix). When you keep Custom (SPECIFIED) for
-- Downmix control (DownmixControl) and you don\'t specify values for the
-- related settings, MediaConvert uses default values for those settings.
newEac3AtmosSettings ::
  Eac3AtmosSettings
newEac3AtmosSettings :: Eac3AtmosSettings
newEac3AtmosSettings =
  Eac3AtmosSettings' :: Maybe Eac3AtmosStereoDownmix
-> Maybe Double
-> Maybe Double
-> Maybe Eac3AtmosDynamicRangeCompressionLine
-> Maybe Double
-> Maybe Double
-> Maybe Eac3AtmosDynamicRangeControl
-> Maybe Eac3AtmosBitstreamMode
-> Maybe Eac3AtmosDynamicRangeCompressionRf
-> Maybe Eac3AtmosCodingMode
-> Maybe Natural
-> Maybe Natural
-> Maybe Natural
-> Maybe Eac3AtmosDialogueIntelligence
-> Maybe Eac3AtmosMeteringMode
-> Maybe Eac3AtmosSurroundExMode
-> Maybe Eac3AtmosDownmixControl
-> Eac3AtmosSettings
Eac3AtmosSettings'
    { $sel:stereoDownmix:Eac3AtmosSettings' :: Maybe Eac3AtmosStereoDownmix
stereoDownmix = Maybe Eac3AtmosStereoDownmix
forall a. Maybe a
Prelude.Nothing,
      $sel:loRoCenterMixLevel:Eac3AtmosSettings' :: Maybe Double
loRoCenterMixLevel = Maybe Double
forall a. Maybe a
Prelude.Nothing,
      $sel:ltRtCenterMixLevel:Eac3AtmosSettings' :: Maybe Double
ltRtCenterMixLevel = Maybe Double
forall a. Maybe a
Prelude.Nothing,
      $sel:dynamicRangeCompressionLine:Eac3AtmosSettings' :: Maybe Eac3AtmosDynamicRangeCompressionLine
dynamicRangeCompressionLine = Maybe Eac3AtmosDynamicRangeCompressionLine
forall a. Maybe a
Prelude.Nothing,
      $sel:ltRtSurroundMixLevel:Eac3AtmosSettings' :: Maybe Double
ltRtSurroundMixLevel = Maybe Double
forall a. Maybe a
Prelude.Nothing,
      $sel:loRoSurroundMixLevel:Eac3AtmosSettings' :: Maybe Double
loRoSurroundMixLevel = Maybe Double
forall a. Maybe a
Prelude.Nothing,
      $sel:dynamicRangeControl:Eac3AtmosSettings' :: Maybe Eac3AtmosDynamicRangeControl
dynamicRangeControl = Maybe Eac3AtmosDynamicRangeControl
forall a. Maybe a
Prelude.Nothing,
      $sel:bitstreamMode:Eac3AtmosSettings' :: Maybe Eac3AtmosBitstreamMode
bitstreamMode = Maybe Eac3AtmosBitstreamMode
forall a. Maybe a
Prelude.Nothing,
      $sel:dynamicRangeCompressionRf:Eac3AtmosSettings' :: Maybe Eac3AtmosDynamicRangeCompressionRf
dynamicRangeCompressionRf = Maybe Eac3AtmosDynamicRangeCompressionRf
forall a. Maybe a
Prelude.Nothing,
      $sel:codingMode:Eac3AtmosSettings' :: Maybe Eac3AtmosCodingMode
codingMode = Maybe Eac3AtmosCodingMode
forall a. Maybe a
Prelude.Nothing,
      $sel:sampleRate:Eac3AtmosSettings' :: Maybe Natural
sampleRate = Maybe Natural
forall a. Maybe a
Prelude.Nothing,
      $sel:speechThreshold:Eac3AtmosSettings' :: Maybe Natural
speechThreshold = Maybe Natural
forall a. Maybe a
Prelude.Nothing,
      $sel:bitrate:Eac3AtmosSettings' :: Maybe Natural
bitrate = Maybe Natural
forall a. Maybe a
Prelude.Nothing,
      $sel:dialogueIntelligence:Eac3AtmosSettings' :: Maybe Eac3AtmosDialogueIntelligence
dialogueIntelligence = Maybe Eac3AtmosDialogueIntelligence
forall a. Maybe a
Prelude.Nothing,
      $sel:meteringMode:Eac3AtmosSettings' :: Maybe Eac3AtmosMeteringMode
meteringMode = Maybe Eac3AtmosMeteringMode
forall a. Maybe a
Prelude.Nothing,
      $sel:surroundExMode:Eac3AtmosSettings' :: Maybe Eac3AtmosSurroundExMode
surroundExMode = Maybe Eac3AtmosSurroundExMode
forall a. Maybe a
Prelude.Nothing,
      $sel:downmixControl:Eac3AtmosSettings' :: Maybe Eac3AtmosDownmixControl
downmixControl = Maybe Eac3AtmosDownmixControl
forall a. Maybe a
Prelude.Nothing
    }

-- | Choose how the service does stereo downmixing. Default value: Not
-- indicated (ATMOS_STORAGE_DDP_DMIXMOD_NOT_INDICATED) Related setting: To
-- have MediaConvert use this value, keep the default value, Custom
-- (SPECIFIED) for the setting Downmix control (DownmixControl). Otherwise,
-- MediaConvert ignores Stereo downmix (StereoDownmix).
eac3AtmosSettings_stereoDownmix :: Lens.Lens' Eac3AtmosSettings (Prelude.Maybe Eac3AtmosStereoDownmix)
eac3AtmosSettings_stereoDownmix :: (Maybe Eac3AtmosStereoDownmix -> f (Maybe Eac3AtmosStereoDownmix))
-> Eac3AtmosSettings -> f Eac3AtmosSettings
eac3AtmosSettings_stereoDownmix = (Eac3AtmosSettings -> Maybe Eac3AtmosStereoDownmix)
-> (Eac3AtmosSettings
    -> Maybe Eac3AtmosStereoDownmix -> Eac3AtmosSettings)
-> Lens
     Eac3AtmosSettings
     Eac3AtmosSettings
     (Maybe Eac3AtmosStereoDownmix)
     (Maybe Eac3AtmosStereoDownmix)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Eac3AtmosSettings' {Maybe Eac3AtmosStereoDownmix
stereoDownmix :: Maybe Eac3AtmosStereoDownmix
$sel:stereoDownmix:Eac3AtmosSettings' :: Eac3AtmosSettings -> Maybe Eac3AtmosStereoDownmix
stereoDownmix} -> Maybe Eac3AtmosStereoDownmix
stereoDownmix) (\s :: Eac3AtmosSettings
s@Eac3AtmosSettings' {} Maybe Eac3AtmosStereoDownmix
a -> Eac3AtmosSettings
s {$sel:stereoDownmix:Eac3AtmosSettings' :: Maybe Eac3AtmosStereoDownmix
stereoDownmix = Maybe Eac3AtmosStereoDownmix
a} :: Eac3AtmosSettings)

-- | Specify a value for the following Dolby Atmos setting: Left only\/Right
-- only center mix (Lo\/Ro center). MediaConvert uses this value for
-- downmixing. Default value: -3 dB (ATMOS_STORAGE_DDP_MIXLEV_MINUS_3_DB).
-- Valid values: 3.0, 1.5, 0.0, -1.5, -3.0, -4.5, and -6.0. Related
-- setting: How the service uses this value depends on the value that you
-- choose for Stereo downmix (Eac3AtmosStereoDownmix). Related setting: To
-- have MediaConvert use this value, keep the default value, Custom
-- (SPECIFIED) for the setting Downmix control (DownmixControl). Otherwise,
-- MediaConvert ignores Left only\/Right only center (LoRoCenterMixLevel).
eac3AtmosSettings_loRoCenterMixLevel :: Lens.Lens' Eac3AtmosSettings (Prelude.Maybe Prelude.Double)
eac3AtmosSettings_loRoCenterMixLevel :: (Maybe Double -> f (Maybe Double))
-> Eac3AtmosSettings -> f Eac3AtmosSettings
eac3AtmosSettings_loRoCenterMixLevel = (Eac3AtmosSettings -> Maybe Double)
-> (Eac3AtmosSettings -> Maybe Double -> Eac3AtmosSettings)
-> Lens
     Eac3AtmosSettings Eac3AtmosSettings (Maybe Double) (Maybe Double)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Eac3AtmosSettings' {Maybe Double
loRoCenterMixLevel :: Maybe Double
$sel:loRoCenterMixLevel:Eac3AtmosSettings' :: Eac3AtmosSettings -> Maybe Double
loRoCenterMixLevel} -> Maybe Double
loRoCenterMixLevel) (\s :: Eac3AtmosSettings
s@Eac3AtmosSettings' {} Maybe Double
a -> Eac3AtmosSettings
s {$sel:loRoCenterMixLevel:Eac3AtmosSettings' :: Maybe Double
loRoCenterMixLevel = Maybe Double
a} :: Eac3AtmosSettings)

-- | Specify a value for the following Dolby Atmos setting: Left total\/Right
-- total center mix (Lt\/Rt center). MediaConvert uses this value for
-- downmixing. Default value: -3 dB (ATMOS_STORAGE_DDP_MIXLEV_MINUS_3_DB)
-- Valid values: 3.0, 1.5, 0.0, -1.5, -3.0, -4.5, and -6.0. Related
-- setting: How the service uses this value depends on the value that you
-- choose for Stereo downmix (Eac3AtmosStereoDownmix). Related setting: To
-- have MediaConvert use this value, keep the default value, Custom
-- (SPECIFIED) for the setting Downmix control (DownmixControl). Otherwise,
-- MediaConvert ignores Left total\/Right total center
-- (LtRtCenterMixLevel).
eac3AtmosSettings_ltRtCenterMixLevel :: Lens.Lens' Eac3AtmosSettings (Prelude.Maybe Prelude.Double)
eac3AtmosSettings_ltRtCenterMixLevel :: (Maybe Double -> f (Maybe Double))
-> Eac3AtmosSettings -> f Eac3AtmosSettings
eac3AtmosSettings_ltRtCenterMixLevel = (Eac3AtmosSettings -> Maybe Double)
-> (Eac3AtmosSettings -> Maybe Double -> Eac3AtmosSettings)
-> Lens
     Eac3AtmosSettings Eac3AtmosSettings (Maybe Double) (Maybe Double)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Eac3AtmosSettings' {Maybe Double
ltRtCenterMixLevel :: Maybe Double
$sel:ltRtCenterMixLevel:Eac3AtmosSettings' :: Eac3AtmosSettings -> Maybe Double
ltRtCenterMixLevel} -> Maybe Double
ltRtCenterMixLevel) (\s :: Eac3AtmosSettings
s@Eac3AtmosSettings' {} Maybe Double
a -> Eac3AtmosSettings
s {$sel:ltRtCenterMixLevel:Eac3AtmosSettings' :: Maybe Double
ltRtCenterMixLevel = Maybe Double
a} :: Eac3AtmosSettings)

-- | Choose the Dolby dynamic range control (DRC) profile that MediaConvert
-- uses when encoding the metadata in the Dolby stream for the line
-- operating mode. Default value: Film light
-- (ATMOS_STORAGE_DDP_COMPR_FILM_LIGHT) Related setting: To have
-- MediaConvert use the value you specify here, keep the default value,
-- Custom (SPECIFIED) for the setting Dynamic range control
-- (DynamicRangeControl). Otherwise, MediaConvert ignores Dynamic range
-- compression line (DynamicRangeCompressionLine). For information about
-- the Dolby DRC operating modes and profiles, see the Dynamic Range
-- Control chapter of the Dolby Metadata Guide at
-- https:\/\/developer.dolby.com\/globalassets\/professional\/documents\/dolby-metadata-guide.pdf.
eac3AtmosSettings_dynamicRangeCompressionLine :: Lens.Lens' Eac3AtmosSettings (Prelude.Maybe Eac3AtmosDynamicRangeCompressionLine)
eac3AtmosSettings_dynamicRangeCompressionLine :: (Maybe Eac3AtmosDynamicRangeCompressionLine
 -> f (Maybe Eac3AtmosDynamicRangeCompressionLine))
-> Eac3AtmosSettings -> f Eac3AtmosSettings
eac3AtmosSettings_dynamicRangeCompressionLine = (Eac3AtmosSettings -> Maybe Eac3AtmosDynamicRangeCompressionLine)
-> (Eac3AtmosSettings
    -> Maybe Eac3AtmosDynamicRangeCompressionLine -> Eac3AtmosSettings)
-> Lens
     Eac3AtmosSettings
     Eac3AtmosSettings
     (Maybe Eac3AtmosDynamicRangeCompressionLine)
     (Maybe Eac3AtmosDynamicRangeCompressionLine)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Eac3AtmosSettings' {Maybe Eac3AtmosDynamicRangeCompressionLine
dynamicRangeCompressionLine :: Maybe Eac3AtmosDynamicRangeCompressionLine
$sel:dynamicRangeCompressionLine:Eac3AtmosSettings' :: Eac3AtmosSettings -> Maybe Eac3AtmosDynamicRangeCompressionLine
dynamicRangeCompressionLine} -> Maybe Eac3AtmosDynamicRangeCompressionLine
dynamicRangeCompressionLine) (\s :: Eac3AtmosSettings
s@Eac3AtmosSettings' {} Maybe Eac3AtmosDynamicRangeCompressionLine
a -> Eac3AtmosSettings
s {$sel:dynamicRangeCompressionLine:Eac3AtmosSettings' :: Maybe Eac3AtmosDynamicRangeCompressionLine
dynamicRangeCompressionLine = Maybe Eac3AtmosDynamicRangeCompressionLine
a} :: Eac3AtmosSettings)

-- | Specify a value for the following Dolby Atmos setting: Left total\/Right
-- total surround mix (Lt\/Rt surround). MediaConvert uses this value for
-- downmixing. Default value: -3 dB (ATMOS_STORAGE_DDP_MIXLEV_MINUS_3_DB)
-- Valid values: -1.5, -3.0, -4.5, -6.0, and -60. The value -60 mutes the
-- channel. Related setting: How the service uses this value depends on the
-- value that you choose for Stereo downmix (Eac3AtmosStereoDownmix).
-- Related setting: To have MediaConvert use this value, keep the default
-- value, Custom (SPECIFIED) for the setting Downmix control
-- (DownmixControl). Otherwise, the service ignores Left total\/Right total
-- surround (LtRtSurroundMixLevel).
eac3AtmosSettings_ltRtSurroundMixLevel :: Lens.Lens' Eac3AtmosSettings (Prelude.Maybe Prelude.Double)
eac3AtmosSettings_ltRtSurroundMixLevel :: (Maybe Double -> f (Maybe Double))
-> Eac3AtmosSettings -> f Eac3AtmosSettings
eac3AtmosSettings_ltRtSurroundMixLevel = (Eac3AtmosSettings -> Maybe Double)
-> (Eac3AtmosSettings -> Maybe Double -> Eac3AtmosSettings)
-> Lens
     Eac3AtmosSettings Eac3AtmosSettings (Maybe Double) (Maybe Double)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Eac3AtmosSettings' {Maybe Double
ltRtSurroundMixLevel :: Maybe Double
$sel:ltRtSurroundMixLevel:Eac3AtmosSettings' :: Eac3AtmosSettings -> Maybe Double
ltRtSurroundMixLevel} -> Maybe Double
ltRtSurroundMixLevel) (\s :: Eac3AtmosSettings
s@Eac3AtmosSettings' {} Maybe Double
a -> Eac3AtmosSettings
s {$sel:ltRtSurroundMixLevel:Eac3AtmosSettings' :: Maybe Double
ltRtSurroundMixLevel = Maybe Double
a} :: Eac3AtmosSettings)

-- | Specify a value for the following Dolby Atmos setting: Left only\/Right
-- only (Lo\/Ro surround). MediaConvert uses this value for downmixing.
-- Default value: -3 dB (ATMOS_STORAGE_DDP_MIXLEV_MINUS_3_DB). Valid
-- values: -1.5, -3.0, -4.5, -6.0, and -60. The value -60 mutes the
-- channel. Related setting: How the service uses this value depends on the
-- value that you choose for Stereo downmix (Eac3AtmosStereoDownmix).
-- Related setting: To have MediaConvert use this value, keep the default
-- value, Custom (SPECIFIED) for the setting Downmix control
-- (DownmixControl). Otherwise, MediaConvert ignores Left only\/Right only
-- surround (LoRoSurroundMixLevel).
eac3AtmosSettings_loRoSurroundMixLevel :: Lens.Lens' Eac3AtmosSettings (Prelude.Maybe Prelude.Double)
eac3AtmosSettings_loRoSurroundMixLevel :: (Maybe Double -> f (Maybe Double))
-> Eac3AtmosSettings -> f Eac3AtmosSettings
eac3AtmosSettings_loRoSurroundMixLevel = (Eac3AtmosSettings -> Maybe Double)
-> (Eac3AtmosSettings -> Maybe Double -> Eac3AtmosSettings)
-> Lens
     Eac3AtmosSettings Eac3AtmosSettings (Maybe Double) (Maybe Double)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Eac3AtmosSettings' {Maybe Double
loRoSurroundMixLevel :: Maybe Double
$sel:loRoSurroundMixLevel:Eac3AtmosSettings' :: Eac3AtmosSettings -> Maybe Double
loRoSurroundMixLevel} -> Maybe Double
loRoSurroundMixLevel) (\s :: Eac3AtmosSettings
s@Eac3AtmosSettings' {} Maybe Double
a -> Eac3AtmosSettings
s {$sel:loRoSurroundMixLevel:Eac3AtmosSettings' :: Maybe Double
loRoSurroundMixLevel = Maybe Double
a} :: Eac3AtmosSettings)

-- | Specify whether MediaConvert should use any dynamic range control
-- metadata from your input file. Keep the default value, Custom
-- (SPECIFIED), to provide dynamic range control values in your job
-- settings. Choose Follow source (INITIALIZE_FROM_SOURCE) to use the
-- metadata from your input. Related settings--Use these settings to
-- specify your dynamic range control values: Dynamic range compression
-- line (DynamicRangeCompressionLine) and Dynamic range compression RF
-- (DynamicRangeCompressionRf). When you keep the value Custom (SPECIFIED)
-- for Dynamic range control (DynamicRangeControl) and you don\'t specify
-- values for the related settings, MediaConvert uses default values for
-- those settings.
eac3AtmosSettings_dynamicRangeControl :: Lens.Lens' Eac3AtmosSettings (Prelude.Maybe Eac3AtmosDynamicRangeControl)
eac3AtmosSettings_dynamicRangeControl :: (Maybe Eac3AtmosDynamicRangeControl
 -> f (Maybe Eac3AtmosDynamicRangeControl))
-> Eac3AtmosSettings -> f Eac3AtmosSettings
eac3AtmosSettings_dynamicRangeControl = (Eac3AtmosSettings -> Maybe Eac3AtmosDynamicRangeControl)
-> (Eac3AtmosSettings
    -> Maybe Eac3AtmosDynamicRangeControl -> Eac3AtmosSettings)
-> Lens
     Eac3AtmosSettings
     Eac3AtmosSettings
     (Maybe Eac3AtmosDynamicRangeControl)
     (Maybe Eac3AtmosDynamicRangeControl)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Eac3AtmosSettings' {Maybe Eac3AtmosDynamicRangeControl
dynamicRangeControl :: Maybe Eac3AtmosDynamicRangeControl
$sel:dynamicRangeControl:Eac3AtmosSettings' :: Eac3AtmosSettings -> Maybe Eac3AtmosDynamicRangeControl
dynamicRangeControl} -> Maybe Eac3AtmosDynamicRangeControl
dynamicRangeControl) (\s :: Eac3AtmosSettings
s@Eac3AtmosSettings' {} Maybe Eac3AtmosDynamicRangeControl
a -> Eac3AtmosSettings
s {$sel:dynamicRangeControl:Eac3AtmosSettings' :: Maybe Eac3AtmosDynamicRangeControl
dynamicRangeControl = Maybe Eac3AtmosDynamicRangeControl
a} :: Eac3AtmosSettings)

-- | Specify the bitstream mode for the E-AC-3 stream that the encoder emits.
-- For more information about the EAC3 bitstream mode, see ATSC A\/52-2012
-- (Annex E).
eac3AtmosSettings_bitstreamMode :: Lens.Lens' Eac3AtmosSettings (Prelude.Maybe Eac3AtmosBitstreamMode)
eac3AtmosSettings_bitstreamMode :: (Maybe Eac3AtmosBitstreamMode -> f (Maybe Eac3AtmosBitstreamMode))
-> Eac3AtmosSettings -> f Eac3AtmosSettings
eac3AtmosSettings_bitstreamMode = (Eac3AtmosSettings -> Maybe Eac3AtmosBitstreamMode)
-> (Eac3AtmosSettings
    -> Maybe Eac3AtmosBitstreamMode -> Eac3AtmosSettings)
-> Lens
     Eac3AtmosSettings
     Eac3AtmosSettings
     (Maybe Eac3AtmosBitstreamMode)
     (Maybe Eac3AtmosBitstreamMode)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Eac3AtmosSettings' {Maybe Eac3AtmosBitstreamMode
bitstreamMode :: Maybe Eac3AtmosBitstreamMode
$sel:bitstreamMode:Eac3AtmosSettings' :: Eac3AtmosSettings -> Maybe Eac3AtmosBitstreamMode
bitstreamMode} -> Maybe Eac3AtmosBitstreamMode
bitstreamMode) (\s :: Eac3AtmosSettings
s@Eac3AtmosSettings' {} Maybe Eac3AtmosBitstreamMode
a -> Eac3AtmosSettings
s {$sel:bitstreamMode:Eac3AtmosSettings' :: Maybe Eac3AtmosBitstreamMode
bitstreamMode = Maybe Eac3AtmosBitstreamMode
a} :: Eac3AtmosSettings)

-- | Choose the Dolby dynamic range control (DRC) profile that MediaConvert
-- uses when encoding the metadata in the Dolby stream for the RF operating
-- mode. Default value: Film light (ATMOS_STORAGE_DDP_COMPR_FILM_LIGHT)
-- Related setting: To have MediaConvert use the value you specify here,
-- keep the default value, Custom (SPECIFIED) for the setting Dynamic range
-- control (DynamicRangeControl). Otherwise, MediaConvert ignores Dynamic
-- range compression RF (DynamicRangeCompressionRf). For information about
-- the Dolby DRC operating modes and profiles, see the Dynamic Range
-- Control chapter of the Dolby Metadata Guide at
-- https:\/\/developer.dolby.com\/globalassets\/professional\/documents\/dolby-metadata-guide.pdf.
eac3AtmosSettings_dynamicRangeCompressionRf :: Lens.Lens' Eac3AtmosSettings (Prelude.Maybe Eac3AtmosDynamicRangeCompressionRf)
eac3AtmosSettings_dynamicRangeCompressionRf :: (Maybe Eac3AtmosDynamicRangeCompressionRf
 -> f (Maybe Eac3AtmosDynamicRangeCompressionRf))
-> Eac3AtmosSettings -> f Eac3AtmosSettings
eac3AtmosSettings_dynamicRangeCompressionRf = (Eac3AtmosSettings -> Maybe Eac3AtmosDynamicRangeCompressionRf)
-> (Eac3AtmosSettings
    -> Maybe Eac3AtmosDynamicRangeCompressionRf -> Eac3AtmosSettings)
-> Lens
     Eac3AtmosSettings
     Eac3AtmosSettings
     (Maybe Eac3AtmosDynamicRangeCompressionRf)
     (Maybe Eac3AtmosDynamicRangeCompressionRf)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Eac3AtmosSettings' {Maybe Eac3AtmosDynamicRangeCompressionRf
dynamicRangeCompressionRf :: Maybe Eac3AtmosDynamicRangeCompressionRf
$sel:dynamicRangeCompressionRf:Eac3AtmosSettings' :: Eac3AtmosSettings -> Maybe Eac3AtmosDynamicRangeCompressionRf
dynamicRangeCompressionRf} -> Maybe Eac3AtmosDynamicRangeCompressionRf
dynamicRangeCompressionRf) (\s :: Eac3AtmosSettings
s@Eac3AtmosSettings' {} Maybe Eac3AtmosDynamicRangeCompressionRf
a -> Eac3AtmosSettings
s {$sel:dynamicRangeCompressionRf:Eac3AtmosSettings' :: Maybe Eac3AtmosDynamicRangeCompressionRf
dynamicRangeCompressionRf = Maybe Eac3AtmosDynamicRangeCompressionRf
a} :: Eac3AtmosSettings)

-- | The coding mode for Dolby Digital Plus JOC (Atmos).
eac3AtmosSettings_codingMode :: Lens.Lens' Eac3AtmosSettings (Prelude.Maybe Eac3AtmosCodingMode)
eac3AtmosSettings_codingMode :: (Maybe Eac3AtmosCodingMode -> f (Maybe Eac3AtmosCodingMode))
-> Eac3AtmosSettings -> f Eac3AtmosSettings
eac3AtmosSettings_codingMode = (Eac3AtmosSettings -> Maybe Eac3AtmosCodingMode)
-> (Eac3AtmosSettings
    -> Maybe Eac3AtmosCodingMode -> Eac3AtmosSettings)
-> Lens
     Eac3AtmosSettings
     Eac3AtmosSettings
     (Maybe Eac3AtmosCodingMode)
     (Maybe Eac3AtmosCodingMode)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Eac3AtmosSettings' {Maybe Eac3AtmosCodingMode
codingMode :: Maybe Eac3AtmosCodingMode
$sel:codingMode:Eac3AtmosSettings' :: Eac3AtmosSettings -> Maybe Eac3AtmosCodingMode
codingMode} -> Maybe Eac3AtmosCodingMode
codingMode) (\s :: Eac3AtmosSettings
s@Eac3AtmosSettings' {} Maybe Eac3AtmosCodingMode
a -> Eac3AtmosSettings
s {$sel:codingMode:Eac3AtmosSettings' :: Maybe Eac3AtmosCodingMode
codingMode = Maybe Eac3AtmosCodingMode
a} :: Eac3AtmosSettings)

-- | This value is always 48000. It represents the sample rate in Hz.
eac3AtmosSettings_sampleRate :: Lens.Lens' Eac3AtmosSettings (Prelude.Maybe Prelude.Natural)
eac3AtmosSettings_sampleRate :: (Maybe Natural -> f (Maybe Natural))
-> Eac3AtmosSettings -> f Eac3AtmosSettings
eac3AtmosSettings_sampleRate = (Eac3AtmosSettings -> Maybe Natural)
-> (Eac3AtmosSettings -> Maybe Natural -> Eac3AtmosSettings)
-> Lens
     Eac3AtmosSettings Eac3AtmosSettings (Maybe Natural) (Maybe Natural)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Eac3AtmosSettings' {Maybe Natural
sampleRate :: Maybe Natural
$sel:sampleRate:Eac3AtmosSettings' :: Eac3AtmosSettings -> Maybe Natural
sampleRate} -> Maybe Natural
sampleRate) (\s :: Eac3AtmosSettings
s@Eac3AtmosSettings' {} Maybe Natural
a -> Eac3AtmosSettings
s {$sel:sampleRate:Eac3AtmosSettings' :: Maybe Natural
sampleRate = Maybe Natural
a} :: Eac3AtmosSettings)

-- | Specify the percentage of audio content, from 0% to 100%, that must be
-- speech in order for the encoder to use the measured speech loudness as
-- the overall program loudness. Default value: 15%
eac3AtmosSettings_speechThreshold :: Lens.Lens' Eac3AtmosSettings (Prelude.Maybe Prelude.Natural)
eac3AtmosSettings_speechThreshold :: (Maybe Natural -> f (Maybe Natural))
-> Eac3AtmosSettings -> f Eac3AtmosSettings
eac3AtmosSettings_speechThreshold = (Eac3AtmosSettings -> Maybe Natural)
-> (Eac3AtmosSettings -> Maybe Natural -> Eac3AtmosSettings)
-> Lens
     Eac3AtmosSettings Eac3AtmosSettings (Maybe Natural) (Maybe Natural)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Eac3AtmosSettings' {Maybe Natural
speechThreshold :: Maybe Natural
$sel:speechThreshold:Eac3AtmosSettings' :: Eac3AtmosSettings -> Maybe Natural
speechThreshold} -> Maybe Natural
speechThreshold) (\s :: Eac3AtmosSettings
s@Eac3AtmosSettings' {} Maybe Natural
a -> Eac3AtmosSettings
s {$sel:speechThreshold:Eac3AtmosSettings' :: Maybe Natural
speechThreshold = Maybe Natural
a} :: Eac3AtmosSettings)

-- | Specify the average bitrate for this output in bits per second. Valid
-- values: 384k, 448k, 576k, 640k, 768k, 1024k Default value: 448k Note
-- that MediaConvert supports 384k only with channel-based immersive (CBI)
-- 7.1.4 and 5.1.4 inputs. For CBI 9.1.6 and other input types,
-- MediaConvert automatically increases your output bitrate to 448k.
eac3AtmosSettings_bitrate :: Lens.Lens' Eac3AtmosSettings (Prelude.Maybe Prelude.Natural)
eac3AtmosSettings_bitrate :: (Maybe Natural -> f (Maybe Natural))
-> Eac3AtmosSettings -> f Eac3AtmosSettings
eac3AtmosSettings_bitrate = (Eac3AtmosSettings -> Maybe Natural)
-> (Eac3AtmosSettings -> Maybe Natural -> Eac3AtmosSettings)
-> Lens
     Eac3AtmosSettings Eac3AtmosSettings (Maybe Natural) (Maybe Natural)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Eac3AtmosSettings' {Maybe Natural
bitrate :: Maybe Natural
$sel:bitrate:Eac3AtmosSettings' :: Eac3AtmosSettings -> Maybe Natural
bitrate} -> Maybe Natural
bitrate) (\s :: Eac3AtmosSettings
s@Eac3AtmosSettings' {} Maybe Natural
a -> Eac3AtmosSettings
s {$sel:bitrate:Eac3AtmosSettings' :: Maybe Natural
bitrate = Maybe Natural
a} :: Eac3AtmosSettings)

-- | Enable Dolby Dialogue Intelligence to adjust loudness based on dialogue
-- analysis.
eac3AtmosSettings_dialogueIntelligence :: Lens.Lens' Eac3AtmosSettings (Prelude.Maybe Eac3AtmosDialogueIntelligence)
eac3AtmosSettings_dialogueIntelligence :: (Maybe Eac3AtmosDialogueIntelligence
 -> f (Maybe Eac3AtmosDialogueIntelligence))
-> Eac3AtmosSettings -> f Eac3AtmosSettings
eac3AtmosSettings_dialogueIntelligence = (Eac3AtmosSettings -> Maybe Eac3AtmosDialogueIntelligence)
-> (Eac3AtmosSettings
    -> Maybe Eac3AtmosDialogueIntelligence -> Eac3AtmosSettings)
-> Lens
     Eac3AtmosSettings
     Eac3AtmosSettings
     (Maybe Eac3AtmosDialogueIntelligence)
     (Maybe Eac3AtmosDialogueIntelligence)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Eac3AtmosSettings' {Maybe Eac3AtmosDialogueIntelligence
dialogueIntelligence :: Maybe Eac3AtmosDialogueIntelligence
$sel:dialogueIntelligence:Eac3AtmosSettings' :: Eac3AtmosSettings -> Maybe Eac3AtmosDialogueIntelligence
dialogueIntelligence} -> Maybe Eac3AtmosDialogueIntelligence
dialogueIntelligence) (\s :: Eac3AtmosSettings
s@Eac3AtmosSettings' {} Maybe Eac3AtmosDialogueIntelligence
a -> Eac3AtmosSettings
s {$sel:dialogueIntelligence:Eac3AtmosSettings' :: Maybe Eac3AtmosDialogueIntelligence
dialogueIntelligence = Maybe Eac3AtmosDialogueIntelligence
a} :: Eac3AtmosSettings)

-- | Choose how the service meters the loudness of your audio.
eac3AtmosSettings_meteringMode :: Lens.Lens' Eac3AtmosSettings (Prelude.Maybe Eac3AtmosMeteringMode)
eac3AtmosSettings_meteringMode :: (Maybe Eac3AtmosMeteringMode -> f (Maybe Eac3AtmosMeteringMode))
-> Eac3AtmosSettings -> f Eac3AtmosSettings
eac3AtmosSettings_meteringMode = (Eac3AtmosSettings -> Maybe Eac3AtmosMeteringMode)
-> (Eac3AtmosSettings
    -> Maybe Eac3AtmosMeteringMode -> Eac3AtmosSettings)
-> Lens
     Eac3AtmosSettings
     Eac3AtmosSettings
     (Maybe Eac3AtmosMeteringMode)
     (Maybe Eac3AtmosMeteringMode)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Eac3AtmosSettings' {Maybe Eac3AtmosMeteringMode
meteringMode :: Maybe Eac3AtmosMeteringMode
$sel:meteringMode:Eac3AtmosSettings' :: Eac3AtmosSettings -> Maybe Eac3AtmosMeteringMode
meteringMode} -> Maybe Eac3AtmosMeteringMode
meteringMode) (\s :: Eac3AtmosSettings
s@Eac3AtmosSettings' {} Maybe Eac3AtmosMeteringMode
a -> Eac3AtmosSettings
s {$sel:meteringMode:Eac3AtmosSettings' :: Maybe Eac3AtmosMeteringMode
meteringMode = Maybe Eac3AtmosMeteringMode
a} :: Eac3AtmosSettings)

-- | Specify whether your input audio has an additional center rear surround
-- channel matrix encoded into your left and right surround channels.
eac3AtmosSettings_surroundExMode :: Lens.Lens' Eac3AtmosSettings (Prelude.Maybe Eac3AtmosSurroundExMode)
eac3AtmosSettings_surroundExMode :: (Maybe Eac3AtmosSurroundExMode
 -> f (Maybe Eac3AtmosSurroundExMode))
-> Eac3AtmosSettings -> f Eac3AtmosSettings
eac3AtmosSettings_surroundExMode = (Eac3AtmosSettings -> Maybe Eac3AtmosSurroundExMode)
-> (Eac3AtmosSettings
    -> Maybe Eac3AtmosSurroundExMode -> Eac3AtmosSettings)
-> Lens
     Eac3AtmosSettings
     Eac3AtmosSettings
     (Maybe Eac3AtmosSurroundExMode)
     (Maybe Eac3AtmosSurroundExMode)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Eac3AtmosSettings' {Maybe Eac3AtmosSurroundExMode
surroundExMode :: Maybe Eac3AtmosSurroundExMode
$sel:surroundExMode:Eac3AtmosSettings' :: Eac3AtmosSettings -> Maybe Eac3AtmosSurroundExMode
surroundExMode} -> Maybe Eac3AtmosSurroundExMode
surroundExMode) (\s :: Eac3AtmosSettings
s@Eac3AtmosSettings' {} Maybe Eac3AtmosSurroundExMode
a -> Eac3AtmosSettings
s {$sel:surroundExMode:Eac3AtmosSettings' :: Maybe Eac3AtmosSurroundExMode
surroundExMode = Maybe Eac3AtmosSurroundExMode
a} :: Eac3AtmosSettings)

-- | Specify whether MediaConvert should use any downmix metadata from your
-- input file. Keep the default value, Custom (SPECIFIED) to provide
-- downmix values in your job settings. Choose Follow source
-- (INITIALIZE_FROM_SOURCE) to use the metadata from your input. Related
-- settings--Use these settings to specify your downmix values: Left
-- only\/Right only surround (LoRoSurroundMixLevel), Left total\/Right
-- total surround (LtRtSurroundMixLevel), Left total\/Right total center
-- (LtRtCenterMixLevel), Left only\/Right only center (LoRoCenterMixLevel),
-- and Stereo downmix (StereoDownmix). When you keep Custom (SPECIFIED) for
-- Downmix control (DownmixControl) and you don\'t specify values for the
-- related settings, MediaConvert uses default values for those settings.
eac3AtmosSettings_downmixControl :: Lens.Lens' Eac3AtmosSettings (Prelude.Maybe Eac3AtmosDownmixControl)
eac3AtmosSettings_downmixControl :: (Maybe Eac3AtmosDownmixControl
 -> f (Maybe Eac3AtmosDownmixControl))
-> Eac3AtmosSettings -> f Eac3AtmosSettings
eac3AtmosSettings_downmixControl = (Eac3AtmosSettings -> Maybe Eac3AtmosDownmixControl)
-> (Eac3AtmosSettings
    -> Maybe Eac3AtmosDownmixControl -> Eac3AtmosSettings)
-> Lens
     Eac3AtmosSettings
     Eac3AtmosSettings
     (Maybe Eac3AtmosDownmixControl)
     (Maybe Eac3AtmosDownmixControl)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Eac3AtmosSettings' {Maybe Eac3AtmosDownmixControl
downmixControl :: Maybe Eac3AtmosDownmixControl
$sel:downmixControl:Eac3AtmosSettings' :: Eac3AtmosSettings -> Maybe Eac3AtmosDownmixControl
downmixControl} -> Maybe Eac3AtmosDownmixControl
downmixControl) (\s :: Eac3AtmosSettings
s@Eac3AtmosSettings' {} Maybe Eac3AtmosDownmixControl
a -> Eac3AtmosSettings
s {$sel:downmixControl:Eac3AtmosSettings' :: Maybe Eac3AtmosDownmixControl
downmixControl = Maybe Eac3AtmosDownmixControl
a} :: Eac3AtmosSettings)

instance Core.FromJSON Eac3AtmosSettings where
  parseJSON :: Value -> Parser Eac3AtmosSettings
parseJSON =
    String
-> (Object -> Parser Eac3AtmosSettings)
-> Value
-> Parser Eac3AtmosSettings
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Core.withObject
      String
"Eac3AtmosSettings"
      ( \Object
x ->
          Maybe Eac3AtmosStereoDownmix
-> Maybe Double
-> Maybe Double
-> Maybe Eac3AtmosDynamicRangeCompressionLine
-> Maybe Double
-> Maybe Double
-> Maybe Eac3AtmosDynamicRangeControl
-> Maybe Eac3AtmosBitstreamMode
-> Maybe Eac3AtmosDynamicRangeCompressionRf
-> Maybe Eac3AtmosCodingMode
-> Maybe Natural
-> Maybe Natural
-> Maybe Natural
-> Maybe Eac3AtmosDialogueIntelligence
-> Maybe Eac3AtmosMeteringMode
-> Maybe Eac3AtmosSurroundExMode
-> Maybe Eac3AtmosDownmixControl
-> Eac3AtmosSettings
Eac3AtmosSettings'
            (Maybe Eac3AtmosStereoDownmix
 -> Maybe Double
 -> Maybe Double
 -> Maybe Eac3AtmosDynamicRangeCompressionLine
 -> Maybe Double
 -> Maybe Double
 -> Maybe Eac3AtmosDynamicRangeControl
 -> Maybe Eac3AtmosBitstreamMode
 -> Maybe Eac3AtmosDynamicRangeCompressionRf
 -> Maybe Eac3AtmosCodingMode
 -> Maybe Natural
 -> Maybe Natural
 -> Maybe Natural
 -> Maybe Eac3AtmosDialogueIntelligence
 -> Maybe Eac3AtmosMeteringMode
 -> Maybe Eac3AtmosSurroundExMode
 -> Maybe Eac3AtmosDownmixControl
 -> Eac3AtmosSettings)
-> Parser (Maybe Eac3AtmosStereoDownmix)
-> Parser
     (Maybe Double
      -> Maybe Double
      -> Maybe Eac3AtmosDynamicRangeCompressionLine
      -> Maybe Double
      -> Maybe Double
      -> Maybe Eac3AtmosDynamicRangeControl
      -> Maybe Eac3AtmosBitstreamMode
      -> Maybe Eac3AtmosDynamicRangeCompressionRf
      -> Maybe Eac3AtmosCodingMode
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe Eac3AtmosDialogueIntelligence
      -> Maybe Eac3AtmosMeteringMode
      -> Maybe Eac3AtmosSurroundExMode
      -> Maybe Eac3AtmosDownmixControl
      -> Eac3AtmosSettings)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x Object -> Text -> Parser (Maybe Eac3AtmosStereoDownmix)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"stereoDownmix")
            Parser
  (Maybe Double
   -> Maybe Double
   -> Maybe Eac3AtmosDynamicRangeCompressionLine
   -> Maybe Double
   -> Maybe Double
   -> Maybe Eac3AtmosDynamicRangeControl
   -> Maybe Eac3AtmosBitstreamMode
   -> Maybe Eac3AtmosDynamicRangeCompressionRf
   -> Maybe Eac3AtmosCodingMode
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe Eac3AtmosDialogueIntelligence
   -> Maybe Eac3AtmosMeteringMode
   -> Maybe Eac3AtmosSurroundExMode
   -> Maybe Eac3AtmosDownmixControl
   -> Eac3AtmosSettings)
-> Parser (Maybe Double)
-> Parser
     (Maybe Double
      -> Maybe Eac3AtmosDynamicRangeCompressionLine
      -> Maybe Double
      -> Maybe Double
      -> Maybe Eac3AtmosDynamicRangeControl
      -> Maybe Eac3AtmosBitstreamMode
      -> Maybe Eac3AtmosDynamicRangeCompressionRf
      -> Maybe Eac3AtmosCodingMode
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe Eac3AtmosDialogueIntelligence
      -> Maybe Eac3AtmosMeteringMode
      -> Maybe Eac3AtmosSurroundExMode
      -> Maybe Eac3AtmosDownmixControl
      -> Eac3AtmosSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Double)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"loRoCenterMixLevel")
            Parser
  (Maybe Double
   -> Maybe Eac3AtmosDynamicRangeCompressionLine
   -> Maybe Double
   -> Maybe Double
   -> Maybe Eac3AtmosDynamicRangeControl
   -> Maybe Eac3AtmosBitstreamMode
   -> Maybe Eac3AtmosDynamicRangeCompressionRf
   -> Maybe Eac3AtmosCodingMode
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe Eac3AtmosDialogueIntelligence
   -> Maybe Eac3AtmosMeteringMode
   -> Maybe Eac3AtmosSurroundExMode
   -> Maybe Eac3AtmosDownmixControl
   -> Eac3AtmosSettings)
-> Parser (Maybe Double)
-> Parser
     (Maybe Eac3AtmosDynamicRangeCompressionLine
      -> Maybe Double
      -> Maybe Double
      -> Maybe Eac3AtmosDynamicRangeControl
      -> Maybe Eac3AtmosBitstreamMode
      -> Maybe Eac3AtmosDynamicRangeCompressionRf
      -> Maybe Eac3AtmosCodingMode
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe Eac3AtmosDialogueIntelligence
      -> Maybe Eac3AtmosMeteringMode
      -> Maybe Eac3AtmosSurroundExMode
      -> Maybe Eac3AtmosDownmixControl
      -> Eac3AtmosSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Double)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ltRtCenterMixLevel")
            Parser
  (Maybe Eac3AtmosDynamicRangeCompressionLine
   -> Maybe Double
   -> Maybe Double
   -> Maybe Eac3AtmosDynamicRangeControl
   -> Maybe Eac3AtmosBitstreamMode
   -> Maybe Eac3AtmosDynamicRangeCompressionRf
   -> Maybe Eac3AtmosCodingMode
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe Eac3AtmosDialogueIntelligence
   -> Maybe Eac3AtmosMeteringMode
   -> Maybe Eac3AtmosSurroundExMode
   -> Maybe Eac3AtmosDownmixControl
   -> Eac3AtmosSettings)
-> Parser (Maybe Eac3AtmosDynamicRangeCompressionLine)
-> Parser
     (Maybe Double
      -> Maybe Double
      -> Maybe Eac3AtmosDynamicRangeControl
      -> Maybe Eac3AtmosBitstreamMode
      -> Maybe Eac3AtmosDynamicRangeCompressionRf
      -> Maybe Eac3AtmosCodingMode
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe Eac3AtmosDialogueIntelligence
      -> Maybe Eac3AtmosMeteringMode
      -> Maybe Eac3AtmosSurroundExMode
      -> Maybe Eac3AtmosDownmixControl
      -> Eac3AtmosSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object
-> Text -> Parser (Maybe Eac3AtmosDynamicRangeCompressionLine)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"dynamicRangeCompressionLine")
            Parser
  (Maybe Double
   -> Maybe Double
   -> Maybe Eac3AtmosDynamicRangeControl
   -> Maybe Eac3AtmosBitstreamMode
   -> Maybe Eac3AtmosDynamicRangeCompressionRf
   -> Maybe Eac3AtmosCodingMode
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe Eac3AtmosDialogueIntelligence
   -> Maybe Eac3AtmosMeteringMode
   -> Maybe Eac3AtmosSurroundExMode
   -> Maybe Eac3AtmosDownmixControl
   -> Eac3AtmosSettings)
-> Parser (Maybe Double)
-> Parser
     (Maybe Double
      -> Maybe Eac3AtmosDynamicRangeControl
      -> Maybe Eac3AtmosBitstreamMode
      -> Maybe Eac3AtmosDynamicRangeCompressionRf
      -> Maybe Eac3AtmosCodingMode
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe Eac3AtmosDialogueIntelligence
      -> Maybe Eac3AtmosMeteringMode
      -> Maybe Eac3AtmosSurroundExMode
      -> Maybe Eac3AtmosDownmixControl
      -> Eac3AtmosSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Double)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ltRtSurroundMixLevel")
            Parser
  (Maybe Double
   -> Maybe Eac3AtmosDynamicRangeControl
   -> Maybe Eac3AtmosBitstreamMode
   -> Maybe Eac3AtmosDynamicRangeCompressionRf
   -> Maybe Eac3AtmosCodingMode
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe Eac3AtmosDialogueIntelligence
   -> Maybe Eac3AtmosMeteringMode
   -> Maybe Eac3AtmosSurroundExMode
   -> Maybe Eac3AtmosDownmixControl
   -> Eac3AtmosSettings)
-> Parser (Maybe Double)
-> Parser
     (Maybe Eac3AtmosDynamicRangeControl
      -> Maybe Eac3AtmosBitstreamMode
      -> Maybe Eac3AtmosDynamicRangeCompressionRf
      -> Maybe Eac3AtmosCodingMode
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe Eac3AtmosDialogueIntelligence
      -> Maybe Eac3AtmosMeteringMode
      -> Maybe Eac3AtmosSurroundExMode
      -> Maybe Eac3AtmosDownmixControl
      -> Eac3AtmosSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Double)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"loRoSurroundMixLevel")
            Parser
  (Maybe Eac3AtmosDynamicRangeControl
   -> Maybe Eac3AtmosBitstreamMode
   -> Maybe Eac3AtmosDynamicRangeCompressionRf
   -> Maybe Eac3AtmosCodingMode
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe Eac3AtmosDialogueIntelligence
   -> Maybe Eac3AtmosMeteringMode
   -> Maybe Eac3AtmosSurroundExMode
   -> Maybe Eac3AtmosDownmixControl
   -> Eac3AtmosSettings)
-> Parser (Maybe Eac3AtmosDynamicRangeControl)
-> Parser
     (Maybe Eac3AtmosBitstreamMode
      -> Maybe Eac3AtmosDynamicRangeCompressionRf
      -> Maybe Eac3AtmosCodingMode
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe Eac3AtmosDialogueIntelligence
      -> Maybe Eac3AtmosMeteringMode
      -> Maybe Eac3AtmosSurroundExMode
      -> Maybe Eac3AtmosDownmixControl
      -> Eac3AtmosSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Eac3AtmosDynamicRangeControl)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"dynamicRangeControl")
            Parser
  (Maybe Eac3AtmosBitstreamMode
   -> Maybe Eac3AtmosDynamicRangeCompressionRf
   -> Maybe Eac3AtmosCodingMode
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe Eac3AtmosDialogueIntelligence
   -> Maybe Eac3AtmosMeteringMode
   -> Maybe Eac3AtmosSurroundExMode
   -> Maybe Eac3AtmosDownmixControl
   -> Eac3AtmosSettings)
-> Parser (Maybe Eac3AtmosBitstreamMode)
-> Parser
     (Maybe Eac3AtmosDynamicRangeCompressionRf
      -> Maybe Eac3AtmosCodingMode
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe Eac3AtmosDialogueIntelligence
      -> Maybe Eac3AtmosMeteringMode
      -> Maybe Eac3AtmosSurroundExMode
      -> Maybe Eac3AtmosDownmixControl
      -> Eac3AtmosSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Eac3AtmosBitstreamMode)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"bitstreamMode")
            Parser
  (Maybe Eac3AtmosDynamicRangeCompressionRf
   -> Maybe Eac3AtmosCodingMode
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe Eac3AtmosDialogueIntelligence
   -> Maybe Eac3AtmosMeteringMode
   -> Maybe Eac3AtmosSurroundExMode
   -> Maybe Eac3AtmosDownmixControl
   -> Eac3AtmosSettings)
-> Parser (Maybe Eac3AtmosDynamicRangeCompressionRf)
-> Parser
     (Maybe Eac3AtmosCodingMode
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe Eac3AtmosDialogueIntelligence
      -> Maybe Eac3AtmosMeteringMode
      -> Maybe Eac3AtmosSurroundExMode
      -> Maybe Eac3AtmosDownmixControl
      -> Eac3AtmosSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Eac3AtmosDynamicRangeCompressionRf)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"dynamicRangeCompressionRf")
            Parser
  (Maybe Eac3AtmosCodingMode
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe Eac3AtmosDialogueIntelligence
   -> Maybe Eac3AtmosMeteringMode
   -> Maybe Eac3AtmosSurroundExMode
   -> Maybe Eac3AtmosDownmixControl
   -> Eac3AtmosSettings)
-> Parser (Maybe Eac3AtmosCodingMode)
-> Parser
     (Maybe Natural
      -> Maybe Natural
      -> Maybe Natural
      -> Maybe Eac3AtmosDialogueIntelligence
      -> Maybe Eac3AtmosMeteringMode
      -> Maybe Eac3AtmosSurroundExMode
      -> Maybe Eac3AtmosDownmixControl
      -> Eac3AtmosSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Eac3AtmosCodingMode)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"codingMode")
            Parser
  (Maybe Natural
   -> Maybe Natural
   -> Maybe Natural
   -> Maybe Eac3AtmosDialogueIntelligence
   -> Maybe Eac3AtmosMeteringMode
   -> Maybe Eac3AtmosSurroundExMode
   -> Maybe Eac3AtmosDownmixControl
   -> Eac3AtmosSettings)
-> Parser (Maybe Natural)
-> Parser
     (Maybe Natural
      -> Maybe Natural
      -> Maybe Eac3AtmosDialogueIntelligence
      -> Maybe Eac3AtmosMeteringMode
      -> Maybe Eac3AtmosSurroundExMode
      -> Maybe Eac3AtmosDownmixControl
      -> Eac3AtmosSettings)
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
"sampleRate")
            Parser
  (Maybe Natural
   -> Maybe Natural
   -> Maybe Eac3AtmosDialogueIntelligence
   -> Maybe Eac3AtmosMeteringMode
   -> Maybe Eac3AtmosSurroundExMode
   -> Maybe Eac3AtmosDownmixControl
   -> Eac3AtmosSettings)
-> Parser (Maybe Natural)
-> Parser
     (Maybe Natural
      -> Maybe Eac3AtmosDialogueIntelligence
      -> Maybe Eac3AtmosMeteringMode
      -> Maybe Eac3AtmosSurroundExMode
      -> Maybe Eac3AtmosDownmixControl
      -> Eac3AtmosSettings)
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
"speechThreshold")
            Parser
  (Maybe Natural
   -> Maybe Eac3AtmosDialogueIntelligence
   -> Maybe Eac3AtmosMeteringMode
   -> Maybe Eac3AtmosSurroundExMode
   -> Maybe Eac3AtmosDownmixControl
   -> Eac3AtmosSettings)
-> Parser (Maybe Natural)
-> Parser
     (Maybe Eac3AtmosDialogueIntelligence
      -> Maybe Eac3AtmosMeteringMode
      -> Maybe Eac3AtmosSurroundExMode
      -> Maybe Eac3AtmosDownmixControl
      -> Eac3AtmosSettings)
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
"bitrate")
            Parser
  (Maybe Eac3AtmosDialogueIntelligence
   -> Maybe Eac3AtmosMeteringMode
   -> Maybe Eac3AtmosSurroundExMode
   -> Maybe Eac3AtmosDownmixControl
   -> Eac3AtmosSettings)
-> Parser (Maybe Eac3AtmosDialogueIntelligence)
-> Parser
     (Maybe Eac3AtmosMeteringMode
      -> Maybe Eac3AtmosSurroundExMode
      -> Maybe Eac3AtmosDownmixControl
      -> Eac3AtmosSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Eac3AtmosDialogueIntelligence)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"dialogueIntelligence")
            Parser
  (Maybe Eac3AtmosMeteringMode
   -> Maybe Eac3AtmosSurroundExMode
   -> Maybe Eac3AtmosDownmixControl
   -> Eac3AtmosSettings)
-> Parser (Maybe Eac3AtmosMeteringMode)
-> Parser
     (Maybe Eac3AtmosSurroundExMode
      -> Maybe Eac3AtmosDownmixControl -> Eac3AtmosSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Eac3AtmosMeteringMode)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"meteringMode")
            Parser
  (Maybe Eac3AtmosSurroundExMode
   -> Maybe Eac3AtmosDownmixControl -> Eac3AtmosSettings)
-> Parser (Maybe Eac3AtmosSurroundExMode)
-> Parser (Maybe Eac3AtmosDownmixControl -> Eac3AtmosSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Eac3AtmosSurroundExMode)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"surroundExMode")
            Parser (Maybe Eac3AtmosDownmixControl -> Eac3AtmosSettings)
-> Parser (Maybe Eac3AtmosDownmixControl)
-> Parser Eac3AtmosSettings
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Eac3AtmosDownmixControl)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"downmixControl")
      )

instance Prelude.Hashable Eac3AtmosSettings

instance Prelude.NFData Eac3AtmosSettings

instance Core.ToJSON Eac3AtmosSettings where
  toJSON :: Eac3AtmosSettings -> Value
toJSON Eac3AtmosSettings' {Maybe Double
Maybe Natural
Maybe Eac3AtmosBitstreamMode
Maybe Eac3AtmosCodingMode
Maybe Eac3AtmosDialogueIntelligence
Maybe Eac3AtmosDownmixControl
Maybe Eac3AtmosDynamicRangeCompressionLine
Maybe Eac3AtmosDynamicRangeCompressionRf
Maybe Eac3AtmosDynamicRangeControl
Maybe Eac3AtmosMeteringMode
Maybe Eac3AtmosStereoDownmix
Maybe Eac3AtmosSurroundExMode
downmixControl :: Maybe Eac3AtmosDownmixControl
surroundExMode :: Maybe Eac3AtmosSurroundExMode
meteringMode :: Maybe Eac3AtmosMeteringMode
dialogueIntelligence :: Maybe Eac3AtmosDialogueIntelligence
bitrate :: Maybe Natural
speechThreshold :: Maybe Natural
sampleRate :: Maybe Natural
codingMode :: Maybe Eac3AtmosCodingMode
dynamicRangeCompressionRf :: Maybe Eac3AtmosDynamicRangeCompressionRf
bitstreamMode :: Maybe Eac3AtmosBitstreamMode
dynamicRangeControl :: Maybe Eac3AtmosDynamicRangeControl
loRoSurroundMixLevel :: Maybe Double
ltRtSurroundMixLevel :: Maybe Double
dynamicRangeCompressionLine :: Maybe Eac3AtmosDynamicRangeCompressionLine
ltRtCenterMixLevel :: Maybe Double
loRoCenterMixLevel :: Maybe Double
stereoDownmix :: Maybe Eac3AtmosStereoDownmix
$sel:downmixControl:Eac3AtmosSettings' :: Eac3AtmosSettings -> Maybe Eac3AtmosDownmixControl
$sel:surroundExMode:Eac3AtmosSettings' :: Eac3AtmosSettings -> Maybe Eac3AtmosSurroundExMode
$sel:meteringMode:Eac3AtmosSettings' :: Eac3AtmosSettings -> Maybe Eac3AtmosMeteringMode
$sel:dialogueIntelligence:Eac3AtmosSettings' :: Eac3AtmosSettings -> Maybe Eac3AtmosDialogueIntelligence
$sel:bitrate:Eac3AtmosSettings' :: Eac3AtmosSettings -> Maybe Natural
$sel:speechThreshold:Eac3AtmosSettings' :: Eac3AtmosSettings -> Maybe Natural
$sel:sampleRate:Eac3AtmosSettings' :: Eac3AtmosSettings -> Maybe Natural
$sel:codingMode:Eac3AtmosSettings' :: Eac3AtmosSettings -> Maybe Eac3AtmosCodingMode
$sel:dynamicRangeCompressionRf:Eac3AtmosSettings' :: Eac3AtmosSettings -> Maybe Eac3AtmosDynamicRangeCompressionRf
$sel:bitstreamMode:Eac3AtmosSettings' :: Eac3AtmosSettings -> Maybe Eac3AtmosBitstreamMode
$sel:dynamicRangeControl:Eac3AtmosSettings' :: Eac3AtmosSettings -> Maybe Eac3AtmosDynamicRangeControl
$sel:loRoSurroundMixLevel:Eac3AtmosSettings' :: Eac3AtmosSettings -> Maybe Double
$sel:ltRtSurroundMixLevel:Eac3AtmosSettings' :: Eac3AtmosSettings -> Maybe Double
$sel:dynamicRangeCompressionLine:Eac3AtmosSettings' :: Eac3AtmosSettings -> Maybe Eac3AtmosDynamicRangeCompressionLine
$sel:ltRtCenterMixLevel:Eac3AtmosSettings' :: Eac3AtmosSettings -> Maybe Double
$sel:loRoCenterMixLevel:Eac3AtmosSettings' :: Eac3AtmosSettings -> Maybe Double
$sel:stereoDownmix:Eac3AtmosSettings' :: Eac3AtmosSettings -> Maybe Eac3AtmosStereoDownmix
..} =
    [Pair] -> Value
Core.object
      ( [Maybe Pair] -> [Pair]
forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Text
"stereoDownmix" Text -> Eac3AtmosStereoDownmix -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (Eac3AtmosStereoDownmix -> Pair)
-> Maybe Eac3AtmosStereoDownmix -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Eac3AtmosStereoDownmix
stereoDownmix,
            (Text
"loRoCenterMixLevel" Text -> Double -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (Double -> Pair) -> Maybe Double -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Double
loRoCenterMixLevel,
            (Text
"ltRtCenterMixLevel" Text -> Double -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (Double -> Pair) -> Maybe Double -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Double
ltRtCenterMixLevel,
            (Text
"dynamicRangeCompressionLine" Text -> Eac3AtmosDynamicRangeCompressionLine -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (Eac3AtmosDynamicRangeCompressionLine -> Pair)
-> Maybe Eac3AtmosDynamicRangeCompressionLine -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Eac3AtmosDynamicRangeCompressionLine
dynamicRangeCompressionLine,
            (Text
"ltRtSurroundMixLevel" Text -> Double -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (Double -> Pair) -> Maybe Double -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Double
ltRtSurroundMixLevel,
            (Text
"loRoSurroundMixLevel" Text -> Double -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (Double -> Pair) -> Maybe Double -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Double
loRoSurroundMixLevel,
            (Text
"dynamicRangeControl" Text -> Eac3AtmosDynamicRangeControl -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (Eac3AtmosDynamicRangeControl -> Pair)
-> Maybe Eac3AtmosDynamicRangeControl -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Eac3AtmosDynamicRangeControl
dynamicRangeControl,
            (Text
"bitstreamMode" Text -> Eac3AtmosBitstreamMode -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (Eac3AtmosBitstreamMode -> Pair)
-> Maybe Eac3AtmosBitstreamMode -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Eac3AtmosBitstreamMode
bitstreamMode,
            (Text
"dynamicRangeCompressionRf" Text -> Eac3AtmosDynamicRangeCompressionRf -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (Eac3AtmosDynamicRangeCompressionRf -> Pair)
-> Maybe Eac3AtmosDynamicRangeCompressionRf -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Eac3AtmosDynamicRangeCompressionRf
dynamicRangeCompressionRf,
            (Text
"codingMode" Text -> Eac3AtmosCodingMode -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (Eac3AtmosCodingMode -> Pair)
-> Maybe Eac3AtmosCodingMode -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Eac3AtmosCodingMode
codingMode,
            (Text
"sampleRate" 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
sampleRate,
            (Text
"speechThreshold" 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
speechThreshold,
            (Text
"bitrate" 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
bitrate,
            (Text
"dialogueIntelligence" Text -> Eac3AtmosDialogueIntelligence -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (Eac3AtmosDialogueIntelligence -> Pair)
-> Maybe Eac3AtmosDialogueIntelligence -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Eac3AtmosDialogueIntelligence
dialogueIntelligence,
            (Text
"meteringMode" Text -> Eac3AtmosMeteringMode -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (Eac3AtmosMeteringMode -> Pair)
-> Maybe Eac3AtmosMeteringMode -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Eac3AtmosMeteringMode
meteringMode,
            (Text
"surroundExMode" Text -> Eac3AtmosSurroundExMode -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (Eac3AtmosSurroundExMode -> Pair)
-> Maybe Eac3AtmosSurroundExMode -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Eac3AtmosSurroundExMode
surroundExMode,
            (Text
"downmixControl" Text -> Eac3AtmosDownmixControl -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (Eac3AtmosDownmixControl -> Pair)
-> Maybe Eac3AtmosDownmixControl -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Eac3AtmosDownmixControl
downmixControl
          ]
      )