{-# 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.Eac3Settings
-- 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.Eac3Settings 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.Eac3AttenuationControl
import Amazonka.MediaConvert.Types.Eac3BitstreamMode
import Amazonka.MediaConvert.Types.Eac3CodingMode
import Amazonka.MediaConvert.Types.Eac3DcFilter
import Amazonka.MediaConvert.Types.Eac3DynamicRangeCompressionLine
import Amazonka.MediaConvert.Types.Eac3DynamicRangeCompressionRf
import Amazonka.MediaConvert.Types.Eac3LfeControl
import Amazonka.MediaConvert.Types.Eac3LfeFilter
import Amazonka.MediaConvert.Types.Eac3MetadataControl
import Amazonka.MediaConvert.Types.Eac3PassthroughControl
import Amazonka.MediaConvert.Types.Eac3PhaseControl
import Amazonka.MediaConvert.Types.Eac3StereoDownmix
import Amazonka.MediaConvert.Types.Eac3SurroundExMode
import Amazonka.MediaConvert.Types.Eac3SurroundMode
import qualified Amazonka.Prelude as Prelude

-- | Required when you set (Codec) under (AudioDescriptions)>(CodecSettings)
-- to the value EAC3.
--
-- /See:/ 'newEac3Settings' smart constructor.
data Eac3Settings = Eac3Settings'
  { -- | If set to ATTENUATE_3_DB, applies a 3 dB attenuation to the surround
    -- channels. Only used for 3\/2 coding mode.
    Eac3Settings -> Maybe Eac3AttenuationControl
attenuationControl :: Prelude.Maybe Eac3AttenuationControl,
    -- | Specify the average bitrate in bits per second. The bitrate that you
    -- specify must be a multiple of 8000 within the allowed minimum and
    -- maximum values. Leave blank to use the default bitrate for the coding
    -- mode you select according ETSI TS 102 366. Valid bitrates for coding
    -- mode 1\/0: Default: 96000. Minimum: 32000. Maximum: 3024000. Valid
    -- bitrates for coding mode 2\/0: Default: 192000. Minimum: 96000. Maximum:
    -- 3024000. Valid bitrates for coding mode 3\/2: Default: 384000. Minimum:
    -- 192000. Maximum: 3024000.
    Eac3Settings -> Maybe Natural
bitrate :: Prelude.Maybe Prelude.Natural,
    -- | 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).
    Eac3Settings -> Maybe Eac3BitstreamMode
bitstreamMode :: Prelude.Maybe Eac3BitstreamMode,
    -- | Dolby Digital Plus coding mode. Determines number of channels.
    Eac3Settings -> Maybe Eac3CodingMode
codingMode :: Prelude.Maybe Eac3CodingMode,
    -- | Activates a DC highpass filter for all input channels.
    Eac3Settings -> Maybe Eac3DcFilter
dcFilter :: Prelude.Maybe Eac3DcFilter,
    -- | Sets the dialnorm for the output. If blank and input audio is Dolby
    -- Digital Plus, dialnorm will be passed through.
    Eac3Settings -> Maybe Natural
dialnorm :: Prelude.Maybe Prelude.Natural,
    -- | Choose the Dolby Digital dynamic range control (DRC) profile that
    -- MediaConvert uses when encoding the metadata in the Dolby Digital stream
    -- for the line operating mode. Related setting: When you use this setting,
    -- MediaConvert ignores any value you provide for Dynamic range compression
    -- profile (DynamicRangeCompressionProfile). For information about the
    -- Dolby Digital 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.
    Eac3Settings -> Maybe Eac3DynamicRangeCompressionLine
dynamicRangeCompressionLine :: Prelude.Maybe Eac3DynamicRangeCompressionLine,
    -- | Choose the Dolby Digital dynamic range control (DRC) profile that
    -- MediaConvert uses when encoding the metadata in the Dolby Digital stream
    -- for the RF operating mode. Related setting: When you use this setting,
    -- MediaConvert ignores any value you provide for Dynamic range compression
    -- profile (DynamicRangeCompressionProfile). For information about the
    -- Dolby Digital 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.
    Eac3Settings -> Maybe Eac3DynamicRangeCompressionRf
dynamicRangeCompressionRf :: Prelude.Maybe Eac3DynamicRangeCompressionRf,
    -- | When encoding 3\/2 audio, controls whether the LFE channel is enabled
    Eac3Settings -> Maybe Eac3LfeControl
lfeControl :: Prelude.Maybe Eac3LfeControl,
    -- | Applies a 120Hz lowpass filter to the LFE channel prior to encoding.
    -- Only valid with 3_2_LFE coding mode.
    Eac3Settings -> Maybe Eac3LfeFilter
lfeFilter :: Prelude.Maybe Eac3LfeFilter,
    -- | Specify a value for the following Dolby Digital Plus setting: Left
    -- only\/Right only center mix (Lo\/Ro center). MediaConvert uses this
    -- value for downmixing. How the service uses this value depends on the
    -- value that you choose for Stereo downmix (Eac3StereoDownmix). Valid
    -- values: 3.0, 1.5, 0.0, -1.5, -3.0, -4.5, -6.0, and -60. The value -60
    -- mutes the channel. This setting applies only if you keep the default
    -- value of 3\/2 - L, R, C, Ls, Rs (CODING_MODE_3_2) for the setting Coding
    -- mode (Eac3CodingMode). If you choose a different value for Coding mode,
    -- the service ignores Left only\/Right only center (loRoCenterMixLevel).
    Eac3Settings -> Maybe Double
loRoCenterMixLevel :: Prelude.Maybe Prelude.Double,
    -- | Specify a value for the following Dolby Digital Plus setting: Left
    -- only\/Right only (Lo\/Ro surround). MediaConvert uses this value for
    -- downmixing. How the service uses this value depends on the value that
    -- you choose for Stereo downmix (Eac3StereoDownmix). Valid values: -1.5,
    -- -3.0, -4.5, -6.0, and -60. The value -60 mutes the channel. This setting
    -- applies only if you keep the default value of 3\/2 - L, R, C, Ls, Rs
    -- (CODING_MODE_3_2) for the setting Coding mode (Eac3CodingMode). If you
    -- choose a different value for Coding mode, the service ignores Left
    -- only\/Right only surround (loRoSurroundMixLevel).
    Eac3Settings -> Maybe Double
loRoSurroundMixLevel :: Prelude.Maybe Prelude.Double,
    -- | Specify a value for the following Dolby Digital Plus setting: Left
    -- total\/Right total center mix (Lt\/Rt center). MediaConvert uses this
    -- value for downmixing. How the service uses this value depends on the
    -- value that you choose for Stereo downmix (Eac3StereoDownmix). Valid
    -- values: 3.0, 1.5, 0.0, -1.5, -3.0, -4.5, -6.0, and -60. The value -60
    -- mutes the channel. This setting applies only if you keep the default
    -- value of 3\/2 - L, R, C, Ls, Rs (CODING_MODE_3_2) for the setting Coding
    -- mode (Eac3CodingMode). If you choose a different value for Coding mode,
    -- the service ignores Left total\/Right total center (ltRtCenterMixLevel).
    Eac3Settings -> Maybe Double
ltRtCenterMixLevel :: Prelude.Maybe Prelude.Double,
    -- | Specify a value for the following Dolby Digital Plus setting: Left
    -- total\/Right total surround mix (Lt\/Rt surround). MediaConvert uses
    -- this value for downmixing. How the service uses this value depends on
    -- the value that you choose for Stereo downmix (Eac3StereoDownmix). Valid
    -- values: -1.5, -3.0, -4.5, -6.0, and -60. The value -60 mutes the
    -- channel. This setting applies only if you keep the default value of 3\/2
    -- - L, R, C, Ls, Rs (CODING_MODE_3_2) for the setting Coding mode
    -- (Eac3CodingMode). If you choose a different value for Coding mode, the
    -- service ignores Left total\/Right total surround (ltRtSurroundMixLevel).
    Eac3Settings -> Maybe Double
ltRtSurroundMixLevel :: Prelude.Maybe Prelude.Double,
    -- | When set to FOLLOW_INPUT, encoder metadata will be sourced from the DD,
    -- DD+, or DolbyE decoder that supplied this audio data. If audio was not
    -- supplied from one of these streams, then the static metadata settings
    -- will be used.
    Eac3Settings -> Maybe Eac3MetadataControl
metadataControl :: Prelude.Maybe Eac3MetadataControl,
    -- | When set to WHEN_POSSIBLE, input DD+ audio will be passed through if it
    -- is present on the input. this detection is dynamic over the life of the
    -- transcode. Inputs that alternate between DD+ and non-DD+ content will
    -- have a consistent DD+ output as the system alternates between
    -- passthrough and encoding.
    Eac3Settings -> Maybe Eac3PassthroughControl
passthroughControl :: Prelude.Maybe Eac3PassthroughControl,
    -- | Controls the amount of phase-shift applied to the surround channels.
    -- Only used for 3\/2 coding mode.
    Eac3Settings -> Maybe Eac3PhaseControl
phaseControl :: Prelude.Maybe Eac3PhaseControl,
    -- | This value is always 48000. It represents the sample rate in Hz.
    Eac3Settings -> Maybe Natural
sampleRate :: Prelude.Maybe Prelude.Natural,
    -- | Choose how the service does stereo downmixing. This setting only applies
    -- if you keep the default value of 3\/2 - L, R, C, Ls, Rs
    -- (CODING_MODE_3_2) for the setting Coding mode (Eac3CodingMode). If you
    -- choose a different value for Coding mode, the service ignores Stereo
    -- downmix (Eac3StereoDownmix).
    Eac3Settings -> Maybe Eac3StereoDownmix
stereoDownmix :: Prelude.Maybe Eac3StereoDownmix,
    -- | When encoding 3\/2 audio, sets whether an extra center back surround
    -- channel is matrix encoded into the left and right surround channels.
    Eac3Settings -> Maybe Eac3SurroundExMode
surroundExMode :: Prelude.Maybe Eac3SurroundExMode,
    -- | When encoding 2\/0 audio, sets whether Dolby Surround is matrix encoded
    -- into the two channels.
    Eac3Settings -> Maybe Eac3SurroundMode
surroundMode :: Prelude.Maybe Eac3SurroundMode
  }
  deriving (Eac3Settings -> Eac3Settings -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Eac3Settings -> Eac3Settings -> Bool
$c/= :: Eac3Settings -> Eac3Settings -> Bool
== :: Eac3Settings -> Eac3Settings -> Bool
$c== :: Eac3Settings -> Eac3Settings -> Bool
Prelude.Eq, ReadPrec [Eac3Settings]
ReadPrec Eac3Settings
Int -> ReadS Eac3Settings
ReadS [Eac3Settings]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [Eac3Settings]
$creadListPrec :: ReadPrec [Eac3Settings]
readPrec :: ReadPrec Eac3Settings
$creadPrec :: ReadPrec Eac3Settings
readList :: ReadS [Eac3Settings]
$creadList :: ReadS [Eac3Settings]
readsPrec :: Int -> ReadS Eac3Settings
$creadsPrec :: Int -> ReadS Eac3Settings
Prelude.Read, Int -> Eac3Settings -> ShowS
[Eac3Settings] -> ShowS
Eac3Settings -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Eac3Settings] -> ShowS
$cshowList :: [Eac3Settings] -> ShowS
show :: Eac3Settings -> String
$cshow :: Eac3Settings -> String
showsPrec :: Int -> Eac3Settings -> ShowS
$cshowsPrec :: Int -> Eac3Settings -> ShowS
Prelude.Show, forall x. Rep Eac3Settings x -> Eac3Settings
forall x. Eac3Settings -> Rep Eac3Settings x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep Eac3Settings x -> Eac3Settings
$cfrom :: forall x. Eac3Settings -> Rep Eac3Settings x
Prelude.Generic)

-- |
-- Create a value of 'Eac3Settings' 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:
--
-- 'attenuationControl', 'eac3Settings_attenuationControl' - If set to ATTENUATE_3_DB, applies a 3 dB attenuation to the surround
-- channels. Only used for 3\/2 coding mode.
--
-- 'bitrate', 'eac3Settings_bitrate' - Specify the average bitrate in bits per second. The bitrate that you
-- specify must be a multiple of 8000 within the allowed minimum and
-- maximum values. Leave blank to use the default bitrate for the coding
-- mode you select according ETSI TS 102 366. Valid bitrates for coding
-- mode 1\/0: Default: 96000. Minimum: 32000. Maximum: 3024000. Valid
-- bitrates for coding mode 2\/0: Default: 192000. Minimum: 96000. Maximum:
-- 3024000. Valid bitrates for coding mode 3\/2: Default: 384000. Minimum:
-- 192000. Maximum: 3024000.
--
-- 'bitstreamMode', 'eac3Settings_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).
--
-- 'codingMode', 'eac3Settings_codingMode' - Dolby Digital Plus coding mode. Determines number of channels.
--
-- 'dcFilter', 'eac3Settings_dcFilter' - Activates a DC highpass filter for all input channels.
--
-- 'dialnorm', 'eac3Settings_dialnorm' - Sets the dialnorm for the output. If blank and input audio is Dolby
-- Digital Plus, dialnorm will be passed through.
--
-- 'dynamicRangeCompressionLine', 'eac3Settings_dynamicRangeCompressionLine' - Choose the Dolby Digital dynamic range control (DRC) profile that
-- MediaConvert uses when encoding the metadata in the Dolby Digital stream
-- for the line operating mode. Related setting: When you use this setting,
-- MediaConvert ignores any value you provide for Dynamic range compression
-- profile (DynamicRangeCompressionProfile). For information about the
-- Dolby Digital 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.
--
-- 'dynamicRangeCompressionRf', 'eac3Settings_dynamicRangeCompressionRf' - Choose the Dolby Digital dynamic range control (DRC) profile that
-- MediaConvert uses when encoding the metadata in the Dolby Digital stream
-- for the RF operating mode. Related setting: When you use this setting,
-- MediaConvert ignores any value you provide for Dynamic range compression
-- profile (DynamicRangeCompressionProfile). For information about the
-- Dolby Digital 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.
--
-- 'lfeControl', 'eac3Settings_lfeControl' - When encoding 3\/2 audio, controls whether the LFE channel is enabled
--
-- 'lfeFilter', 'eac3Settings_lfeFilter' - Applies a 120Hz lowpass filter to the LFE channel prior to encoding.
-- Only valid with 3_2_LFE coding mode.
--
-- 'loRoCenterMixLevel', 'eac3Settings_loRoCenterMixLevel' - Specify a value for the following Dolby Digital Plus setting: Left
-- only\/Right only center mix (Lo\/Ro center). MediaConvert uses this
-- value for downmixing. How the service uses this value depends on the
-- value that you choose for Stereo downmix (Eac3StereoDownmix). Valid
-- values: 3.0, 1.5, 0.0, -1.5, -3.0, -4.5, -6.0, and -60. The value -60
-- mutes the channel. This setting applies only if you keep the default
-- value of 3\/2 - L, R, C, Ls, Rs (CODING_MODE_3_2) for the setting Coding
-- mode (Eac3CodingMode). If you choose a different value for Coding mode,
-- the service ignores Left only\/Right only center (loRoCenterMixLevel).
--
-- 'loRoSurroundMixLevel', 'eac3Settings_loRoSurroundMixLevel' - Specify a value for the following Dolby Digital Plus setting: Left
-- only\/Right only (Lo\/Ro surround). MediaConvert uses this value for
-- downmixing. How the service uses this value depends on the value that
-- you choose for Stereo downmix (Eac3StereoDownmix). Valid values: -1.5,
-- -3.0, -4.5, -6.0, and -60. The value -60 mutes the channel. This setting
-- applies only if you keep the default value of 3\/2 - L, R, C, Ls, Rs
-- (CODING_MODE_3_2) for the setting Coding mode (Eac3CodingMode). If you
-- choose a different value for Coding mode, the service ignores Left
-- only\/Right only surround (loRoSurroundMixLevel).
--
-- 'ltRtCenterMixLevel', 'eac3Settings_ltRtCenterMixLevel' - Specify a value for the following Dolby Digital Plus setting: Left
-- total\/Right total center mix (Lt\/Rt center). MediaConvert uses this
-- value for downmixing. How the service uses this value depends on the
-- value that you choose for Stereo downmix (Eac3StereoDownmix). Valid
-- values: 3.0, 1.5, 0.0, -1.5, -3.0, -4.5, -6.0, and -60. The value -60
-- mutes the channel. This setting applies only if you keep the default
-- value of 3\/2 - L, R, C, Ls, Rs (CODING_MODE_3_2) for the setting Coding
-- mode (Eac3CodingMode). If you choose a different value for Coding mode,
-- the service ignores Left total\/Right total center (ltRtCenterMixLevel).
--
-- 'ltRtSurroundMixLevel', 'eac3Settings_ltRtSurroundMixLevel' - Specify a value for the following Dolby Digital Plus setting: Left
-- total\/Right total surround mix (Lt\/Rt surround). MediaConvert uses
-- this value for downmixing. How the service uses this value depends on
-- the value that you choose for Stereo downmix (Eac3StereoDownmix). Valid
-- values: -1.5, -3.0, -4.5, -6.0, and -60. The value -60 mutes the
-- channel. This setting applies only if you keep the default value of 3\/2
-- - L, R, C, Ls, Rs (CODING_MODE_3_2) for the setting Coding mode
-- (Eac3CodingMode). If you choose a different value for Coding mode, the
-- service ignores Left total\/Right total surround (ltRtSurroundMixLevel).
--
-- 'metadataControl', 'eac3Settings_metadataControl' - When set to FOLLOW_INPUT, encoder metadata will be sourced from the DD,
-- DD+, or DolbyE decoder that supplied this audio data. If audio was not
-- supplied from one of these streams, then the static metadata settings
-- will be used.
--
-- 'passthroughControl', 'eac3Settings_passthroughControl' - When set to WHEN_POSSIBLE, input DD+ audio will be passed through if it
-- is present on the input. this detection is dynamic over the life of the
-- transcode. Inputs that alternate between DD+ and non-DD+ content will
-- have a consistent DD+ output as the system alternates between
-- passthrough and encoding.
--
-- 'phaseControl', 'eac3Settings_phaseControl' - Controls the amount of phase-shift applied to the surround channels.
-- Only used for 3\/2 coding mode.
--
-- 'sampleRate', 'eac3Settings_sampleRate' - This value is always 48000. It represents the sample rate in Hz.
--
-- 'stereoDownmix', 'eac3Settings_stereoDownmix' - Choose how the service does stereo downmixing. This setting only applies
-- if you keep the default value of 3\/2 - L, R, C, Ls, Rs
-- (CODING_MODE_3_2) for the setting Coding mode (Eac3CodingMode). If you
-- choose a different value for Coding mode, the service ignores Stereo
-- downmix (Eac3StereoDownmix).
--
-- 'surroundExMode', 'eac3Settings_surroundExMode' - When encoding 3\/2 audio, sets whether an extra center back surround
-- channel is matrix encoded into the left and right surround channels.
--
-- 'surroundMode', 'eac3Settings_surroundMode' - When encoding 2\/0 audio, sets whether Dolby Surround is matrix encoded
-- into the two channels.
newEac3Settings ::
  Eac3Settings
newEac3Settings :: Eac3Settings
newEac3Settings =
  Eac3Settings'
    { $sel:attenuationControl:Eac3Settings' :: Maybe Eac3AttenuationControl
attenuationControl = forall a. Maybe a
Prelude.Nothing,
      $sel:bitrate:Eac3Settings' :: Maybe Natural
bitrate = forall a. Maybe a
Prelude.Nothing,
      $sel:bitstreamMode:Eac3Settings' :: Maybe Eac3BitstreamMode
bitstreamMode = forall a. Maybe a
Prelude.Nothing,
      $sel:codingMode:Eac3Settings' :: Maybe Eac3CodingMode
codingMode = forall a. Maybe a
Prelude.Nothing,
      $sel:dcFilter:Eac3Settings' :: Maybe Eac3DcFilter
dcFilter = forall a. Maybe a
Prelude.Nothing,
      $sel:dialnorm:Eac3Settings' :: Maybe Natural
dialnorm = forall a. Maybe a
Prelude.Nothing,
      $sel:dynamicRangeCompressionLine:Eac3Settings' :: Maybe Eac3DynamicRangeCompressionLine
dynamicRangeCompressionLine = forall a. Maybe a
Prelude.Nothing,
      $sel:dynamicRangeCompressionRf:Eac3Settings' :: Maybe Eac3DynamicRangeCompressionRf
dynamicRangeCompressionRf = forall a. Maybe a
Prelude.Nothing,
      $sel:lfeControl:Eac3Settings' :: Maybe Eac3LfeControl
lfeControl = forall a. Maybe a
Prelude.Nothing,
      $sel:lfeFilter:Eac3Settings' :: Maybe Eac3LfeFilter
lfeFilter = forall a. Maybe a
Prelude.Nothing,
      $sel:loRoCenterMixLevel:Eac3Settings' :: Maybe Double
loRoCenterMixLevel = forall a. Maybe a
Prelude.Nothing,
      $sel:loRoSurroundMixLevel:Eac3Settings' :: Maybe Double
loRoSurroundMixLevel = forall a. Maybe a
Prelude.Nothing,
      $sel:ltRtCenterMixLevel:Eac3Settings' :: Maybe Double
ltRtCenterMixLevel = forall a. Maybe a
Prelude.Nothing,
      $sel:ltRtSurroundMixLevel:Eac3Settings' :: Maybe Double
ltRtSurroundMixLevel = forall a. Maybe a
Prelude.Nothing,
      $sel:metadataControl:Eac3Settings' :: Maybe Eac3MetadataControl
metadataControl = forall a. Maybe a
Prelude.Nothing,
      $sel:passthroughControl:Eac3Settings' :: Maybe Eac3PassthroughControl
passthroughControl = forall a. Maybe a
Prelude.Nothing,
      $sel:phaseControl:Eac3Settings' :: Maybe Eac3PhaseControl
phaseControl = forall a. Maybe a
Prelude.Nothing,
      $sel:sampleRate:Eac3Settings' :: Maybe Natural
sampleRate = forall a. Maybe a
Prelude.Nothing,
      $sel:stereoDownmix:Eac3Settings' :: Maybe Eac3StereoDownmix
stereoDownmix = forall a. Maybe a
Prelude.Nothing,
      $sel:surroundExMode:Eac3Settings' :: Maybe Eac3SurroundExMode
surroundExMode = forall a. Maybe a
Prelude.Nothing,
      $sel:surroundMode:Eac3Settings' :: Maybe Eac3SurroundMode
surroundMode = forall a. Maybe a
Prelude.Nothing
    }

-- | If set to ATTENUATE_3_DB, applies a 3 dB attenuation to the surround
-- channels. Only used for 3\/2 coding mode.
eac3Settings_attenuationControl :: Lens.Lens' Eac3Settings (Prelude.Maybe Eac3AttenuationControl)
eac3Settings_attenuationControl :: Lens' Eac3Settings (Maybe Eac3AttenuationControl)
eac3Settings_attenuationControl = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Eac3Settings' {Maybe Eac3AttenuationControl
attenuationControl :: Maybe Eac3AttenuationControl
$sel:attenuationControl:Eac3Settings' :: Eac3Settings -> Maybe Eac3AttenuationControl
attenuationControl} -> Maybe Eac3AttenuationControl
attenuationControl) (\s :: Eac3Settings
s@Eac3Settings' {} Maybe Eac3AttenuationControl
a -> Eac3Settings
s {$sel:attenuationControl:Eac3Settings' :: Maybe Eac3AttenuationControl
attenuationControl = Maybe Eac3AttenuationControl
a} :: Eac3Settings)

-- | Specify the average bitrate in bits per second. The bitrate that you
-- specify must be a multiple of 8000 within the allowed minimum and
-- maximum values. Leave blank to use the default bitrate for the coding
-- mode you select according ETSI TS 102 366. Valid bitrates for coding
-- mode 1\/0: Default: 96000. Minimum: 32000. Maximum: 3024000. Valid
-- bitrates for coding mode 2\/0: Default: 192000. Minimum: 96000. Maximum:
-- 3024000. Valid bitrates for coding mode 3\/2: Default: 384000. Minimum:
-- 192000. Maximum: 3024000.
eac3Settings_bitrate :: Lens.Lens' Eac3Settings (Prelude.Maybe Prelude.Natural)
eac3Settings_bitrate :: Lens' Eac3Settings (Maybe Natural)
eac3Settings_bitrate = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Eac3Settings' {Maybe Natural
bitrate :: Maybe Natural
$sel:bitrate:Eac3Settings' :: Eac3Settings -> Maybe Natural
bitrate} -> Maybe Natural
bitrate) (\s :: Eac3Settings
s@Eac3Settings' {} Maybe Natural
a -> Eac3Settings
s {$sel:bitrate:Eac3Settings' :: Maybe Natural
bitrate = Maybe Natural
a} :: Eac3Settings)

-- | 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).
eac3Settings_bitstreamMode :: Lens.Lens' Eac3Settings (Prelude.Maybe Eac3BitstreamMode)
eac3Settings_bitstreamMode :: Lens' Eac3Settings (Maybe Eac3BitstreamMode)
eac3Settings_bitstreamMode = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Eac3Settings' {Maybe Eac3BitstreamMode
bitstreamMode :: Maybe Eac3BitstreamMode
$sel:bitstreamMode:Eac3Settings' :: Eac3Settings -> Maybe Eac3BitstreamMode
bitstreamMode} -> Maybe Eac3BitstreamMode
bitstreamMode) (\s :: Eac3Settings
s@Eac3Settings' {} Maybe Eac3BitstreamMode
a -> Eac3Settings
s {$sel:bitstreamMode:Eac3Settings' :: Maybe Eac3BitstreamMode
bitstreamMode = Maybe Eac3BitstreamMode
a} :: Eac3Settings)

-- | Dolby Digital Plus coding mode. Determines number of channels.
eac3Settings_codingMode :: Lens.Lens' Eac3Settings (Prelude.Maybe Eac3CodingMode)
eac3Settings_codingMode :: Lens' Eac3Settings (Maybe Eac3CodingMode)
eac3Settings_codingMode = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Eac3Settings' {Maybe Eac3CodingMode
codingMode :: Maybe Eac3CodingMode
$sel:codingMode:Eac3Settings' :: Eac3Settings -> Maybe Eac3CodingMode
codingMode} -> Maybe Eac3CodingMode
codingMode) (\s :: Eac3Settings
s@Eac3Settings' {} Maybe Eac3CodingMode
a -> Eac3Settings
s {$sel:codingMode:Eac3Settings' :: Maybe Eac3CodingMode
codingMode = Maybe Eac3CodingMode
a} :: Eac3Settings)

-- | Activates a DC highpass filter for all input channels.
eac3Settings_dcFilter :: Lens.Lens' Eac3Settings (Prelude.Maybe Eac3DcFilter)
eac3Settings_dcFilter :: Lens' Eac3Settings (Maybe Eac3DcFilter)
eac3Settings_dcFilter = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Eac3Settings' {Maybe Eac3DcFilter
dcFilter :: Maybe Eac3DcFilter
$sel:dcFilter:Eac3Settings' :: Eac3Settings -> Maybe Eac3DcFilter
dcFilter} -> Maybe Eac3DcFilter
dcFilter) (\s :: Eac3Settings
s@Eac3Settings' {} Maybe Eac3DcFilter
a -> Eac3Settings
s {$sel:dcFilter:Eac3Settings' :: Maybe Eac3DcFilter
dcFilter = Maybe Eac3DcFilter
a} :: Eac3Settings)

-- | Sets the dialnorm for the output. If blank and input audio is Dolby
-- Digital Plus, dialnorm will be passed through.
eac3Settings_dialnorm :: Lens.Lens' Eac3Settings (Prelude.Maybe Prelude.Natural)
eac3Settings_dialnorm :: Lens' Eac3Settings (Maybe Natural)
eac3Settings_dialnorm = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Eac3Settings' {Maybe Natural
dialnorm :: Maybe Natural
$sel:dialnorm:Eac3Settings' :: Eac3Settings -> Maybe Natural
dialnorm} -> Maybe Natural
dialnorm) (\s :: Eac3Settings
s@Eac3Settings' {} Maybe Natural
a -> Eac3Settings
s {$sel:dialnorm:Eac3Settings' :: Maybe Natural
dialnorm = Maybe Natural
a} :: Eac3Settings)

-- | Choose the Dolby Digital dynamic range control (DRC) profile that
-- MediaConvert uses when encoding the metadata in the Dolby Digital stream
-- for the line operating mode. Related setting: When you use this setting,
-- MediaConvert ignores any value you provide for Dynamic range compression
-- profile (DynamicRangeCompressionProfile). For information about the
-- Dolby Digital 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.
eac3Settings_dynamicRangeCompressionLine :: Lens.Lens' Eac3Settings (Prelude.Maybe Eac3DynamicRangeCompressionLine)
eac3Settings_dynamicRangeCompressionLine :: Lens' Eac3Settings (Maybe Eac3DynamicRangeCompressionLine)
eac3Settings_dynamicRangeCompressionLine = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Eac3Settings' {Maybe Eac3DynamicRangeCompressionLine
dynamicRangeCompressionLine :: Maybe Eac3DynamicRangeCompressionLine
$sel:dynamicRangeCompressionLine:Eac3Settings' :: Eac3Settings -> Maybe Eac3DynamicRangeCompressionLine
dynamicRangeCompressionLine} -> Maybe Eac3DynamicRangeCompressionLine
dynamicRangeCompressionLine) (\s :: Eac3Settings
s@Eac3Settings' {} Maybe Eac3DynamicRangeCompressionLine
a -> Eac3Settings
s {$sel:dynamicRangeCompressionLine:Eac3Settings' :: Maybe Eac3DynamicRangeCompressionLine
dynamicRangeCompressionLine = Maybe Eac3DynamicRangeCompressionLine
a} :: Eac3Settings)

-- | Choose the Dolby Digital dynamic range control (DRC) profile that
-- MediaConvert uses when encoding the metadata in the Dolby Digital stream
-- for the RF operating mode. Related setting: When you use this setting,
-- MediaConvert ignores any value you provide for Dynamic range compression
-- profile (DynamicRangeCompressionProfile). For information about the
-- Dolby Digital 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.
eac3Settings_dynamicRangeCompressionRf :: Lens.Lens' Eac3Settings (Prelude.Maybe Eac3DynamicRangeCompressionRf)
eac3Settings_dynamicRangeCompressionRf :: Lens' Eac3Settings (Maybe Eac3DynamicRangeCompressionRf)
eac3Settings_dynamicRangeCompressionRf = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Eac3Settings' {Maybe Eac3DynamicRangeCompressionRf
dynamicRangeCompressionRf :: Maybe Eac3DynamicRangeCompressionRf
$sel:dynamicRangeCompressionRf:Eac3Settings' :: Eac3Settings -> Maybe Eac3DynamicRangeCompressionRf
dynamicRangeCompressionRf} -> Maybe Eac3DynamicRangeCompressionRf
dynamicRangeCompressionRf) (\s :: Eac3Settings
s@Eac3Settings' {} Maybe Eac3DynamicRangeCompressionRf
a -> Eac3Settings
s {$sel:dynamicRangeCompressionRf:Eac3Settings' :: Maybe Eac3DynamicRangeCompressionRf
dynamicRangeCompressionRf = Maybe Eac3DynamicRangeCompressionRf
a} :: Eac3Settings)

-- | When encoding 3\/2 audio, controls whether the LFE channel is enabled
eac3Settings_lfeControl :: Lens.Lens' Eac3Settings (Prelude.Maybe Eac3LfeControl)
eac3Settings_lfeControl :: Lens' Eac3Settings (Maybe Eac3LfeControl)
eac3Settings_lfeControl = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Eac3Settings' {Maybe Eac3LfeControl
lfeControl :: Maybe Eac3LfeControl
$sel:lfeControl:Eac3Settings' :: Eac3Settings -> Maybe Eac3LfeControl
lfeControl} -> Maybe Eac3LfeControl
lfeControl) (\s :: Eac3Settings
s@Eac3Settings' {} Maybe Eac3LfeControl
a -> Eac3Settings
s {$sel:lfeControl:Eac3Settings' :: Maybe Eac3LfeControl
lfeControl = Maybe Eac3LfeControl
a} :: Eac3Settings)

-- | Applies a 120Hz lowpass filter to the LFE channel prior to encoding.
-- Only valid with 3_2_LFE coding mode.
eac3Settings_lfeFilter :: Lens.Lens' Eac3Settings (Prelude.Maybe Eac3LfeFilter)
eac3Settings_lfeFilter :: Lens' Eac3Settings (Maybe Eac3LfeFilter)
eac3Settings_lfeFilter = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Eac3Settings' {Maybe Eac3LfeFilter
lfeFilter :: Maybe Eac3LfeFilter
$sel:lfeFilter:Eac3Settings' :: Eac3Settings -> Maybe Eac3LfeFilter
lfeFilter} -> Maybe Eac3LfeFilter
lfeFilter) (\s :: Eac3Settings
s@Eac3Settings' {} Maybe Eac3LfeFilter
a -> Eac3Settings
s {$sel:lfeFilter:Eac3Settings' :: Maybe Eac3LfeFilter
lfeFilter = Maybe Eac3LfeFilter
a} :: Eac3Settings)

-- | Specify a value for the following Dolby Digital Plus setting: Left
-- only\/Right only center mix (Lo\/Ro center). MediaConvert uses this
-- value for downmixing. How the service uses this value depends on the
-- value that you choose for Stereo downmix (Eac3StereoDownmix). Valid
-- values: 3.0, 1.5, 0.0, -1.5, -3.0, -4.5, -6.0, and -60. The value -60
-- mutes the channel. This setting applies only if you keep the default
-- value of 3\/2 - L, R, C, Ls, Rs (CODING_MODE_3_2) for the setting Coding
-- mode (Eac3CodingMode). If you choose a different value for Coding mode,
-- the service ignores Left only\/Right only center (loRoCenterMixLevel).
eac3Settings_loRoCenterMixLevel :: Lens.Lens' Eac3Settings (Prelude.Maybe Prelude.Double)
eac3Settings_loRoCenterMixLevel :: Lens' Eac3Settings (Maybe Double)
eac3Settings_loRoCenterMixLevel = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Eac3Settings' {Maybe Double
loRoCenterMixLevel :: Maybe Double
$sel:loRoCenterMixLevel:Eac3Settings' :: Eac3Settings -> Maybe Double
loRoCenterMixLevel} -> Maybe Double
loRoCenterMixLevel) (\s :: Eac3Settings
s@Eac3Settings' {} Maybe Double
a -> Eac3Settings
s {$sel:loRoCenterMixLevel:Eac3Settings' :: Maybe Double
loRoCenterMixLevel = Maybe Double
a} :: Eac3Settings)

-- | Specify a value for the following Dolby Digital Plus setting: Left
-- only\/Right only (Lo\/Ro surround). MediaConvert uses this value for
-- downmixing. How the service uses this value depends on the value that
-- you choose for Stereo downmix (Eac3StereoDownmix). Valid values: -1.5,
-- -3.0, -4.5, -6.0, and -60. The value -60 mutes the channel. This setting
-- applies only if you keep the default value of 3\/2 - L, R, C, Ls, Rs
-- (CODING_MODE_3_2) for the setting Coding mode (Eac3CodingMode). If you
-- choose a different value for Coding mode, the service ignores Left
-- only\/Right only surround (loRoSurroundMixLevel).
eac3Settings_loRoSurroundMixLevel :: Lens.Lens' Eac3Settings (Prelude.Maybe Prelude.Double)
eac3Settings_loRoSurroundMixLevel :: Lens' Eac3Settings (Maybe Double)
eac3Settings_loRoSurroundMixLevel = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Eac3Settings' {Maybe Double
loRoSurroundMixLevel :: Maybe Double
$sel:loRoSurroundMixLevel:Eac3Settings' :: Eac3Settings -> Maybe Double
loRoSurroundMixLevel} -> Maybe Double
loRoSurroundMixLevel) (\s :: Eac3Settings
s@Eac3Settings' {} Maybe Double
a -> Eac3Settings
s {$sel:loRoSurroundMixLevel:Eac3Settings' :: Maybe Double
loRoSurroundMixLevel = Maybe Double
a} :: Eac3Settings)

-- | Specify a value for the following Dolby Digital Plus setting: Left
-- total\/Right total center mix (Lt\/Rt center). MediaConvert uses this
-- value for downmixing. How the service uses this value depends on the
-- value that you choose for Stereo downmix (Eac3StereoDownmix). Valid
-- values: 3.0, 1.5, 0.0, -1.5, -3.0, -4.5, -6.0, and -60. The value -60
-- mutes the channel. This setting applies only if you keep the default
-- value of 3\/2 - L, R, C, Ls, Rs (CODING_MODE_3_2) for the setting Coding
-- mode (Eac3CodingMode). If you choose a different value for Coding mode,
-- the service ignores Left total\/Right total center (ltRtCenterMixLevel).
eac3Settings_ltRtCenterMixLevel :: Lens.Lens' Eac3Settings (Prelude.Maybe Prelude.Double)
eac3Settings_ltRtCenterMixLevel :: Lens' Eac3Settings (Maybe Double)
eac3Settings_ltRtCenterMixLevel = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Eac3Settings' {Maybe Double
ltRtCenterMixLevel :: Maybe Double
$sel:ltRtCenterMixLevel:Eac3Settings' :: Eac3Settings -> Maybe Double
ltRtCenterMixLevel} -> Maybe Double
ltRtCenterMixLevel) (\s :: Eac3Settings
s@Eac3Settings' {} Maybe Double
a -> Eac3Settings
s {$sel:ltRtCenterMixLevel:Eac3Settings' :: Maybe Double
ltRtCenterMixLevel = Maybe Double
a} :: Eac3Settings)

-- | Specify a value for the following Dolby Digital Plus setting: Left
-- total\/Right total surround mix (Lt\/Rt surround). MediaConvert uses
-- this value for downmixing. How the service uses this value depends on
-- the value that you choose for Stereo downmix (Eac3StereoDownmix). Valid
-- values: -1.5, -3.0, -4.5, -6.0, and -60. The value -60 mutes the
-- channel. This setting applies only if you keep the default value of 3\/2
-- - L, R, C, Ls, Rs (CODING_MODE_3_2) for the setting Coding mode
-- (Eac3CodingMode). If you choose a different value for Coding mode, the
-- service ignores Left total\/Right total surround (ltRtSurroundMixLevel).
eac3Settings_ltRtSurroundMixLevel :: Lens.Lens' Eac3Settings (Prelude.Maybe Prelude.Double)
eac3Settings_ltRtSurroundMixLevel :: Lens' Eac3Settings (Maybe Double)
eac3Settings_ltRtSurroundMixLevel = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Eac3Settings' {Maybe Double
ltRtSurroundMixLevel :: Maybe Double
$sel:ltRtSurroundMixLevel:Eac3Settings' :: Eac3Settings -> Maybe Double
ltRtSurroundMixLevel} -> Maybe Double
ltRtSurroundMixLevel) (\s :: Eac3Settings
s@Eac3Settings' {} Maybe Double
a -> Eac3Settings
s {$sel:ltRtSurroundMixLevel:Eac3Settings' :: Maybe Double
ltRtSurroundMixLevel = Maybe Double
a} :: Eac3Settings)

-- | When set to FOLLOW_INPUT, encoder metadata will be sourced from the DD,
-- DD+, or DolbyE decoder that supplied this audio data. If audio was not
-- supplied from one of these streams, then the static metadata settings
-- will be used.
eac3Settings_metadataControl :: Lens.Lens' Eac3Settings (Prelude.Maybe Eac3MetadataControl)
eac3Settings_metadataControl :: Lens' Eac3Settings (Maybe Eac3MetadataControl)
eac3Settings_metadataControl = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Eac3Settings' {Maybe Eac3MetadataControl
metadataControl :: Maybe Eac3MetadataControl
$sel:metadataControl:Eac3Settings' :: Eac3Settings -> Maybe Eac3MetadataControl
metadataControl} -> Maybe Eac3MetadataControl
metadataControl) (\s :: Eac3Settings
s@Eac3Settings' {} Maybe Eac3MetadataControl
a -> Eac3Settings
s {$sel:metadataControl:Eac3Settings' :: Maybe Eac3MetadataControl
metadataControl = Maybe Eac3MetadataControl
a} :: Eac3Settings)

-- | When set to WHEN_POSSIBLE, input DD+ audio will be passed through if it
-- is present on the input. this detection is dynamic over the life of the
-- transcode. Inputs that alternate between DD+ and non-DD+ content will
-- have a consistent DD+ output as the system alternates between
-- passthrough and encoding.
eac3Settings_passthroughControl :: Lens.Lens' Eac3Settings (Prelude.Maybe Eac3PassthroughControl)
eac3Settings_passthroughControl :: Lens' Eac3Settings (Maybe Eac3PassthroughControl)
eac3Settings_passthroughControl = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Eac3Settings' {Maybe Eac3PassthroughControl
passthroughControl :: Maybe Eac3PassthroughControl
$sel:passthroughControl:Eac3Settings' :: Eac3Settings -> Maybe Eac3PassthroughControl
passthroughControl} -> Maybe Eac3PassthroughControl
passthroughControl) (\s :: Eac3Settings
s@Eac3Settings' {} Maybe Eac3PassthroughControl
a -> Eac3Settings
s {$sel:passthroughControl:Eac3Settings' :: Maybe Eac3PassthroughControl
passthroughControl = Maybe Eac3PassthroughControl
a} :: Eac3Settings)

-- | Controls the amount of phase-shift applied to the surround channels.
-- Only used for 3\/2 coding mode.
eac3Settings_phaseControl :: Lens.Lens' Eac3Settings (Prelude.Maybe Eac3PhaseControl)
eac3Settings_phaseControl :: Lens' Eac3Settings (Maybe Eac3PhaseControl)
eac3Settings_phaseControl = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Eac3Settings' {Maybe Eac3PhaseControl
phaseControl :: Maybe Eac3PhaseControl
$sel:phaseControl:Eac3Settings' :: Eac3Settings -> Maybe Eac3PhaseControl
phaseControl} -> Maybe Eac3PhaseControl
phaseControl) (\s :: Eac3Settings
s@Eac3Settings' {} Maybe Eac3PhaseControl
a -> Eac3Settings
s {$sel:phaseControl:Eac3Settings' :: Maybe Eac3PhaseControl
phaseControl = Maybe Eac3PhaseControl
a} :: Eac3Settings)

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

-- | Choose how the service does stereo downmixing. This setting only applies
-- if you keep the default value of 3\/2 - L, R, C, Ls, Rs
-- (CODING_MODE_3_2) for the setting Coding mode (Eac3CodingMode). If you
-- choose a different value for Coding mode, the service ignores Stereo
-- downmix (Eac3StereoDownmix).
eac3Settings_stereoDownmix :: Lens.Lens' Eac3Settings (Prelude.Maybe Eac3StereoDownmix)
eac3Settings_stereoDownmix :: Lens' Eac3Settings (Maybe Eac3StereoDownmix)
eac3Settings_stereoDownmix = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Eac3Settings' {Maybe Eac3StereoDownmix
stereoDownmix :: Maybe Eac3StereoDownmix
$sel:stereoDownmix:Eac3Settings' :: Eac3Settings -> Maybe Eac3StereoDownmix
stereoDownmix} -> Maybe Eac3StereoDownmix
stereoDownmix) (\s :: Eac3Settings
s@Eac3Settings' {} Maybe Eac3StereoDownmix
a -> Eac3Settings
s {$sel:stereoDownmix:Eac3Settings' :: Maybe Eac3StereoDownmix
stereoDownmix = Maybe Eac3StereoDownmix
a} :: Eac3Settings)

-- | When encoding 3\/2 audio, sets whether an extra center back surround
-- channel is matrix encoded into the left and right surround channels.
eac3Settings_surroundExMode :: Lens.Lens' Eac3Settings (Prelude.Maybe Eac3SurroundExMode)
eac3Settings_surroundExMode :: Lens' Eac3Settings (Maybe Eac3SurroundExMode)
eac3Settings_surroundExMode = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Eac3Settings' {Maybe Eac3SurroundExMode
surroundExMode :: Maybe Eac3SurroundExMode
$sel:surroundExMode:Eac3Settings' :: Eac3Settings -> Maybe Eac3SurroundExMode
surroundExMode} -> Maybe Eac3SurroundExMode
surroundExMode) (\s :: Eac3Settings
s@Eac3Settings' {} Maybe Eac3SurroundExMode
a -> Eac3Settings
s {$sel:surroundExMode:Eac3Settings' :: Maybe Eac3SurroundExMode
surroundExMode = Maybe Eac3SurroundExMode
a} :: Eac3Settings)

-- | When encoding 2\/0 audio, sets whether Dolby Surround is matrix encoded
-- into the two channels.
eac3Settings_surroundMode :: Lens.Lens' Eac3Settings (Prelude.Maybe Eac3SurroundMode)
eac3Settings_surroundMode :: Lens' Eac3Settings (Maybe Eac3SurroundMode)
eac3Settings_surroundMode = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Eac3Settings' {Maybe Eac3SurroundMode
surroundMode :: Maybe Eac3SurroundMode
$sel:surroundMode:Eac3Settings' :: Eac3Settings -> Maybe Eac3SurroundMode
surroundMode} -> Maybe Eac3SurroundMode
surroundMode) (\s :: Eac3Settings
s@Eac3Settings' {} Maybe Eac3SurroundMode
a -> Eac3Settings
s {$sel:surroundMode:Eac3Settings' :: Maybe Eac3SurroundMode
surroundMode = Maybe Eac3SurroundMode
a} :: Eac3Settings)

instance Data.FromJSON Eac3Settings where
  parseJSON :: Value -> Parser Eac3Settings
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"Eac3Settings"
      ( \Object
x ->
          Maybe Eac3AttenuationControl
-> Maybe Natural
-> Maybe Eac3BitstreamMode
-> Maybe Eac3CodingMode
-> Maybe Eac3DcFilter
-> Maybe Natural
-> Maybe Eac3DynamicRangeCompressionLine
-> Maybe Eac3DynamicRangeCompressionRf
-> Maybe Eac3LfeControl
-> Maybe Eac3LfeFilter
-> Maybe Double
-> Maybe Double
-> Maybe Double
-> Maybe Double
-> Maybe Eac3MetadataControl
-> Maybe Eac3PassthroughControl
-> Maybe Eac3PhaseControl
-> Maybe Natural
-> Maybe Eac3StereoDownmix
-> Maybe Eac3SurroundExMode
-> Maybe Eac3SurroundMode
-> Eac3Settings
Eac3Settings'
            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
"attenuationControl")
            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
"bitrate")
            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
"bitstreamMode")
            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
"codingMode")
            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
"dcFilter")
            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
"dialnorm")
            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
"dynamicRangeCompressionLine")
            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
"dynamicRangeCompressionRf")
            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
"lfeControl")
            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
"lfeFilter")
            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
"loRoCenterMixLevel")
            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
"loRoSurroundMixLevel")
            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
"ltRtCenterMixLevel")
            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
"ltRtSurroundMixLevel")
            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
"metadataControl")
            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
"passthroughControl")
            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
"phaseControl")
            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
"sampleRate")
            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
"stereoDownmix")
            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
"surroundExMode")
            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
"surroundMode")
      )

instance Prelude.Hashable Eac3Settings where
  hashWithSalt :: Int -> Eac3Settings -> Int
hashWithSalt Int
_salt Eac3Settings' {Maybe Double
Maybe Natural
Maybe Eac3AttenuationControl
Maybe Eac3BitstreamMode
Maybe Eac3CodingMode
Maybe Eac3DcFilter
Maybe Eac3DynamicRangeCompressionLine
Maybe Eac3DynamicRangeCompressionRf
Maybe Eac3LfeControl
Maybe Eac3LfeFilter
Maybe Eac3MetadataControl
Maybe Eac3PassthroughControl
Maybe Eac3PhaseControl
Maybe Eac3StereoDownmix
Maybe Eac3SurroundExMode
Maybe Eac3SurroundMode
surroundMode :: Maybe Eac3SurroundMode
surroundExMode :: Maybe Eac3SurroundExMode
stereoDownmix :: Maybe Eac3StereoDownmix
sampleRate :: Maybe Natural
phaseControl :: Maybe Eac3PhaseControl
passthroughControl :: Maybe Eac3PassthroughControl
metadataControl :: Maybe Eac3MetadataControl
ltRtSurroundMixLevel :: Maybe Double
ltRtCenterMixLevel :: Maybe Double
loRoSurroundMixLevel :: Maybe Double
loRoCenterMixLevel :: Maybe Double
lfeFilter :: Maybe Eac3LfeFilter
lfeControl :: Maybe Eac3LfeControl
dynamicRangeCompressionRf :: Maybe Eac3DynamicRangeCompressionRf
dynamicRangeCompressionLine :: Maybe Eac3DynamicRangeCompressionLine
dialnorm :: Maybe Natural
dcFilter :: Maybe Eac3DcFilter
codingMode :: Maybe Eac3CodingMode
bitstreamMode :: Maybe Eac3BitstreamMode
bitrate :: Maybe Natural
attenuationControl :: Maybe Eac3AttenuationControl
$sel:surroundMode:Eac3Settings' :: Eac3Settings -> Maybe Eac3SurroundMode
$sel:surroundExMode:Eac3Settings' :: Eac3Settings -> Maybe Eac3SurroundExMode
$sel:stereoDownmix:Eac3Settings' :: Eac3Settings -> Maybe Eac3StereoDownmix
$sel:sampleRate:Eac3Settings' :: Eac3Settings -> Maybe Natural
$sel:phaseControl:Eac3Settings' :: Eac3Settings -> Maybe Eac3PhaseControl
$sel:passthroughControl:Eac3Settings' :: Eac3Settings -> Maybe Eac3PassthroughControl
$sel:metadataControl:Eac3Settings' :: Eac3Settings -> Maybe Eac3MetadataControl
$sel:ltRtSurroundMixLevel:Eac3Settings' :: Eac3Settings -> Maybe Double
$sel:ltRtCenterMixLevel:Eac3Settings' :: Eac3Settings -> Maybe Double
$sel:loRoSurroundMixLevel:Eac3Settings' :: Eac3Settings -> Maybe Double
$sel:loRoCenterMixLevel:Eac3Settings' :: Eac3Settings -> Maybe Double
$sel:lfeFilter:Eac3Settings' :: Eac3Settings -> Maybe Eac3LfeFilter
$sel:lfeControl:Eac3Settings' :: Eac3Settings -> Maybe Eac3LfeControl
$sel:dynamicRangeCompressionRf:Eac3Settings' :: Eac3Settings -> Maybe Eac3DynamicRangeCompressionRf
$sel:dynamicRangeCompressionLine:Eac3Settings' :: Eac3Settings -> Maybe Eac3DynamicRangeCompressionLine
$sel:dialnorm:Eac3Settings' :: Eac3Settings -> Maybe Natural
$sel:dcFilter:Eac3Settings' :: Eac3Settings -> Maybe Eac3DcFilter
$sel:codingMode:Eac3Settings' :: Eac3Settings -> Maybe Eac3CodingMode
$sel:bitstreamMode:Eac3Settings' :: Eac3Settings -> Maybe Eac3BitstreamMode
$sel:bitrate:Eac3Settings' :: Eac3Settings -> Maybe Natural
$sel:attenuationControl:Eac3Settings' :: Eac3Settings -> Maybe Eac3AttenuationControl
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Eac3AttenuationControl
attenuationControl
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
bitrate
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Eac3BitstreamMode
bitstreamMode
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Eac3CodingMode
codingMode
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Eac3DcFilter
dcFilter
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
dialnorm
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Eac3DynamicRangeCompressionLine
dynamicRangeCompressionLine
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Eac3DynamicRangeCompressionRf
dynamicRangeCompressionRf
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Eac3LfeControl
lfeControl
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Eac3LfeFilter
lfeFilter
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Double
loRoCenterMixLevel
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Double
loRoSurroundMixLevel
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Double
ltRtCenterMixLevel
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Double
ltRtSurroundMixLevel
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Eac3MetadataControl
metadataControl
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Eac3PassthroughControl
passthroughControl
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Eac3PhaseControl
phaseControl
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
sampleRate
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Eac3StereoDownmix
stereoDownmix
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Eac3SurroundExMode
surroundExMode
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Eac3SurroundMode
surroundMode

instance Prelude.NFData Eac3Settings where
  rnf :: Eac3Settings -> ()
rnf Eac3Settings' {Maybe Double
Maybe Natural
Maybe Eac3AttenuationControl
Maybe Eac3BitstreamMode
Maybe Eac3CodingMode
Maybe Eac3DcFilter
Maybe Eac3DynamicRangeCompressionLine
Maybe Eac3DynamicRangeCompressionRf
Maybe Eac3LfeControl
Maybe Eac3LfeFilter
Maybe Eac3MetadataControl
Maybe Eac3PassthroughControl
Maybe Eac3PhaseControl
Maybe Eac3StereoDownmix
Maybe Eac3SurroundExMode
Maybe Eac3SurroundMode
surroundMode :: Maybe Eac3SurroundMode
surroundExMode :: Maybe Eac3SurroundExMode
stereoDownmix :: Maybe Eac3StereoDownmix
sampleRate :: Maybe Natural
phaseControl :: Maybe Eac3PhaseControl
passthroughControl :: Maybe Eac3PassthroughControl
metadataControl :: Maybe Eac3MetadataControl
ltRtSurroundMixLevel :: Maybe Double
ltRtCenterMixLevel :: Maybe Double
loRoSurroundMixLevel :: Maybe Double
loRoCenterMixLevel :: Maybe Double
lfeFilter :: Maybe Eac3LfeFilter
lfeControl :: Maybe Eac3LfeControl
dynamicRangeCompressionRf :: Maybe Eac3DynamicRangeCompressionRf
dynamicRangeCompressionLine :: Maybe Eac3DynamicRangeCompressionLine
dialnorm :: Maybe Natural
dcFilter :: Maybe Eac3DcFilter
codingMode :: Maybe Eac3CodingMode
bitstreamMode :: Maybe Eac3BitstreamMode
bitrate :: Maybe Natural
attenuationControl :: Maybe Eac3AttenuationControl
$sel:surroundMode:Eac3Settings' :: Eac3Settings -> Maybe Eac3SurroundMode
$sel:surroundExMode:Eac3Settings' :: Eac3Settings -> Maybe Eac3SurroundExMode
$sel:stereoDownmix:Eac3Settings' :: Eac3Settings -> Maybe Eac3StereoDownmix
$sel:sampleRate:Eac3Settings' :: Eac3Settings -> Maybe Natural
$sel:phaseControl:Eac3Settings' :: Eac3Settings -> Maybe Eac3PhaseControl
$sel:passthroughControl:Eac3Settings' :: Eac3Settings -> Maybe Eac3PassthroughControl
$sel:metadataControl:Eac3Settings' :: Eac3Settings -> Maybe Eac3MetadataControl
$sel:ltRtSurroundMixLevel:Eac3Settings' :: Eac3Settings -> Maybe Double
$sel:ltRtCenterMixLevel:Eac3Settings' :: Eac3Settings -> Maybe Double
$sel:loRoSurroundMixLevel:Eac3Settings' :: Eac3Settings -> Maybe Double
$sel:loRoCenterMixLevel:Eac3Settings' :: Eac3Settings -> Maybe Double
$sel:lfeFilter:Eac3Settings' :: Eac3Settings -> Maybe Eac3LfeFilter
$sel:lfeControl:Eac3Settings' :: Eac3Settings -> Maybe Eac3LfeControl
$sel:dynamicRangeCompressionRf:Eac3Settings' :: Eac3Settings -> Maybe Eac3DynamicRangeCompressionRf
$sel:dynamicRangeCompressionLine:Eac3Settings' :: Eac3Settings -> Maybe Eac3DynamicRangeCompressionLine
$sel:dialnorm:Eac3Settings' :: Eac3Settings -> Maybe Natural
$sel:dcFilter:Eac3Settings' :: Eac3Settings -> Maybe Eac3DcFilter
$sel:codingMode:Eac3Settings' :: Eac3Settings -> Maybe Eac3CodingMode
$sel:bitstreamMode:Eac3Settings' :: Eac3Settings -> Maybe Eac3BitstreamMode
$sel:bitrate:Eac3Settings' :: Eac3Settings -> Maybe Natural
$sel:attenuationControl:Eac3Settings' :: Eac3Settings -> Maybe Eac3AttenuationControl
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Eac3AttenuationControl
attenuationControl
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
bitrate
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Eac3BitstreamMode
bitstreamMode
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Eac3CodingMode
codingMode
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Eac3DcFilter
dcFilter
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
dialnorm
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Eac3DynamicRangeCompressionLine
dynamicRangeCompressionLine
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Eac3DynamicRangeCompressionRf
dynamicRangeCompressionRf
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Eac3LfeControl
lfeControl
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Eac3LfeFilter
lfeFilter
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Double
loRoCenterMixLevel
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Double
loRoSurroundMixLevel
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Double
ltRtCenterMixLevel
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Double
ltRtSurroundMixLevel
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Eac3MetadataControl
metadataControl
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Eac3PassthroughControl
passthroughControl
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Eac3PhaseControl
phaseControl
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
sampleRate
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Eac3StereoDownmix
stereoDownmix
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Eac3SurroundExMode
surroundExMode
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Eac3SurroundMode
surroundMode

instance Data.ToJSON Eac3Settings where
  toJSON :: Eac3Settings -> Value
toJSON Eac3Settings' {Maybe Double
Maybe Natural
Maybe Eac3AttenuationControl
Maybe Eac3BitstreamMode
Maybe Eac3CodingMode
Maybe Eac3DcFilter
Maybe Eac3DynamicRangeCompressionLine
Maybe Eac3DynamicRangeCompressionRf
Maybe Eac3LfeControl
Maybe Eac3LfeFilter
Maybe Eac3MetadataControl
Maybe Eac3PassthroughControl
Maybe Eac3PhaseControl
Maybe Eac3StereoDownmix
Maybe Eac3SurroundExMode
Maybe Eac3SurroundMode
surroundMode :: Maybe Eac3SurroundMode
surroundExMode :: Maybe Eac3SurroundExMode
stereoDownmix :: Maybe Eac3StereoDownmix
sampleRate :: Maybe Natural
phaseControl :: Maybe Eac3PhaseControl
passthroughControl :: Maybe Eac3PassthroughControl
metadataControl :: Maybe Eac3MetadataControl
ltRtSurroundMixLevel :: Maybe Double
ltRtCenterMixLevel :: Maybe Double
loRoSurroundMixLevel :: Maybe Double
loRoCenterMixLevel :: Maybe Double
lfeFilter :: Maybe Eac3LfeFilter
lfeControl :: Maybe Eac3LfeControl
dynamicRangeCompressionRf :: Maybe Eac3DynamicRangeCompressionRf
dynamicRangeCompressionLine :: Maybe Eac3DynamicRangeCompressionLine
dialnorm :: Maybe Natural
dcFilter :: Maybe Eac3DcFilter
codingMode :: Maybe Eac3CodingMode
bitstreamMode :: Maybe Eac3BitstreamMode
bitrate :: Maybe Natural
attenuationControl :: Maybe Eac3AttenuationControl
$sel:surroundMode:Eac3Settings' :: Eac3Settings -> Maybe Eac3SurroundMode
$sel:surroundExMode:Eac3Settings' :: Eac3Settings -> Maybe Eac3SurroundExMode
$sel:stereoDownmix:Eac3Settings' :: Eac3Settings -> Maybe Eac3StereoDownmix
$sel:sampleRate:Eac3Settings' :: Eac3Settings -> Maybe Natural
$sel:phaseControl:Eac3Settings' :: Eac3Settings -> Maybe Eac3PhaseControl
$sel:passthroughControl:Eac3Settings' :: Eac3Settings -> Maybe Eac3PassthroughControl
$sel:metadataControl:Eac3Settings' :: Eac3Settings -> Maybe Eac3MetadataControl
$sel:ltRtSurroundMixLevel:Eac3Settings' :: Eac3Settings -> Maybe Double
$sel:ltRtCenterMixLevel:Eac3Settings' :: Eac3Settings -> Maybe Double
$sel:loRoSurroundMixLevel:Eac3Settings' :: Eac3Settings -> Maybe Double
$sel:loRoCenterMixLevel:Eac3Settings' :: Eac3Settings -> Maybe Double
$sel:lfeFilter:Eac3Settings' :: Eac3Settings -> Maybe Eac3LfeFilter
$sel:lfeControl:Eac3Settings' :: Eac3Settings -> Maybe Eac3LfeControl
$sel:dynamicRangeCompressionRf:Eac3Settings' :: Eac3Settings -> Maybe Eac3DynamicRangeCompressionRf
$sel:dynamicRangeCompressionLine:Eac3Settings' :: Eac3Settings -> Maybe Eac3DynamicRangeCompressionLine
$sel:dialnorm:Eac3Settings' :: Eac3Settings -> Maybe Natural
$sel:dcFilter:Eac3Settings' :: Eac3Settings -> Maybe Eac3DcFilter
$sel:codingMode:Eac3Settings' :: Eac3Settings -> Maybe Eac3CodingMode
$sel:bitstreamMode:Eac3Settings' :: Eac3Settings -> Maybe Eac3BitstreamMode
$sel:bitrate:Eac3Settings' :: Eac3Settings -> Maybe Natural
$sel:attenuationControl:Eac3Settings' :: Eac3Settings -> Maybe Eac3AttenuationControl
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"attenuationControl" 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 Eac3AttenuationControl
attenuationControl,
            (Key
"bitrate" 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 Natural
bitrate,
            (Key
"bitstreamMode" 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 Eac3BitstreamMode
bitstreamMode,
            (Key
"codingMode" 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 Eac3CodingMode
codingMode,
            (Key
"dcFilter" 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 Eac3DcFilter
dcFilter,
            (Key
"dialnorm" 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 Natural
dialnorm,
            (Key
"dynamicRangeCompressionLine" 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 Eac3DynamicRangeCompressionLine
dynamicRangeCompressionLine,
            (Key
"dynamicRangeCompressionRf" 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 Eac3DynamicRangeCompressionRf
dynamicRangeCompressionRf,
            (Key
"lfeControl" 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 Eac3LfeControl
lfeControl,
            (Key
"lfeFilter" 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 Eac3LfeFilter
lfeFilter,
            (Key
"loRoCenterMixLevel" 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 Double
loRoCenterMixLevel,
            (Key
"loRoSurroundMixLevel" 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 Double
loRoSurroundMixLevel,
            (Key
"ltRtCenterMixLevel" 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 Double
ltRtCenterMixLevel,
            (Key
"ltRtSurroundMixLevel" 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 Double
ltRtSurroundMixLevel,
            (Key
"metadataControl" 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 Eac3MetadataControl
metadataControl,
            (Key
"passthroughControl" 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 Eac3PassthroughControl
passthroughControl,
            (Key
"phaseControl" 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 Eac3PhaseControl
phaseControl,
            (Key
"sampleRate" 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 Natural
sampleRate,
            (Key
"stereoDownmix" 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 Eac3StereoDownmix
stereoDownmix,
            (Key
"surroundExMode" 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 Eac3SurroundExMode
surroundExMode,
            (Key
"surroundMode" 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 Eac3SurroundMode
surroundMode
          ]
      )